数据如何循环计算相关系数
各位大侠 再帮帮忙我有两列数据一共有n行 比如说x y
x y是连续的 比如说 x=1:1:1000;y=sqrt(x)
我想从第2行开始计算x y的相关系数 比如说是c=corrcoef(x,y)
然后依次算到n行
再把c当中开始小于0.99的值找出来
不知道我说明白我的意思没有
各位多多帮忙 谢谢了 没明白,你的x,y只有一行,哪有第二行?
而且相关系数最后算出来是2X2的矩阵,你的意思是从这个矩阵中找到小于0.99的值么?
如果x,y是n行的话,每一行算出的值全为1,没有小于0.99的值。。 不好意思 我没说清楚
我的意思是 比如说现在有两行1000列的数据
x=1:1:10000;y=sqrt(x);
从第2列开始算x(1:2)和y(1:2)的相关系数c(1)
然后第3列 算x(1:3)和y(1:3)的相关系数c(2)
依次类推 到最后1列 x(1:1000)和y(1:1000)的相关系数c(999)
这个系数肯定是越来越小嘛 比如说当c开始小于一个数值的时候 比如说0.99
我希望可以把这个点找出来
谢谢啦
回复 楼主 moon555sss 的帖子
用个if条件句不行么 下面是同学教我怎么算出各组的相关系数%%%
x1=1:1:100;y1=sqrt(x1);
n=length(x1);
c = cell(n-1,1);
x = c;
y = x;
for i = 1:n-1;
x{i} = x1(1:i+1);
y{i} = y1(1:i+1);
c{i} = corrcoef(x{i},y{i});
end
%%%
不过那些数都写在矩阵里面
我不知道怎么把这些数提出来 重新写在一个数列
不好意思了 有没有好心人再给点提示 总算是写出来了
我也发上来 希望有空的人 帮我修改修改
%导入数据
x1=1:1:100;
y1=sqrt(x1);
%相关系数
n=length(x1);
c=cell(n-1,1);
x=c;
y=x;
for ii=1:n-1;
x{ii} = x1(1:ii+1);
y{ii} = y1(1:ii+1);
c{ii} = corrcoef(x{ii},y{ii});
end
for ii=1:n-2;
b(ii)=c{ii+1}(1,2);
end
bb=;
%斜率
d=y1./x1;
%绘制原图 相关系数 斜率 对比
figure
subplot(3,1,1)
plot(x1,y1)
title('原图')
grid on
subplot(3,1,2)
plot(x1,bb)
title('相关系数')
grid on
subplot(3,1,3)
plot(x1,d)
title('斜率')
grid on
%在相关系数中找开始小于a的点
a=0.99;
for iii=1:n;
flag=(bb(iii)<=a);
if flag;
break;
end
end
num=iii-1;
x2=x1(1:num); %整理后的x
y2=y1(1:num); %整理后的y
页:
[1]