matlab polyfit 相关系数是什么?

matlab polyfit 相关系数是什么?,第1张

a=polyfit(x,y,1);

z=polyval(a,x);

R=corrcoef(x,y);

所示为线性拟合

这样得到的R即为相关系数矩阵,其中

R(1,2)=R(2,1)为相关系数,其值在[-1,1]之间,1表示最大的正相关,-1表示绝对值最大的负相关。

polyfit疑问:

n=[1,2,4,8];  
t=[717,677,613,573]; 
t1=[721,688,632,584];
p=polyfit(log(n),log(t),1);
p1=polyfit(log(n),log(t1),1); 
a=exp(p(2))
b=p(1)
a1=exp(p1(2))
b1=p1(1)
t1=an^b;
plot(n,t,'+',n,t1,'-')

解法:

p = polyfit(x,y,n) 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)。p 中的系数按降幂排列,p 的长度为 n+1。这是help polyfit的部分解释。

所以,在你这里,P里面装有两个数,一个是常系数p(2),一个是自变量的系数 p(1)exp(p(1))是e的p(1)次方。之所以这个代码里有exp出现,是因为多项式拟合的时候,把原数据转换为对数形式了。

计算方法如下:

假设协方差矩阵为c

第i行与第j行的相关系数为:

r(i,j)=c(i,j)/sqrt(c(i,i)c(j,j))

若要求整个矩阵可用循环实现

[m,n]=size(c);

for i=1:m

for j=1:n

r(i,j)=c(i,j)/sqrt(c(i,i)c(j,j));

end

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

使用函数corrcoef即可求出,下面是一个例子:
help corrcoef
x = randn(30,4); % Uncorrelated data
x(:,4) = sum(x,2); % Introduce correlation
[r,p] = corrcoef(x) % Compute sample correlation and p-values
[i,j] = find(p<005); % Find significant correlations
[i,j] % Display their (row,col) indices
r =
10000 -03566 01929 03457
-03566 10000 -01429 04461
01929 -01429 10000 05183
03457 04461 05183 10000
p =
10000 00531 03072 00613
00531 10000 04511 00135
03072 04511 10000 00033
00613 00135 00033 10000
ans =
4 2
4 3
2 4
3 4

相关系数的计算公式应该知道吧
向量X和Y的相关系数=Sigma(xi-xp)(yi-yp)/sqrt(Sigma(xi-xp)^2)sqrt(Sigma(yi-yp)^2)
xp、yp代表平均值
=(nSigma(xiyi)-Sigma(xi)Sigma(yi))/(sqrt(nSigma(xi^2)-(Sigma(xi))^2)sqrt(nSigma(yi^2)-(Sigma(yi))^2))
利用一个循环,分别求出每2个向量的相关系数
向量自身的是自相关系数,这样就形成矩阵了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12610363.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存