我有一个二维数组A=zeros(1000,1024)
。我想迭代地计算第i行(i = 1-999)的每个值与第1000行的值之间的差异。
现在我想到循环遍历1-999行,计算当前行和第100行的差异并将其存储在一个单独的数据结构(B=zeros(999,1024)
)中。之后,我使用另一个for循环计算每列的最小值,循环遍历B
列。
您知道更有效,更快捷的方法吗?
答案 0 :(得分:3)
如果你只想要每列的最小值,你可以通过最后的减法来保存很多操作:
min(A(1:end-1,:),[],1) - A(end,:)
答案 1 :(得分:1)
试试这个 -
min(bsxfun(@minus,A(1:999,:),A(1000,:)),[],1)
似乎你想从最后一行中减去,所以你可以把它变成一般 -
min(bsxfun(@minus,A(1:end-1,:),A(end,:)),[],1)
答案 2 :(得分:1)
这是bsxfun
的经典用例:
M = rand(1000,1024);
V = M(end,:);
MminusV = bsxfun(@minus, M(1:end-1,:), V);
min(MminusV)