首页 > 解决方案 > 线性索引的下标

问题描述

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

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

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

标签: matlab

解决方案


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 分配给这些条目:M(sub2ind(size(M), 1:3, 1:3)) = 1这样会更改这些条目的值


推荐阅读