Matlab:从数组中每列的一组值中查找最小值

时间:2014-09-10 13:52:04

标签: arrays matlab minimum

我有一个二维数组A=zeros(1000,1024)。我想迭代地计算第i行(i = 1-999)的每个值与第1000行的值之间的差异。

现在我想到循环遍历1-999行,计算当前行和第100行的差异并将其存储在一个单独的数据结构(B=zeros(999,1024))中。之后,我使用另一个for循环计算每列的最小值,循环遍历B列。

您知道更有效,更快捷的方法吗?

3 个答案:

答案 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)