computing matrix without using for loop
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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?
1 Commento
Bob Thompson
il 27 Gen 2020
You can remove one loop by applying the calculations for entire sets of l at one time.
function y = dft_mat(x,N)
l = [0:N-1];
for k=0:N-1
w(k+1,:)=cos((2*pi*k*l)/N)-1i.*sin((2*pi*k*l)/N);
end
y=w*x';
y=y';
end
Untested, but should be about right.
Risposta accettata
Steven Lord
il 27 Gen 2020
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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!