矢量值的最大值

时间:2014-11-26 18:18:24

标签: arrays matlab sorting

我有一个矢量:

A =
    0.5743
   -0.3167
    0.0591
   -0.2576
    0.0000
    0.2576
   -0.0591
    0.3167
   -0.5743

我想将数组A的每个值之间的差异存储在数组或矩阵中,并找到最大差值,并输出索引(即v(1) - v(3)得出例如,最大值,产生最大值。有没有人有任何建议?

2 个答案:

答案 0 :(得分:2)

这是你想要的吗?

d = abs(bsxfun(@minus, A, A.')); %'// compute all differences
[~, ind] = max(d(:)); %// find linear index of maximum difference
[row, col] = ind2sub([numel(A) numel(A)], ind); %// convert to row and column

所寻求的指数由变量rowcol给出。差异矩阵为d

或者,第一行可以替换为

d = squareform(pdist(A));

答案 1 :(得分:1)

我认为您不需要计算所有差异。您只需要找到最大值和最小值并减去。

[max_val, max_ind] = max(A(:));
[min_val, min_ind] = min(A(:));
disp(['Max difference is ', num2str(max_val - min_val), ' which is the difference between indicies ', num2str(max_ind), ' and ', num2str(min_ind)]);