gpt4 book ai didi

Matlab:将一个向量与许多其他向量进行卷积或相关

转载 作者:行者123 更新时间:2023-12-04 19:31:44 29 4
gpt4 key购买 nike

我有向量 y 和向量 x1,x2,...,x50。我需要将 y 与每个 x 向量进行关联或卷积。我目前正在 FOR 循环中执行此操作,但速度很慢,我正试图找到一种方法来一次完成它们。 This help page有一个关于与多个 channel 相关的部分(这似乎是我需要做的),但只谈论自相关。我曾尝试将 xcorr 函数与一个向量和一个矩阵(矩阵是并排的 x 向量)一起使用,但这不起作用。有什么提示吗?

谢谢。

最佳答案

不要使用,慢!

如果您的向量存储在元胞数组中,您可以使用cellfun:

y = [ ... ];
xs = { [ ... ], [ ... ], [ ... ] };

res = cellfun(@(x) xcorr(x,y), xs, 'UniformOutput', false);

res 现在是具有相关性的元胞数组。

这应该比 for 循环(未经测试)更快,因为不必解释循环。

您可以使用 mat2cell 将矩阵转换为向量元胞数组。

更新

测试:

xm = rand(n);
xc = mat2cell(xm, ones(n,1), n);
y = rand([n 1]);

tic
for i = 1:n
xcorr(y,xm(i,:));
end
toc

tic
cellfun(@(x) xcorr(x,y), xc, 'UniformOutput', false);
toc

对于 n = 5000

Elapsed time is 5.713080 seconds.
Elapsed time is 7.003739 seconds.

对于 n = 10000

Elapsed time is 15.283524 seconds.
Elapsed time is 18.009520 seconds.

所以确实更慢了。

关于Matlab:将一个向量与许多其他向量进行卷积或相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15693831/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com