我正在研究上述主题并试图在Matlab中使用SVD代码。我想知道任何人都可以解释以下代码行的作用吗?
Sh(logical(eye(size(Sh)))) = Sh_diag;
我能理解其余部分,只是这行代码令我感到困惑。我试过在调试器中运行但仍然无法理解它!我相信eye
会返回一个单位矩阵,而logical
会将Sh
转换为1和0?但我无法弄清楚它们是如何协同工作的,特别是size
的{{1}}?提前谢谢。
Sh
答案 0 :(得分:3)
size(Sh)
返回矩阵Sh
的维度。
eye(size(Sh))
创建一个与Sh
具有相同尺寸的单位矩阵。
logical(eye(size(Sh)))
将单位矩阵的元素转换为逻辑值。
Sh(...)
正在使用logical indexing选择Sh
的子矩阵。这看起来只是得到Sh
的对角元素。
Sh(...) = Sh_diag
正在用Sh_diag
替换上述子矩阵。
总而言之,这是选择Sh
的对角元素,并将其替换为Sh_diag
中的值。