簡體   English   中英

如何在Matlab中從矩陣中提取非垂直列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM