MATLAB: Computing matrix without using for loop

for loopMATLABmatricesmatrixmatrix manipulation

i wish to compute DFT without using a for loop so i figured to use matrix multiplication with the transformative matrix
function y = dft_mat(x,N)
for k=0:N-1
for l=0:N-1
w(k+1,l+1)=cos((2*pi*k*l)/N)-1i*sin((2*pi*k*l)/N);
end
end
y=w*x';
y=y';
end
but to calculate w i ended up using some for loops anyway
is there a way to calculate w without using a for loop? or any other DFT method without using for loop?

Best Answer

Compute the matrix k*l using implicit expansion with element-wise multiplication. The other operations (cos, sin, scalar multiplication, scalar division, subtraction) involved in creating w can all operate on matrices.
If you're using a release older than release R2016b, when implicit expansion was introduced, use bsxfun or repmat.