假设在 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
也很敏感。
由于 j 移动,我无法对此进行矢量化。当然,可以将其写为矩阵向量乘法,其中
psi
为向量,但组装正确的矩阵对我来说几乎同样昂贵。
我感谢任何形式的帮助。
xcorr
然后修剪结果,或填充并让 filter2
为您完成工作。我选择使用filter2
。
由于您只需要前面的有效值以及末尾的所有值,因此您确实需要用
q
零填充 P - 1
的末尾。
qp = [q zeros(1, P-1)];
G_filt = filter2(psi, qp, 'valid');
G_filt =
Columns 1 through 16:
140 168 196 224 252 280 308 336 364 392 420 448 476 504 385 280
Columns 17 through 20:
190 116 59 20
您的示例的结果:
G =
Columns 1 through 16:
140 168 196 224 252 280 308 336 364 392 420 448 476 504 385 280
Columns 17 through 20:
190 116 59 20