【发布时间】:2016-04-14 05:38:30
【问题描述】:
我有一个特定的矩阵X。它的踪迹等于n,即trace(X) = n。
在 matlab 中使用函数normc 可以轻松地将X 的列标准化为长度为 1:
New_X = normc(X)
在matlab中使用normr函数可以很容易地将X的行标准化为长度为1:
New_X = normr(X)
我感兴趣的是将矩阵X 归一化,使其轨迹等于d 而不是n。我怎样才能做到这一点?任何帮助将不胜感激!
【问题讨论】:
-
d*X/trace(X)不会给你想要的矩阵吗?轨迹和长度也是不同的东西,轨迹是总和,而长度是平方和的平方根。如果您希望对角线的长度为 1,则可能需要做更多的工作。 -
如果您希望对角线的欧几里得长度为 1,您可以执行
sqrt(d)*X/norm(diag(X))并且生成的矩阵将具有长度为 d 的对角线。 -
@randomGuy 我认为您应该添加这些作为答案。解决方案就是您所说的,否则问题定义不明确(我的意思是,如果允许对行/列进行独立缩放,则问题非常不确定。
标签: matlab matrix normalization