将数组列与数组中的另一列相关联/链接

时间:2013-12-14 14:52:25

标签: arrays matlab sorting octave

我有一个数组,在第二列上进行了一些计算。我希望第三列中的值跟随/链接到第二列。

测试代码:

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列的索引值,如果是这样,我怎么能让它看起来像我在问题中包含的最终输出数组。

1 个答案:

答案 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
祝你好运!