我需要填寫一個矩陣(size_out,size_in)。我正在尋找類似的問題,但他們的解決方案都不能幫助我。向量化MATLAB中的double循環:每行分配表達式
這是我第一次嘗試
for k= 0:size_out-1
for n= 0:size_in-1
part1= sincd(2*No-2, 2*size_in, (k+1/2)/factor -n -1/2);
part3= sincd(2*No-2, 2*size_in, (k+1/2)/factor +n +1/2);
part2= cos((pi/(2*size_in)) * ((k+1/2)/factor -n -1/2));
part4= cos((pi/(2*size_in)) * ((k+1/2)/factor +n +1/2));
A(k+1,n+1)= part1*part2+part3*part4;
end
end
我通過消除內部循環向量化驗證碼:
for k= 0:size_out-1
A(k+1,1:size_in)= ...
sincd(2*No-2, 2*size_in, (k+1/2)/factor -(0:size_in-1) -1/2) .* ...
cos(pi/(2*size_in) * ((k+1/2)/factor -(0:size_in-1) -1/2)) + ...
sincd(2*No-2, 2*size_in, (k+1/2)/factor +(0:size_in-1) +1/2) .* ...
cos(pi/(2*size_in) * ((k+1/2)/factor +(0:size_in-1) +1/2));
end
我的問題是:如何向量化外循環?
我不確定重塑& permute或bsxfun的組合是否可以幫助您。
在此先感謝。
我的問題是:*爲什麼vectorise外環* –
我想,如果你打破它歸結爲所有本地運營商移植到類似的GPU會更快 – ccook