我有两组数据。它们中的每一个都是矩阵,它们有两列,第一列表示索引x,第二列表示y。我想看看这些数据集的曲线有多相似。换句话说,我需要将这两条曲线的相关性用两个矩阵表示。 感谢帮助。
答案 0 :(得分:1)
您可能正在寻找corr2函数,该函数计算矩阵中每个相应值的相关系数:
CorrMatrix = corr2(A,B)
plot(x,CorrMatrix);
这是你的意思吗?如果没有,请不要犹豫,询问更多细节。
对于大小不等的矩阵,我认为你只有这些选项:
如果您有信号处理工具箱,则可以使用互相关函数xcorr2,否则您可以执行以下操作:
1)要么计算数据的相关性,要么使用较大矩阵的一部分,以便元素的数量相似:(我使用的值实际上是虚拟值抱歉。)
clear
clc
% Create dummy matrices of unequal sizes
x =1:10;
x2 = 1:6;
A(:,1) = x;
A(:,2) = sin(x);
B(:,1) = x2;
B(:,2) = cos(x2);
A,B
C = corr2(A(1:6,:),B)
A =
1.0000 0.8415
2.0000 0.9093
3.0000 0.1411
4.0000 -0.7568
5.0000 -0.9589
6.0000 -0.2794
7.0000 0.6570
8.0000 0.9894
9.0000 0.4121
10.0000 -0.5440
B =
1.0000 0.5403
2.0000 -0.4161
3.0000 -0.9900
4.0000 -0.6536
5.0000 0.2837
6.0000 0.9602
C =
0.9463
或2)
经过一些谷歌搜索后,我看到这里发布了一个类似的问题,其中说你可以玩傅里叶变换来获得相关性:
Cross-correlation in matlab without using the inbuilt function?