How to implement this without using for?
Show older comments
This is my code:
function Y=FCOS(win)
N=size(win,2)-1;
teta=2*pi/N;
d=2*pi/N;
win1=win(:,1:N);
win2=win(:,2:N+1);
C1=0; C2=0;
for j=1:N
C1=C1+(2/N)*win1(:,j)*cos(j*teta);
C2=C2+(2/N)*win2(:,j)*cos(j*teta);
end
Yc=C1;
Ys=(C1*cos(d)-C2)/sin(d);
Y=complex(Yc,Ys);
My idea was to do the following:
C1=2/N*sum(win1.*cos((1:N)*teta),2);
C2=2/N*sum(win2.*cos((1:N)*teta),2);
But it will only work if my variable 'win' has only 1 line. For this to work, I would have to use, instead of (1:N), [1:N; 1:N; 1:N ... ;1:N], where this matrix should have the same number of lines as 'win'. But I can only think of a way of doing this with a for.
Anyone have a better solution?
Accepted Answer
More Answers (0)
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!