1% computes the product temp*B with B = L(b)+L(c1)L(Zr1)
'+L(c2)L(Zr2)'
2% temp has m rows, the result
is stored in temp.
3% STEP 1: temp*L(c1) in temp1a
6temp1t=reshape(temp,m^2,N)
';
8temp1b=reshape(temp1b,m^2,N)
';
9temp1b=flipud(temp1b); % termen in omgekeerde volgorde
11dim=2*2^ceil(log2(size(temp1t,1)));
12temp1t=fft(temp1t,dim).';
13temp1b=fft(temp1b,dim).
';
15% now reblock for products
16temp1t=reshape(temp1t,m,m*dim);
17temp1b=reshape(temp1b,m,m*dim).';
20 temp1b((i-1)*m+1:i*m,1:m)=temp1t(1:m,(i-1)*m+1:i*m)*...
21 temp1b((i-1)*m+1:i*m,1:m);
26temp1b=reshape(temp1b,m^2,dim).';
28temp1b=real(ifft(temp1b))
';
29temp1b=reshape(temp1b,m,m*dim)';
32 temp1a(1:m,(lus1-1)*m+1:lus1*m)=temp1b((lushelp-2+lus1)*m+1:(lushelp-1+lus1)*m,:);
36% STEP 2: temp*L(c1)*L(Zr1)
' in temp1a, thus (L(Zr1)*temp1a')
'
42temp1t=reshape(temp1t,m^2,N)';
43temp1b=[zeros(m,m); r1(1:(N-1)*m,:)]
';
44temp1b=reshape(temp1b,m^2,N)';
46dim=2*2^ceil(log2(size(temp1t,1)));
47temp1t=fft(temp1t,dim).
';
48temp1b=fft(temp1b,dim).';
50% now reblock
for products
51temp1t=reshape(temp1t,m,m*dim).
';
52temp1b=reshape(temp1b,m,m*dim).';
55 temp1b((i-1)*m+1:i*m,1:m)=temp1b((i-1)*m+1:i*m,1:m)*...
56 temp1t((i-1)*m+1:i*m,1:m);
61temp1b=reshape(temp1b,m^2,dim).';
63temp1b=real(ifft(temp1b))
';
64temp1b=reshape(temp1b,m,m*dim)';
66temp1a=temp1b(1:N*m,:)
';
69% STEP 3: temp*L(c2) in step2a
72temp1t=reshape(temp,m^2,N)';
74temp1b=reshape(temp1b,m^2,N)';
75temp1b=flipud(temp1b); % termen in omgekeerde volgorde
77dim=2*2^ceil(log2(size(temp1t,1)));
78temp1t=fft(temp1t,dim).
';
79temp1b=fft(temp1b,dim).';
81% now reblock
for products
82temp1t=reshape(temp1t,m,m*dim);
83temp1b=reshape(temp1b,m,m*dim).
';
86 temp1b((i-1)*m+1:i*m,1:m)=temp1t(1:m,(i-1)*m+1:i*m)*...
87 temp1b((i-1)*m+1:i*m,1:m);
92temp1b=reshape(temp1b,m^2,dim).
';
94temp1b=real(ifft(temp1b))';
95temp1b=reshape(temp1b,m,m*dim)
';
98 temp2a(1:m,(lus1-1)*m+1:lus1*m)=temp1b((lushelp-2+lus1)*m+1:(lushelp-1+lus1)*m,:);
101% STEP4: temp*(L(c2)*L(Zr2)'+L(c1)*L(Zr1)
') in temp1a
108temp1t=reshape(temp1t,m^2,N)';
109temp1b=[zeros(m,m); r2(1:(N-1)*m,:)]
';
110temp1b=reshape(temp1b,m^2,N)';
112dim=2*2^ceil(log2(size(temp1t,1)));
113temp1t=fft(temp1t,dim).
';
114temp1b=fft(temp1b,dim).';
116% now reblock
for products
117temp1t=reshape(temp1t,m,m*dim).
';
118temp1b=reshape(temp1b,m,m*dim).';
121 temp1b((i-1)*m+1:i*m,1:m)=temp1b((i-1)*m+1:i*m,1:m)*...
122 temp1t((i-1)*m+1:i*m,1:m);
127temp1b=reshape(temp1b,m^2,dim).';
129temp1b=real(ifft(temp1b))
';
130temp1b=reshape(temp1b,m,m*dim)';
132temp1a=temp1b(1:N*m,:)
'+temp1a; % (temp*L(c2)*L(Zr2))' in temp1b
135% STEP 5: temp*B in temp
138temp1t=reshape(temp,m^2,N)
';
140temp1b=reshape(temp1b,m^2,N)
';
141temp1b=flipud(temp1b); % termen in omgekeerde volgorde
143dim=2*2^ceil(log2(size(temp1t,1)));
144temp1t=fft(temp1t,dim).';
145temp1b=fft(temp1b,dim).
';
147% now reblock for products
148temp1t=reshape(temp1t,m,m*dim);
149temp1b=reshape(temp1b,m,m*dim).';
152 temp1b((i-1)*m+1:i*m,1:m)=temp1t(1:m,(i-1)*m+1:i*m)*...
153 temp1b((i-1)*m+1:i*m,1:m);
158temp1b=reshape(temp1b,m^2,dim).';
160temp1b=real(ifft(temp1b))
';
161temp1b=reshape(temp1b,m,m*dim)';
164 temp(1:m,(lus1-1)*m+1:lus1*m)=temp1b((lushelp-2+lus1)*m+1:(lushelp-1+lus1)*m,:);