【发布时间】:2018-10-10 10:15:59
【问题描述】:
我正在使用 Matlab 进行编码,但很想听听有关如何在其他语言中实现此功能的建议。
比如说我有一个 3D (m,n,t) 矩阵M。我想运行一个迭代 for 循环,它将循环遍历每个 i (1 : m) 和每个 j (1 : n),然后计算互相关t 表示循环中的当前 (i, j) 对,every 可能的 (i , j) 组合在矩阵中。因此,每个 (i, j) 总共有 n*m 个相关性。
我已经把它写成下面的一种伪代码,但想不出如何正确实现它。不幸的是,在 Matlab 中,“corrcoef”函数不允许您在函数本身内迭代 1:m、1:n。
任何帮助都会很棒!
M = randn(m,n,t);
Xcor_vals = zeros(m,n,m*n);
for i = 1:m
for j = 1:n
R = Xcor(M(i,j,:),M(1:m,1:n,:));
Xcor_vals(i,j,:) = R;
end
end
【问题讨论】:
-
那么,您有 2D 问题对吗?第三个维度是不必要的?
-
@AnderBiguri 我明白你的意思。我说 3D 是因为互相关关联了沿第三维的所有信息(在我的例子中是时间序列数据),但是为了这个问题,我猜它可以被认为是 2D。谢谢。
-
mm 不,那我没抓住重点。现在重新阅读我理解得更好。如果你想做这个“循环”,你需要嵌套 4 个 for 循环。 2 选择当前的
i,j和另一个 2 来遍历所有其他行/列而不是i,j
标签: python matlab for-loop multidimensional-array cross-correlation