我需要填写一个矩阵(size_out,size_in)。我一直在寻找类似的问题,但他们的解决方案都无法帮助我。
这是我的第一次尝试
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
我的问题是:如何矢量化外循环?
我不确定 reshape&permute 或 bsxfun 的组合在这里是否有帮助。
提前致谢。