下标到线性索引

时间:2019-05-05 12:36:52

标签: matlab

M是从1到23(按行顺序)的素数矩阵

我不明白第二条代码行是如何用1代替M的对角线条目的。我也感到困惑,因为函数sub2ind将行/列下标转换为线性索引,两者都不相关条目的值。

M = zeros(3); M(:) = primes(23); M = M'
M(sub2ind(size(M), 1:3, 1:3)) = 1

1 个答案:

答案 0 :(得分:2)

sub2ind(size(M), 1:3, 1:3)返回条目线性索引[1, 5, 9]的数组(1,1), (2,2), (3,3)。在M(sub2ind(size(M), 1:3, 1:3))中,您以向量的形式访问M,这等效于编写M([1, 5, 9]),因此您要使用线性索引访问矩阵,并且将值1分配给这些条目:{ {1}},以便更改这些条目的值