想用MATLAB中的corrcoef函数求两个向量的相关系数。

比如A=[1 2 3];B=[5 3 7]; r= corrcoef(A,B)可以求出相关系数是0.5.为什么两个向量的元素都要是3个以上才行?而只有两个元素的向量如A=[1 2];B=[5 3];不管怎么随机的取,相关系数都是1或-1啊?只含两个元素的向量,都一定相关吗?

这是求相关度的结果,对于一般的矩阵X,执行A=corrcoef(X)后,A中每个值的所在行a和列b,反应的是原矩阵X中相应的第a个列向量和第b个列向量的相似程度(即相关系数)。计算公式是:C(1,2)/SQRT(C(1,1)*C(2,2)),其中C表示矩阵[f,g]的协方差矩阵,假设f和g都是列向量(这两个序列的长度必须一样才能参与运算),则得到的(我们感兴趣的部分)是一个数。以默认的A=corrcoef(f,g)为例,输出A是一个二维矩阵(对角元恒为1),我们感兴趣的f和g的相关系数就存放在A(1,2)=A(2,1)上,其值在[-1,1]之间,1表示最大的正相关,-1表示绝对值最大的负相关

>> A=[1 2 3];B=[5 3 7]; r= corrcoef(A,B)

r =

    1.0000    0.5000

    0.5000    1.0000

>> A=[1 2];B=[5 3];

   r= corrcoef(A,B)

r =

    1.0000   -1.0000

   -1.0000    1.0000%%-1是算出来的,不是说二维向量就一定相关,根据图中r和协方差矩阵的关系

cov(A,B)

ans =

    0.5000   -1.0000

   -1.0000    2.0000%%%A和B的协方差矩阵,

那么R(1,2)=C(1,2)/(sqrt(C(1,1)*C(2,2)))=-1,sqrt为开方的意思。

追问

非常感谢你的回答,真的是太详细了,我都抄在本子上了呵呵。但还是有一点不明白,
“-1是算出来的,不是说二维向量就一定相关,”什么意思?为什么任何两个二维向量计算出来的相关系数都是1或者-1?你不是说“1表示最大的正相关,-1表示绝对值最大的负相关”吗?那么任何两个二维的向量都具有最大的正(负)相关性吗?相关系数为1,也就是相关的。我不是学数学的,是做课题的时候发现这个问题不明白。

追答

>> A=[1 0];B=[0 1];%%二维向量,不相关
cov(A,B)
ans =
0.5000 -0.5000
-0.5000 0.5000
A=[1 2];B=[5 10];%%二维向量,相关
cov(A,B)
ans =
0.5000 2.5000
2.5000 12.5000
正相关是指两列变量变动方向相同,一列变量由大到小或由小到大变化时,另一列变量亦由大到小或由小到大变化。
负相关是指两列变量变动方向相反,一列变量由大到小或由小到大变化时,另一列变量反而由小到大或由大到小变化。
matlab 函数corrcoef也是根据上面的概念计算的,关于二维向量计算总得到-1或者1的问题,我仔细看了下,上面的测试两组数据,可以看出协方差矩阵中sqrt(C(1,1)*C(2,2))=C(1,2)or-C(1,2)。也就是说不管你怎么换数据sqrt(C(1,1)*C(2,2))=C(1,2)or-C(1,2)这个式子总是成立的,所以我个人认为是样本数量(向量维数)少或者是这个函数的缺陷。

温馨提示:内容为网友见解,仅供参考
无其他回答

想用MATLAB中的corrcoef函数求两个向量的相关系数。
计算公式是:C(1,2)\/SQRT(C(1,1)*C(2,2)),其中C表示矩阵[f,g]的协方差矩阵,假设f和g都是列向量(这两个序列的长度必须一样才能参与运算),则得到的(我们感兴趣的部分)是一个数。以默认的A=corrcoef(f,g)为例,输出A是一个二维矩阵(对角元恒为1),我们感兴趣的f和g的相关系数...

matlab怎么求相关系数
第一步我们首先需要知道matlab中求相关系数用到的是corrcoef函数,在命令行窗口中输入“helpcorrcoef”,可以看到corrcoef函数用法,:第二步在命令行窗口中输入a=[1367816],b=[24791519],创建两个矩阵,求两个矩阵的相关系数,:第三步输入corrcoef(a,b),按回车键,可以看到两个矩阵的相关系数是0.94...

用MATLAB求两个矩阵的相关系数
ans = 4 2 4 3 2 4 3 4

我用MATLAB中的corrcoef计算出了两个序列的相关系数,请问怎么进行显著性...
在你整理好需要进行相关系数计算的矩阵后,如x,直接利用下面一句代码就可以实现:[r,p] = corrcoef(x)p矩阵就是所求的检验结果,具体函数的作用可以利用帮助查找 help corrcoef 希望有用。

诚心求教,matlab里如何求两个矩阵的典型相关系数
使用函数corrcoef即可求出,下面是一个例子:helpcorrcoefx=randn(30,4);%Uncorrelateddatax(:,4)=sum(x,2);%Introducecorrelation.[r,p]=corrcoef(x)%Computesamplecorrelationandp-values.[i,j]=find(p

在matlab中怎么求相关函数
用matlab计算y、y1向量的相关系数可以corrcoef()函数来计算。计算格式如下 y =[26207 27986 29218 30510 33261 35730 36528 38368 38046 40496 44452]; %拟合前的数据(原始数据)y1=[26737 27679 29271 30995 32831 34547 36278 38027 39711 41369 43358]; %拟合后的数据 R2=corrcoef(y,y1)...

怎么用matlab求求相关系数
怎么用matlab求求相关系数 min(min(corrcoef(x1, x2))) 就是x1,x2之间的相关系数。比如 t = (1:0.1:100)';w = 2*pi;x1=sin(w*t)+randn(size(t));x2=cos(w*t)+randn(size(t));x3=sin(w*t)+randn(size(t));x1_x2 = min(min(corrcoef(x1, x2)))x1_x3 = min(min(...

matlab中corrcoef函数如何使用?
在MATLAB这款强大的数学软件中,corrcoef函数扮演着关键的角色,它是计算序列间相关系数的得力工具。通过corrcoef函数,我们可以直观地分析两个序列的关联性,其返回的结果是一个2*2矩阵,对角线上的元素反映了序列本身的自相关,非对角线的元素则揭示了序列间的相关系数,这个关系是互逆的,即corrcoef(a,...

matlab中求两个矩阵的相似度或者说拟合度有什么办法??
回答:MATLAB 的corr函数或者corrcoef函数

matlab 求 相关系数
0.5183 1.0000 p = 1.0000 0.0531 0.3072 0.0613 0.0531 1.0000 0.4511 0.0135 0.3072 0.4511 1.0000 0.0033 0.0613 0.0135 0.0033 1.0000 ans = 4 2 4 3 2 4 3 4 摘自matlab帮助 ...

相似回答