【问题标题】:Implementation of correlation matrix in MATLABMATLAB中相关矩阵的实现
【发布时间】:2012-07-14 21:50:47
【问题描述】:

我想在 MATLAB 中实现以下公式,其中 u_i^(k) 表示 i,k 元素。但是,我得到的结果与我手工计算的结果不同……我相信我的 MATLAB 代码有问题。例如, 我应该得到:

L_ii =

    0.1022         0         0
         0    0.1657         0
         0         0    2.7321

U_ij =

    0.7514    0.3104    0.5823
   -0.6513    0.4901    0.5793
   -0.1055   -0.8145    0.5704

1,1=1-(0.1022*(+0.7514)^2+0.1657*(+0.3104)^2+2.7321*(+0.5823)^2)=-0.000049
2,2=1-(0.1022*(-0.6513)^2+0.1657*(+0.4901)^2+2.7321*(+0.5793)^2)=-0.000015
3,3=1-(0.1022*(-0.1055)^2+0.1657*(-0.8145)^2+2.7321*(+0.5704)^2)=+0.000030

有什么想法吗???请帮我先修复 Epsilon(它可能不需要继续 Rho。让我们先修复 Epsilon...)

编辑:这是一个示例代码:

E_squared_ii = ONES_j - diag(L_ii)' * (U_ij'.^ 2)

这是我目前得到的错误结果:

E_squared_ii =

   1.0e-15 *

   0.444089209850063   0.333066907387547  -0.222044604925031

【问题讨论】:

  • 你必须把你现有的代码放进去以便分析。
  • 所以以上是你应该得到的;你实际上得到了什么?
  • @OliCharlesworth:刚刚更新了问题。
  • 进行此类计算的最简单方法是使用 for 循环,虽然速度较慢,但​​始终很容易实现。这是你想让我教你怎么做的事情吗?还是for循环不可接受?

标签: matlab matrix correlation


【解决方案1】:

如果我使用你的值和代码,我会得到预期的结果:

>> L_ii

L_ii =

    0.1022         0         0
         0    0.1657         0
         0         0    2.7321

>> U_ij

U_ij =

    0.7514    0.3104    0.5823
   -0.6513    0.4901    0.5793
   -0.1055   -0.8145    0.5704

>> ONES_j

ONES_j =

     1     1     1

>> E_squared_ii = ONES_j - diag(L_ii)' * (U_ij'.^ 2)

E_squared_ii =

   1.0e-04 *

   -0.4935   -0.1451    0.2985

大概这意味着某些东西不是你认为的价值......

【讨论】:

  • 你是对的,刚刚重新启动了 MATLAB,现在它可以工作了......哈哈!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-10
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 2021-06-09
相关资源
最近更新 更多