0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 function S = signal_from_F_2D(u,F,xv,yv,der)
0015
0016
0017 if nargin == 4
0018 der=[0,0];
0019 end
0020
0021 K = size(u,1);
0022 N = length(xv);
0023 D = size(der,1);
0024 ind_x = 1:N;
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