如何使用 for 循环提取列?

How to extract columns with a for loop?

问题
如果有一个 MxN 的矩阵,如何提取所有基于列的数据? 我很感兴趣将每一列传递给一个函数并进行绘制。

如果使用 A(:),则所有矩阵都合并到一个列中,(我记得这个命令是为此目的而设计的)但这对我不起作用。

Matlab 数组使用索引,partOfArray = array(rows, columns)。变量行和列可以是向量(包括标量,它是长度为 1 的向量)或 :,Matlab 将其有效解释为 'all'(例如 array(:,columns) 将是所选列的所有行)。

或者,Matlab 也允许线性索引,其中 array(aNumber)array(1,1) 开始按行、然后按列的顺序计数。例如如果数组是 2x4,array(5) 等价于 array(2,1)。当您调用 A(:) 时,Matlab 将其解释为使用线性索引访问数组中的所有元素,因此将矩阵合并为一列。

要在 for 循环中访问每个列向量,在本例中将其打印出来,请使用:

A = magic(4)
numColumnsInA = size(A,2);
for i=1:numColumnsInA
    disp(A(:,i))
end

您可以在此处找到有关在 Matlab 中建立索引的更多信息:Array Indexing