整数格式的MATLAB矩阵单元索引,而不是行和列格式
在MATLAB中,矩阵单元按其行和列位置进行编号。我想用整数做索引 考虑一个(3,4)矩阵 但是,当遍历每个单元格时,我期望的输出是整数格式的MATLAB矩阵单元索引,而不是行和列格式,matlab,matrix,Matlab,Matrix,在MATLAB中,矩阵单元按其行和列位置进行编号。我想用整数做索引 考虑一个(3,4)矩阵 但是,当遍历每个单元格时,我期望的输出是 for i=1:length(3) for j =1:length(4) fprint(i+j+something) end end 1 2 3 4 . . 12 这称为线性索引。您可以使用该函数将行数和列数转换为线性索引,也可以使用其他方法 index = sub2ind(size(M),i,j); M(i,j) == M(index) su
for i=1:length(3)
for j =1:length(4)
fprint(i+j+something)
end
end
1
2
3
4
.
.
12
这称为线性索引。您可以使用该函数将行数和列数转换为线性索引,也可以使用其他方法
index = sub2ind(size(M),i,j);
M(i,j) == M(index)
sub2ind
对二维矩阵应用的公式是index=i+(j-1)*size(M,1)
。也就是说,数字沿着第一列向下增加,然后是第二列,以此类推。我有个问题。一个简单的代码让我很烦恼。这是我的代码:对于i=1:length(3)对于j=1:length(3)n=sub2ind(size(Rld),i,j);fprintf('%i\n',n)end end end
由于未知原因,它只打印1
,而不打印1..9
。你知道这里可能出了什么问题吗。@trandle:length(3)
是1。您想对i=1:3执行。。我现在明白了。这是一个简单而重大的错误。非常感谢。索引实际上被设置为index=i+(j-1)*大小(M,1)
@JorenV:谢谢你指出错误。这回答了你的问题吗?
index = sub2ind(size(M),i,j);
M(i,j) == M(index)