相关系数数据驱动方法可能吗?

时间:2014-03-17 16:58:46

标签: matlab data-driven

我有一个矩阵64x64x32x90,代表时间t的x,y,z像素。 我有一个参考信号1x90,它代表我在某个点(x,y,z)的像素所期望的行为。 我正在构建一个新图像,显示每个像素与我的参考之间的相关性。

load('DATA.mat');
ON = ones(1,10);
OFF = zeros(1,10);
taskRef = [OFF ON OFF ON OFF ON OFF ON OFF];

corrImage = zeros(64,64,36);
for i=1:64,
    for j=1:63,
        for k=1:36
            signal = squeeze(DATA(i,j,k,:));
            coef = corrcoef(signal',taskRef);
            corrImage(i,j,k) = coef(2);
        end
    end
end

我的过程太慢了。有没有办法摆脱我的循环或调整代码以获得更好的运行时间?

1 个答案:

答案 0 :(得分:1)

重塑您的数据,使其前三个维度合并为一个(所以现在有64 * 64 * 32行和90列)。

然后使用pdist2(带'correlation'选项)计算每行与预期模式的相关性。

最后,将结果重塑为所需的形状。

DATA2 = reshape(DATA, [],90);
corrImage = 1 - pdist2(DATA2, taskRef, 'correlation');
corrImage = reshape(corrImage, 64,64,32);