Matlab 相关系数数据驱动方法是否可行?

Matlab 相关系数数据驱动方法是否可行?,matlab,data-driven,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:6

我有一个矩阵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

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

重新调整数据的形状,使其前三个维度合并为一个维度(因此现在有64*64*32行和90列)

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

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

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

谢谢,这正是我要找的。@Mozly欢迎
pdist2
(和
pdist
)是一种非常通用的功能