gpt4 book ai didi

matlab - corr() 与稀疏矩阵 - MATLAB

转载 作者:行者123 更新时间:2023-12-02 05:59:00 25 4
gpt4 key购买 nike

我想知道 MATLAB 是否有一个工具箱可以对稀疏矩阵进行常见的矩阵运算。

使用稠密矩阵,我可以计算相关图矩阵:

R = rand(10,100)
[r,p] = corr(R)

对于稀疏矩阵,我很想做:

S = sprand(10,100,.2)
[r,p] = corr(S)

但是,会引发以下错误:

Error using betainc
Inputs must be real, full, and double or single.

Error in tcdf (line 70)
p(t) = betainc(xsq(t) ./ (v(t) + xsq(t)), 0.5, v(t)/2, 'upper') / 2;

Error in corr>pvalPearson (line 720)
p = 2*tcdf(-abs(t),n-2);

Error in corr>corrPearson (line 321)
pval(ltri) = pvalPearson(tail, coef(ltri), n);

Error in corr (line 204)
[coef,pval] = corrFun(rows,tail,x);

有人可以帮助我吗?

最佳答案

来吧,让我们做一些数学题!设 x 为随机向量。相关矩阵 CORR(x_i, x_j) 中的条目由下式给出:

CORR(x_i, x_j) = COV(x_i, x_j) / (SQRT(VAR(x_i)) *SQRT(VAR(x_j));

也就是说,为了构建我们的相关矩阵,我们需要协方差矩阵,它也为我们提供了个体方差。协方差公式:COV(x) = E[x*x'] - E[x]E[x]' 。然后我们可以近似估计总体矩 E[x*x']与样本时刻(即 X'*X/nmean(X) )

因此,Matlab 代码如下:

[n, k]  = size(X);
Exxprim = full(X'*X)/n; %I'm shocked if this isn't full so let's drop sparse now
Ex = full(mean(X))'; %same deal
COVX = (Exxprim - Ex*Ex');
STDEVX = sqrt(diag(COVX));
CORRX = COVX ./ (STDEVX * STDEVX');

如果 X'*X 和mean(X) 可以更有效地完成,这可能会有所帮助,因为 X 是稀疏的。

关于matlab - corr() 与稀疏矩阵 - MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32106370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com