【问题标题】:How do I iterate through a matrix and retrieve the previous column in MATLAB?如何遍历矩阵并检索 MATLAB 中的前一列?
【发布时间】:2011-10-09 14:58:25
【问题描述】:

我对 MATLAB 非常陌生,对此不确定。我有一个矩阵

matrix = [1 2 3 4;8 9 5 6]; 

现在我想遍历上述矩阵的列并检索该列 在当前的之前。因此,如果在迭代时,我们在第 2 列,那么我们应该检索第 1 列。

有人可以指出我正确的方向吗?我试过了

for v = matrix 
 disp(v-1) 
end 

但这没有用。任何帮助将不胜感激。

【问题讨论】:

  • 请注意,matlab 矩阵运算并未针对像这样的矩阵进行迭代优化;他们假设您正在对整个矩阵进行矩阵运算。查看 thisthis 对代码进行矢量化。
  • 其实,Matlab 是按列存储矩阵的。所以遍历矩阵的列是非常有效的。遍历行的效率较低。

标签: matlab


【解决方案1】:

首先,我们需要找出矩阵中有多少列:

m = [1,2,3,4;9,8,5,6]
[rows, cols] = size(m)

接下来,我们将遍历所有列并打印出当前列:

for ii=1:1:cols
   disp('current column: ')
   m(:,ii) % the : selects all rows, and ii selects which column
end 

如果您想要上一列,而不是当前列:

for ii=1:1:cols
   if ii == 1
      disp('first column has no previous!')
   else
       disp('previous column: ')
       m(:,ii-1) % the : selects all rows, and ii selects columns
   end
end 

【讨论】:

    猜你喜欢
    • 2013-10-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    相关资源
    最近更新 更多