[Scilab-users] Hilbert transform query
Hello A quick query. How would one define the Hilbert transform of a grid for X and Y directions; looking for two solutions Hx and Hy (for the real values). Thanks Lester ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users
Re: [Scilab-users] Hilbert transform query
Le 05/02/2016 10:56, Lester Anderson a écrit : Hello A quick query. How would one define the Hilbert transform of a grid for X and Y directions; looking for two solutions Hx and Hy (for the real values). Can you explain more precisely what you expect? Do you want to apply Hilbert transform to each column and to each rows or to perform a 2D Hilbert transform? Serge Thanks Lester ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users
Re: [Scilab-users] Hilbert transform query
Hi Serge, I am working with grid data, so looking for the 2D Hilbert, the results I think should appear similar to doing a directional derivative, where X highlights features with N-S trends and E-W for Y. Lester On 5 February 2016 at 12:24, Serge Steer wrote: > Le 05/02/2016 10:56, Lester Anderson a écrit : >> >> Hello >> >> A quick query. How would one define the Hilbert transform of a grid >> for X and Y directions; looking for two solutions Hx and Hy (for the >> real values). > > Can you explain more precisely what you expect? > Do you want to apply Hilbert transform to each column and to each rows or > to perform a 2D Hilbert transform? > Serge >> >> >> Thanks >> Lester >> ___ >> users mailing list >> users@lists.scilab.org >> http://lists.scilab.org/mailman/listinfo/users >> > > ___ > users mailing list > users@lists.scilab.org > http://lists.scilab.org/mailman/listinfo/users ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users
Re: [Scilab-users] Hilbert transform query
Any time you go from 1D to 2D you suddenly end up with more than one way to do things, so I'm pretty sure that "how would one..." should really be worded "how would YOU...", or perhaps "how would someone in this field...". It sounds like you want to keep things rectilinear, so it may be best to just apply the transform column-by-column and row-by-row. That SHOULD work, and if you do it as matrix operations it should be pretty fast in Scilab. On Fri, 2016-02-05 at 12:52 +, Lester Anderson wrote: > Hi Serge, > > I am working with grid data, so looking for the 2D Hilbert, the > results I think should appear similar to doing a directional > derivative, where X highlights features with N-S trends and E-W for Y. > > Lester > > > > On 5 February 2016 at 12:24, Serge Steer wrote: > > Le 05/02/2016 10:56, Lester Anderson a écrit : > >> > >> Hello > >> > >> A quick query. How would one define the Hilbert transform of a grid > >> for X and Y directions; looking for two solutions Hx and Hy (for the > >> real values). > > > > Can you explain more precisely what you expect? > > Do you want to apply Hilbert transform to each column and to each rows or > > to perform a 2D Hilbert transform? > > Serge > >> > >> > >> Thanks > >> Lester > >> ___ > >> users mailing list > >> users@lists.scilab.org > >> http://lists.scilab.org/mailman/listinfo/users > >> > > > > ___ > > users mailing list > > users@lists.scilab.org > > http://lists.scilab.org/mailman/listinfo/users > ___ > users mailing list > users@lists.scilab.org > http://lists.scilab.org/mailman/listinfo/users -- Tim Wescott www.wescottdesign.com Control & Communications systems, circuit & software design. Phone: 503.631.7815 Cell: 503.349.8432 ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users
Re: [Scilab-users] Hilbert transform query
So what would the syntax be for doing a column run Hilbert, and row run Hilbert? It does sound like the suggesting would do what I think it is meant to. X = hilbert(data) // does compute pretty fast! At the moment I have used the netCDF code to read in GMT (net CDF) data, which is a 601 x 601 matrix (x,y). So in order to do the column and row method is it necessary to transpose the matrix, e.g. x = x' ? Thanks for any pointers On 5 February 2016 at 19:02, Tim Wescott wrote: > Any time you go from 1D to 2D you suddenly end up with more than one way > to do things, so I'm pretty sure that "how would one..." should really > be worded "how would YOU...", or perhaps "how would someone in this > field...". > > It sounds like you want to keep things rectilinear, so it may be best to > just apply the transform column-by-column and row-by-row. That SHOULD > work, and if you do it as matrix operations it should be pretty fast in > Scilab. > > On Fri, 2016-02-05 at 12:52 +, Lester Anderson wrote: >> Hi Serge, >> >> I am working with grid data, so looking for the 2D Hilbert, the >> results I think should appear similar to doing a directional >> derivative, where X highlights features with N-S trends and E-W for Y. >> >> Lester >> >> >> >> On 5 February 2016 at 12:24, Serge Steer wrote: >> > Le 05/02/2016 10:56, Lester Anderson a écrit : >> >> >> >> Hello >> >> >> >> A quick query. How would one define the Hilbert transform of a grid >> >> for X and Y directions; looking for two solutions Hx and Hy (for the >> >> real values). >> > >> > Can you explain more precisely what you expect? >> > Do you want to apply Hilbert transform to each column and to each rows or >> > to perform a 2D Hilbert transform? >> > Serge >> >> >> >> >> >> Thanks >> >> Lester >> >> ___ >> >> users mailing list >> >> users@lists.scilab.org >> >> http://lists.scilab.org/mailman/listinfo/users >> >> >> > >> > ___ >> > users mailing list >> > users@lists.scilab.org >> > http://lists.scilab.org/mailman/listinfo/users >> ___ >> users mailing list >> users@lists.scilab.org >> http://lists.scilab.org/mailman/listinfo/users > > -- > > Tim Wescott > www.wescottdesign.com > Control & Communications systems, circuit & software design. > Phone: 503.631.7815 > Cell: 503.349.8432 > > > ___ > users mailing list > users@lists.scilab.org > http://lists.scilab.org/mailman/listinfo/users ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users
Re: [Scilab-users] Hilbert transform query
X = hilbert(data) computes the hilbert transform of data(:) not a N dimensionnal Hilbert transform. Please find attached a function which is intended to compute the N dimensionnal Hilbert transform obtained applying the 1D hilbert transform to all columns then to all rows, This function exploits the ability of fft to compute all fft along a given dimension with a single call. Serge Le 08/02/2016 17:51, Lester Anderson a écrit : So what would the syntax be for doing a column run Hilbert, and row run Hilbert? It does sound like the suggesting would do what I think it is meant to. X = hilbert(data) // does compute pretty fast! At the moment I have used the netCDF code to read in GMT (net CDF) data, which is a 601 x 601 matrix (x,y). So in order to do the column and row method is it necessary to transpose the matrix, e.g. x = x' ? Thanks for any pointers On 5 February 2016 at 19:02, Tim Wescott wrote: Any time you go from 1D to 2D you suddenly end up with more than one way to do things, so I'm pretty sure that "how would one..." should really be worded "how would YOU...", or perhaps "how would someone in this field...". It sounds like you want to keep things rectilinear, so it may be best to just apply the transform column-by-column and row-by-row. That SHOULD work, and if you do it as matrix operations it should be pretty fast in Scilab. On Fri, 2016-02-05 at 12:52 +, Lester Anderson wrote: Hi Serge, I am working with grid data, so looking for the 2D Hilbert, the results I think should appear similar to doing a directional derivative, where X highlights features with N-S trends and E-W for Y. Lester On 5 February 2016 at 12:24, Serge Steer wrote: Le 05/02/2016 10:56, Lester Anderson a écrit : Hello A quick query. How would one define the Hilbert transform of a grid for X and Y directions; looking for two solutions Hx and Hy (for the real values). Can you explain more precisely what you expect? Do you want to apply Hilbert transform to each column and to each rows or to perform a 2D Hilbert transform? Serge Thanks Lester ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users -- Tim Wescott www.wescottdesign.com Control & Communications systems, circuit & software design. Phone: 503.631.7815 Cell: 503.349.8432 ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users function x = hilbertND(x) // Marple, S.L., "Computing the discrete-time analytic signal via FFT," // IEEE Transactions on Signal Processing, Vol. 47, No.9 (September // 1999), pp.2600-2603 // http://ieeexplore.ieee.org/iel5/78/16975/0078.pdf?arnumber=78 if type(x)<>1 then error(msprintf(gettext("%s: Wrong type for input argument #%d: Array of floating point numbers expected.\n"),"hilbert",1)) end if x==[] then return;end if ~isreal(x,0) then error(msprintf(gettext("%s: Input argument #%d must be real.\n"),"hilbert",1)); end d=size(x); for k=1:size(d,'*') n=d(k) if k<>1 then x=permute(x,[k,1]); end dp=size(x) x=matrix(x,d(k),-1) x = fft(real(x),-1,1); h=zeros(x) no2 = int(n/2); if ((2*no2) == n) then // n is even h([1,no2+1],:) = 1; h(2:no2,:) = 2; else // n is odd h(1,:) = 1; h(2:(n+1)/2,:) = 2; end x = fft(x.*h,1,1); x=matrix(x,dp) if k<>1 then x=permute(x,[k,1]);end end endfunction ___ users mailing list users@lists.scilab.org http://lists.scilab.org/mailman/listinfo/users