2013-12-14 91 views
0

我有一個數組在第二列上進行了一些計算。我希望第三列的值跟隨/連接到第二列。將數組列與陣列中的另一列關聯/鏈接

測試代碼:

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 

柱後A2陣列2點的計算如下所示

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列的索引值,如果有的話我怎樣才能讓它看起來像問題中包含的最終輸出數組。

+3

你的問題還不清楚。應該採用哪一條規則來訴諸第三欄? – Daniel

+0

@DanielR這就是我遇到的問題我不知道我是否應該使用第2列的索引值,如果可以的話如何讓它看起來像我包含在問題中的最終輸出數組。 –

+2

「第3列值跟在第二列」:請解釋一下。他們應該關注第二欄? –

回答

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 

祝你好運!