matlab - 线性索引的下标
问题描述
M 是从 1 到 23 的素数矩阵(按行顺序)
我不明白第二个代码行如何将 M 的对角线条目替换为 1。我也很困惑,因为该函数sub2ind
将行/列下标转换为线性索引,这两者都与条目的值无关。
M = zeros(3); M(:) = primes(23); M = M'
M(sub2ind(size(M), 1:3, 1:3)) = 1
解决方案
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
这样会更改这些条目的值
推荐阅读
- python - 通过 nltk 访问英国国家语料库
- c# - 在单声道中构建 c#“.NET 5.0”时出现错误 MSB4186
- python - time.process_time() 打印'e-xx'
- c# - WPF 拦截 GoBack() 事件
- ansible - VS Code Ansible“应命名所有任务”警告
- r - dimnames(x) <- dn 中的错误:“dimnames”[2] 的长度不等于数组范围
- html - 如何在背景中添加渐变,除了css中的特定框
- android - FFmpegMediaMetadataRetriever 和 MediaMetadataRetriever 崩溃,无论设置为数据源(kotlin),即使使用 videoview 测试的有效 URI
- javascript - 在 FormAssembly 计算字段中使用 JavaScript 获取空字段值
- python - 控制(或避免?) SQLAlchemy 中的 CTE 别名