假设M和N是两个数组.在最简单的情况下,M和N是这样的:
1 14 7 80
2 15 8 12
3 16 9 11
(3行和4列)
我想将列1除以所有三列,然后将列2除以所有三列,然后将列3除以所有三列.
最快的方法是什么?(当然,使用for循环不是一个好的算法.)
编辑:
这是我的for循环代码:
idx = 1;
for i = 1 : size(N,2)
for j = 1 : size(M,2)
u(:,idx)=N(:,i) ./ M(:,j);
idx = idx + 1;
end
end
Run Code Online (Sandbox Code Playgroud)
假设M和N相同并且相等A
out = bsxfun(@rdivide, permute(A,[1 3 2]), A)
Run Code Online (Sandbox Code Playgroud)
输入:
A =
1 14 7 80
2 15 8 12
3 16 9 11
Run Code Online (Sandbox Code Playgroud)
样本输入的结果:
out(:,:,1) =
1.0000 0.0714 0.1429 0.0125
1.0000 0.1333 0.2500 0.1667
1.0000 0.1875 0.3333 0.2727
out(:,:,2) =
14.0000 1.0000 2.0000 0.1750
7.5000 1.0000 1.8750 1.2500
5.3333 1.0000 1.7778 1.4545
out(:,:,3) =
7.0000 0.5000 1.0000 0.0875
4.0000 0.5333 1.0000 0.6667
3.0000 0.5625 1.0000 0.8182
out(:,:,4) =
80.0000 5.7143 11.4286 1.0000
6.0000 0.8000 1.5000 1.0000
3.6667 0.6875 1.2222 1.0000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |