[英]How to extract non-vertical column from matrix in Matlab
我有矩陣A和向量b,它指定要為矩陣的每個對應行提取的元素的列索引。
例如,
A = [1 2 3
4 5 6
7 8 9]
b = [1 3 2]'
我想輸出c = [1 6 8]'
。 怎么做到這一點?
我試過A(:, b)
,但它不能正常工作。
可能有一個更優雅的解決方案,但這有效:
b = [1 3 2]';
[rows, cols] = size(A);
A(sub2ind([rows cols], [1 : rows]', b))
作為@ dantswain解決方案的替代方案,您可以直接轉到線性索引,假設您始終從列中進行選擇:
r = size(A,1);
A( (1:r).' + (b-1) * r)
這將更快,但不一定更清晰。
不幸的是,沒有一個優雅的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.