【发布时间】:2017-02-22 13:10:50
【问题描述】:
我有两个矩阵 A(2*1600*3) 和 B(2*1600)。我正在尝试针对 B 中的每一行对 A 中的每一行进行 xcorr 操作,并希望将结果存储在矩阵中。目前我正在使用以下代码。
for ii=1:3
for jj=1:2
X(ii,jj)=max((xcorr(A(jj,:,ii),B(jj,:))));
end
end
因为我使用了两个 for 循环,所以它会消耗更多的时间,并且会影响我已经有一个 for 循环的整个程序的执行时间。如果没有两个 for 循环,我该如何做到这一点并将输出存储在矩阵中?
同时,我还用 cellfun 尝试了上面的代码,用于输出矩阵的单列。
`cellfun(@(x) max(xcorr(x, B(1,:))), A, 'UniformOutput', false);`
在我的观察中,for 循环比 cellfun 快得多。 执行次数: For 循环:两列矩阵输出为 2.4 秒。 Cellfun:一列矩阵输出需要 2.6 秒。
【问题讨论】:
标签: matlab correlation