【问题标题】:Correlation of curves using Matlab使用Matlab的曲线相关性
【发布时间】:2014-07-04 17:33:19
【问题描述】:

我有两组数据。它们每个都是一个矩阵,它们有两列,第一列代表索引 x,第二列代表 y。我想看看这些数据集的曲线有多相似。换句话说,我需要用两个矩阵表示这两条曲线的相关性。 感谢帮助。

【问题讨论】:

    标签: matlab


    【解决方案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?

    【讨论】:

    • 我使用的这两个矩阵有不同的行号。我可以使用不同行号的相关函数吗?
    • 让我再解释一下:在第一列中我有时间信息,在第二列中我有那个时间瞬间的某些值。结束时间是相同的,但是其中一个矩阵在时间段之间有更多信息,因此一个矩阵有更多行。它是这样的: A = [ 1 2 ; 2.3 5.6 ] B = [ 1 1.2 1.6 2; 2.4 2.6 4.8]。我想看看这些矩阵的结果曲线的相似性。
    猜你喜欢
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多