我想訪問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中爲這些基礎知識推薦一些好書,這將是有幫助的。
我想訪問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中爲這些基礎知識推薦一些好書,這將是有幫助的。
首先,使用sub2ind
轉換你的下標來索引:
dim1sub = b(:,1);
dim2sub = b(:,2);
ind = sub2ind(size(a), dim1sub, dim2sub)
之後,你有索引
a(ind)
會給你:
ans =
2
4
有關更多信息,請參見here上矩陣索引。
或只是'a(sub2ind(size(a),b(:, 1),b(:, 2)))'在一行中...... –
@EitanT當然,但我通常不喜歡one-內線在回答問題時。它們使它看起來比它更復雜。 – HebeleHododo
通過使用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
在命令窗口中的信息
的可能重複[如何選擇一個子矩陣(沒有任何特定的圖案)在Matlab的](http://stackoverflow.com/q/13091193/1336150)。 –