我有一个数组,在第二列上进行了一些计算。我希望第三列中的值跟随/链接到第二列。
测试代码:
a1= [1,10,-11;
2,70,232;
3,33.2,-33;
4,40,44;]
a2calc=abs(a1(:,2)-max(a1(:,2))) %calculation
a2=[a1(:,1),a2calc,a1(:,3)] %new array
实施例: 原创a1数组
1 10 -11
2 70 232
3 33.2 -33
4 40 44
第2列计算后的a2数组如下所示
1 60 -11
2 0 232
3 36.8 -33
4 30 44
我正在尝试让最终数组看起来像(第3列值跟随/链接到第二列)
1 60 232
2 0 -11
3 36.8 44
4 30 -33
我遇到的问题是我不确定是否应该使用第2列的索引值,如果是这样,我怎么能让它看起来像我在问题中包含的最终输出数组。
答案 0 :(得分:1)
我可能在这里错了,但在我看来逻辑是:
计算第二列后,更改第三列的顺序,以便第三列的排序方式与第二列相同。看看我的意思: 这代表两列,从最高到最低编号:
A = 1 1
4 3
2 2
3 4
如果我理解正确,你希望得到的矩阵是
A = 1 1
4 4
2 2
3 3
如果这是正确的逻辑,那么你应该用两个输出检查sort
。您可以使用第二个输出来索引第三列。
[~, idx] = sort(A(:, 2));
sorted_3 = sort(A(:, 3));
A(idx, 3) = sorted_3;
这个输出是:
A =
1.00000 60.00000 232.00000
2.00000 0.00000 -33.00000
3.00000 36.80000 44.00000
4.00000 30.00000 -11.00000
祝你好运!