奇异值分解Matlab

时间:2015-02-25 20:54:44

标签: matlab svd

我正在研究上述主题并试图在Matlab中使用SVD代码。我想知道任何人都可以解释以下代码行的作用吗?

Sh(logical(eye(size(Sh)))) = Sh_diag;

我能理解其余部分,只是这行代码令我感到困惑。我试过在调试器中运行但仍然无法理解它!我相信eye会返回一个单位矩阵,而logical会将Sh转换为1和0?但我无法弄清楚它们是如何协同工作的,特别是size的{​​{1}}?提前谢谢。

Sh

1 个答案:

答案 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中的值。