2013-01-24 89 views
1

我想訪問matlab中數組的一些元素。考慮下面的場景:訪問MATLAB中數組的元素

a = [1 2 3;4 5 6;7 8 9] 

b = [1 2;2 1] 

我想從a中訪問索引爲(1,2)和(2,1)的元素。我嘗試使用(b)等,但沒有我嘗試過的方法工作。

如何在matlab中完成而不使用循環?

如果你能在matlab中爲這些基礎知識推薦一些好書,這將是有幫助的。

+0

的可能重複[如何選擇一個子矩陣(沒有任何特定的圖案)在Matlab的](http://stackoverflow.com/q/13091193/1336150)。 –

回答

1

首先,使用sub2ind轉換你的下標來索引:

dim1sub = b(:,1); 
dim2sub = b(:,2); 

ind = sub2ind(size(a), dim1sub, dim2sub) 

之後,你有索引

a(ind) 

會給你:

ans = 

    2 
    4 

有關更多信息,請參見here上矩陣索引。

+0

或只是'a(sub2ind(size(a),b(:, 1),b(:, 2)))'在一行中...... –

+1

@EitanT當然,但我通常不喜歡one-內線在回答問題時。它們使它看起來比它更復雜。 – HebeleHododo

0

通過使用Matlab,您可以訪問具有掃描矩陣的所有列的線性索引的矩陣。所以在你的情況(與3x3)a(2,1)=a(2)a(1,2)=a(4)。 @HebeleHododo提供的答案將您的行和列索引並將它們轉換爲矩陣a的線性索引。請記住,如果您想索引不同大小的矩陣,則需要一個不同的線性索引。

此外,還有大量的在網上提供,以幫助學習MATLAB在http://www.mathworks.com/help/matlab/index.html#language-fundamentals,或者您可以鍵入doc help在命令窗口中的信息