mar*_*our 2 matlab vectorization
我有N乘M矩阵A,1乘M矩阵或行向量B和另外1乘M行向量C.我可以更多地向量化下面的代码吗?
for i = 1:N
     A(i,:) = (A(i,:)-B)./C;
end;
那么我们有K个M矩阵(K可以被N整除)而不是矢量的更一般情况呢?
这是bsxfun为了做到这一点:
A = bsxfun(@rdivide,bsxfun(@minus,A,B),C);
它将自动扩展大小的数组以与大小的数组[1 M]兼容[N M],然后对它们执行必要的数组操作,返回一个大小的数组[N M].
如果你的B和C数组的大小[K M],那么它有点困难.您没有指定输出的形状,但在最常见的情况下,您可以为每一行计算"(AB)/ C",B并C在大小数组中收集这些矩阵[K N M]:
A = bsxfun(@rdivide,bsxfun(@minus,permute(A,[3 1 2]),permute(B,[1 3 2])),permute(C,[1 3 2]));
其中A被变换为尺寸的阵列[1 N M],并且两个B和C被转换为大小[K 1 M].根据不同尺寸的阵列大小,你可能会受益M于前面的(因为这是你减去的尺寸,但我不确定.
| 归档时间: | 
 | 
| 查看次数: | 52 次 | 
| 最近记录: |