Home > Matching_SYM_LSM > src > Functions > LSM_Functions > signal_from_F_2D.m

signal_from_F_2D

PURPOSE ^

% determine signal f(i) = sum_k F(k,l)*exp(2*pi*(i*k+j*l)/N)

SYNOPSIS ^

function S = signal_from_F_2D(u,F,xv,yv,der)

DESCRIPTION ^

% determine signal f(i) = sum_k F(k,l)*exp(2*pi*(i*k+j*l)/N)

 u       Mx2 matrix of frequencies
 F       Mx1 matrixr of complex amplitudes
 xv,yv   2 Nx1 vectors of x-values = y-values
 der     Dx2 matrixr of derivatives, containing:
         f:  [0,0] = 0, fx: [1,0] = 1, fy: [0,1] = 3, 
         fxx:[2,0] = 2, fxy:[1,1] = 4, fyy:[0,2] = 6

 S       NxD vector of signal/derivatives 

 wf 3/2020

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 %% determine signal f(i) = sum_k F(k,l)*exp(2*pi*(i*k+j*l)/N)
0002 %
0003 % u       Mx2 matrix of frequencies
0004 % F       Mx1 matrixr of complex amplitudes
0005 % xv,yv   2 Nx1 vectors of x-values = y-values
0006 % der     Dx2 matrixr of derivatives, containing:
0007 %         f:  [0,0] = 0, fx: [1,0] = 1, fy: [0,1] = 3,
0008 %         fxx:[2,0] = 2, fxy:[1,1] = 4, fyy:[0,2] = 6
0009 %
0010 % S       NxD vector of signal/derivatives
0011 %
0012 % wf 3/2020
0013 
0014 function S = signal_from_F_2D(u,F,xv,yv,der)
0015 
0016 
0017 if nargin == 4  % signal as default output
0018     der=[0,0];
0019 end
0020 
0021 K     = size(u,1);
0022 N     = length(xv);    % number of data points in 1D
0023 D     = size(der,1);        % number of derivatives
0024 ind_x = 1:N;                % index
0025 S     = [];
0026 for d=1:D
0027     k=der(d,1)+3*der(d,2);
0028     switch k
0029         case 0
0030             f(ind_x)   = ...
0031                 sum(...
0032                 repmat(F,1,N)      ...
0033                 .*exp( 1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')) +...
0034                 repmat(conj(F),1,N)...
0035                 .*exp(-1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')))/2;
0036         case 1
0037             f(ind_x) = ...
0038                 sum(...
0039                 repmat(F      .*( 1i*2*pi*u(:,1)),1,N)...
0040                 .*exp( 1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')) +...
0041                 repmat(conj(F).*(-1i*2*pi*u(:,1)),1,N)...
0042                 .*exp(-1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')))/2;
0043         case 3
0044             f(ind_x) = ...
0045                 sum(...
0046                 repmat(F      .*( 1i*2*pi*u(:,2)),1,N)... 
0047                 .*exp( 1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')) +...
0048                 repmat(conj(F).*(-1i*2*pi*u(:,2)),1,N)... 
0049                 .*exp(-1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')))/2;
0050         case 2
0051             f(ind_x) = ...
0052                 sum(...
0053                 repmat(F      .*( 1i*2*pi*u(:,1)).*( 1i*2*pi*u(:,1)),1,N)...
0054                 .*exp( 1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')) +...
0055                 repmat(conj(F).*(-1i*2*pi*u(:,1)).*(-1i*2*pi*u(:,1)),1,N)...
0056                 .*exp(-1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')))/2;
0057             
0058         case 4
0059             f(ind_x) = ...
0060                 sum(...
0061                 repmat(F      .*( 1i*2*pi*u(:,1)).*( 1i*2*pi*u(:,2)),1,N)...
0062                 .*exp( 1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')) +...
0063                 repmat(conj(F).*(-1i*2*pi*u(:,1)).*(-1i*2*pi*u(:,2)),1,N)...
0064                 .*exp(-1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')))/2;
0065         case 6
0066             f(ind_x) = ...
0067                 sum(...
0068                 repmat(F      .*( 1i*2*pi*u(:,2)).*( 1i*2*pi*u(:,2)),1,N)...
0069                 .*exp( 1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')) +...
0070                 repmat(conj(F).*(-1i*2*pi*u(:,2)).*(-1i*2*pi*u(:,2)),1,N)...
0071                 .*exp(-1i*2*pi*(u(:,1)*xv'+u(:,2)*yv')))/2;
0072     end
0073     S=[S,f(:)];   
0074 end

Generated on Sun 19-Jul-2020 23:00:25 by m2html © 2005