如何在不使用for循环的情况下计算此公式

时间:2014-10-03 04:26:55

标签: matlab

我想在不使用for-loop的情况下计算两组数据之间的相关性。使用循环,以下代码是解决方案。

clear all
clc
x = [1 2 3 4 5 6 7];
y = [7 6 5 4 3 2 1];
sum = 0;
for i = 1:length(x)
    sum = sum + (x(i)-mean(x))*(y(i)-mean(y));
end
p = sum/(length(x)-1)

3 个答案:

答案 0 :(得分:1)

解决方法如下

clear all
clc
x = [1 2 3 4 5 6 7];
y = [7 6 5 4 3 2 1];
p = sum( (x-mean(x)).*(y-mean(y)))/(length(x)-1);

答案 1 :(得分:0)

看起来像我的协方差。制作那些行向量列向量,然后取小对角线cov(x,y)的任一元素,你应该得到相同的结果。

答案 2 :(得分:0)

替换

sum = 0;
for i = 1:length(x)
    sum = sum + (x(i)-mean(x))*(y(i)-mean(y));
end
p = sum/(length(x)-1)

p = sum( ( x-mean(x) ) .* ( y-mean(y) ) )/(length(x)-1)
编辑:哎呀,应该阅读评论。