【问题标题】:Normalize a matrix to have a specific trace value将矩阵归一化以具有特定的跟踪值
【发布时间】: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


【解决方案1】:

trace 和 length 是不同的东西,trace 是和,而 length 是欧几里得长度,定义为平方和的平方根。如果您希望转换矩阵以使轨迹为d,您可以将矩阵缩放为:

Xtfm = d*X/trace(X)

如果您希望标准化使得对角线的欧几里得长度为 1,您可以使用以下方法:

Xtfm = d*X/norm(diag(X))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2017-10-15
    • 2018-10-26
    • 1970-01-01
    • 2016-09-15
    • 2014-03-19
    相关资源
    最近更新 更多