如何使用 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
问题
如果有一个 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