【问题标题】:MATLAB MATRIX cell index in integer format, not row and column format整数格式的 MATLAB MATRIX 单元格索引,而不是行和列格式
【发布时间】:2020-09-18 01:42:36
【问题描述】:

在 MATLAB 中,矩阵单元按其行和列位置编号。我想按整数索引。

考虑一个 (3,4) 矩阵

for i=1:length(3)
  for j =1:length(4)
    fprint(i,j)
  end
end
1,1
1,2
.
.
3,4

但是,我在遍历每个单元格时所期望的输出由下式给出

for i=1:length(3)
  for j =1:length(4)
    fprint(i+j+something)
  end
end
1
2
3
4
.
.
12

【问题讨论】:

标签: matlab matrix


【解决方案1】:

这称为线性索引。您可以使用函数sub2ind 将行号和列号转换为线性索引,而ind2sub 则相反。

index = sub2ind(size(M),i,j);
M(i,j) == M(index)

sub2ind 对二维矩阵应用的公式是index = i + (j-1) * size(M,1)。也就是说,数字沿着第一列向下增加,然后是第二列,依此类推。

【讨论】:

  • 我有问题。一个简单的代码让我很困扰。这是我的代码:for i=1:length(3) for j=1:length(3) n = sub2ind(size(Rld),i,j); fprintf('%i\n',n) end end 未知原因,它只打印1,而不是1..9。知道这里可能出了什么问题。
  • @Mainland:length(3)是1。你想做for i=1:3
  • oho.. 我现在明白了。这是一个简单而大的错误。非常感谢。
  • 索引实际设置为index = i + (j - 1) * size(M,1)
  • @JorenV:感谢您指出错字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多