1

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

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

4

1 回答 1

1

重塑您的数据,使其前三个维度折叠为一个(因此现在有 64*64*32 行和 90 列)。

然后使用pdist2(with 'correlation'option) 计算每一行与预期模式的相关性。

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

DATA2 = reshape(DATA, [],90);
corrImage = 1 - pdist2(DATA2, taskRef, 'correlation');
corrImage = reshape(corrImage, 64,64,32);
于 2014-03-17T17:09:50.273 回答