假设在 MATLAB 中给定一个psi
长度为 的行向量P
和一个q
长度为 的行向量。这里, 。我想按以下方式组装:M
M>P
G
for j = 1:M
G(j) = q(j:min(j+P-1, M))*psi(1:min(M-j+1, P))';
end
对于较大的M
,P
这非常耗时。对于较大的 ,q
和 的大小psi
变化也很微妙j
。
例如:如果
M = 10;
P = 3;
psi = [1,2,3];
q = [4,7,9,3,1,5,3,2,2,6];
,那么G = [45, 34, 18, 20, 20, 17, 13, 24, 14, 6]
如果它是用上面的for循环生成的。
我无法将其矢量化,这也是由于 j 移动所致。当然,可以将其写为矩阵向量乘法,作为psi
向量,但组装正确的矩阵对我来说似乎同样昂贵。
我感谢任何形式的帮助。
这是一个互相关。您可以使用
xcorr
然后修剪结果,或者 pad 并让filter2
为您完成工作。我选择使用filter2
。由于您只想要前面的有效值和末尾的所有值,因此需要用零填充
q
末尾P - 1
。示例的结果: