I was looking at performing a Stockwell transform on a matrix (or an image as it has two directions - the matrix I am interested in has a spatial dimension and a time dimension, but this should make no difference) instead of an array. Whilst there are a couple of codes that perform a Stockwell transform on an array (see infomation about Stockwell Transform for links to 2 of them and http://www.mathworks.com/matlabcentral/fileexchange/45848-stockwell-transform--s-transform- for one without for loops), I could not find one for a matrix/image.
According to Mansinha et al. (1997), for a matrix $h(x,y)$ the S-transform can be defined as
$ S(x,y,k_x,k_y) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} H(\alpha + k_x, \beta + k_y) e^{-\frac{2\pi ^2 \alpha^2}{k_x^2}} e^{-\frac{2\pi ^2 \beta^2}{k_y^2}} e^{i2\pi (\alpha x + \beta y)} \mathrm{d}\alpha \mathrm{d}\beta$
for $k_x \neq 0 $ and $k_y \neq 0 $; where $H(k_x,k_y)$ is the 2D Fourier transform of the matrix $h(x,y)$. $x$ and $y$ are spatial variables and $k_x$ and $k_y$ are the corresponding wavenumbers.
The discrete form of the above according to the same paper is given by
$ S(pT_x, qT_y, \frac{n}{NT_x}, \frac{m}{MT_y}) = \sum\limits_{n'=0}^{N-1}\sum\limits_{m'=0}^{M-1} H(\frac{n'+n}{NT_x},\frac{m'+m}{MT_y}) e^{-\frac{2\pi^2 n'^2}{n^2}} e^{-\frac{2\pi^2 m'^2}{m^2}} e^{\frac{i2\pi n'p}{N}} e^{\frac{i2\pi m'q}{M}}$
for $n \neq 0$, $m \neq 0$; where $H$ is the 2D Fourier transform of the matrix $h(pT_x,qT_y)$ and $p=0...,N-1$, $q=0...,M-1$ and $T_x,T_y$ are the sampling intervals in the respective directions.
Therefore (if I understand it correctly) the above process is a inverse Fourier transform to a multiplication in the frequency domain.
Unfortunately, I was unable to code up because the 2D Fourier transform of $h(pT_x,qT_y)$ has the same dimensions as $h$ and thusthere is a mismatch with $H(\frac{n'+n}{NT_x},\frac{m'+m}{MT_y})$.
Any help in coding the above in MATLAB is greatly appreciated. This (http://www.mathworks.com/matlabcentral/fileexchange/45848-stockwell-transform--s-transform-) is a very efficient 1D transform which has helped me understand how it works. The link for the paper is http://www.sciencedirect.com/science/article/pii/S0031920197000472 (if you have access to it)