我有一个矢量:
A =
0.5743
-0.3167
0.0591
-0.2576
0.0000
0.2576
-0.0591
0.3167
-0.5743
我想将数组A的每个值之间的差异存储在数组或矩阵中,并找到最大差值,并输出索引(即v(1) - v(3)得出例如,最大值,产生最大值。有没有人有任何建议?
答案 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
所寻求的指数由变量row
,col
给出。差异矩阵为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)]);