我需要填写一个矩阵(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