您的代码的具体问题是,在您的corrcoef([X,Y]) 行中,您只是将X 和Y 归为一个变量。你绝对可以从这个矩阵中得到你想要的答案(非对角项是 X 和你的 Y 的列之间的相关性),但这可能不是你所期望的。
当您不确定时,我总是建议将问题分解为最小的步骤。在这种情况下,您可能会感到困惑,因为您的 X 有三列,而您的 Y 只有一列。在这种情况下corrcoef 做了什么?如果您不确定,我建议您将其分解为更小的步骤...
对于您感兴趣的操作(与Y 的相关性和线性回归),X 的三列之间没有相互依赖关系。因此,一个很好的简化步骤是独立处理 3 列。您可以在 for 循环中执行此操作(是的,您可以一次将其全部矢量化,但在 for 循环中执行此操作可以在不确定时更容易理解)...
%see the correation between the two variables
for I=1:3
x_foo = X(:,I)
%http://www.mathworks.com/help/matlab/ref/corrcoef.html
c = corrcoeff(x_foo,Y)
end
然后,您可以进行下一步……线性回归。使用 polyfit 函数拟合一条线。
figure;
for I=1:3
x_foo = X(:,I);
%http://www.mathworks.com/help/matlab/ref/polyfit.html
N = 1; % order of the desired polynominal. N=1 means a line
p = polyfit(x_foo,Y,N); %N=1 will fit a line
%plot
subplot(3,1,I)
plot(x_foo,Y,'o',x_foo,polyval(p,x_foo),'s');
legend('Data','Linear Fit');
end