M是从1到23(按行顺序)的素数矩阵
我不明白第二条代码行是如何用1代替M的对角线条目的。我也感到困惑,因为函数sub2ind
将行/列下标转换为线性索引,两者都不相关条目的值。
M = zeros(3); M(:) = primes(23); M = M'
M(sub2ind(size(M), 1:3, 1:3)) = 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}},以便更改这些条目的值