matlab中的自定义相关函数

时间:2015-03-23 12:27:30

标签: matlab

我正在尝试使用matlab 2010中的此代码为pearson的相关系数创建自定义函数

function [p] = customcorr(o)
x := a
y := b
x_mean := mean(a)
y_mean := mean(b)
x_std := std(a)
y_std := std(b)
n := length(o)
r := (1/(n-1))*((x-x_mean)*(y-y_mean))/(x_std*y_std)
end

但是我在尝试执行时遇到错误

Error in ==> customcorr at 2
x := a

有人可能知道问题是什么吗?谢谢

1 个答案:

答案 0 :(得分:1)

首先,检查正确的MATLAB语法:“正常”分配由=完成,而不是:=

其次,您使用ab但这些未定义为函数的参数。用function p = customcorr(a,b)替换功能头。

第三,我不确定o应该是什么,我认为它可以被length(a)length(b)取代。

无偏相关系数的估计由

给出

corr

(来自维基百科)

因此,您需要将所有(a-a_mean).*(b-b_mean)sum相加。请注意,需要编写.*来获取逐元素乘法。这样你就可以从向量的每个元素中减去均值,然后将相应的ab相乘,并总结这些乘法的结果。

这是

function p = customcorr(a,b)
    a_mean = mean(a);
    b_mean = mean(b);
    a_std = std(a);
    b_std = std(b);
    n = length(a);
    p = (1/(n-1)) * sum((a-a_mean).*(b-b_mean)) / (a_std*b_std);
end

MATLAB在corr函数中做了什么(除了许多其他有趣的事情)之外,他们检查参数的数量(nargin变量)以查看a和{{1}提供与否。您可以通过将以下代码添加到函数(开头)

来实现
b