首先,我有一个A
长度向量N
,通过过程
A1 = fft(A,N);
A2 = Filter(A1);
A3 = ifft(A2,N);
现在,我需要计算向量A2
与向量的卷积B
,向量B
是另一个包含N
元素的向量,我注意到似乎我可以使用
ifft(fft(A3,2N).*fft(B,2N))
计算卷积。表示用零fft(A3,2N)
填充。A3
N
事实上,A2 = fft(A3,N)
那么,问题是我该怎么做才能避免使用 A2 计算 A3 和 fft(A3)?
或者问题是我如何使用 A2 来计算 fft(A3,2N)?我想知道我是否可以减少整个过程中的一些计算。谢谢。
这是一个matlab测试
clear;
N = 4;
A = 1:4;
B = 3:6;
A1 = fft(A);
A2 = (A1).*2020+1234;%filter(no sense)
A3 = ifft(A2);
A4 = fft(A3,2*N);
B2 = fft(B,2*N);
x = xcorr(A3,B)%ans: 0.1952 0.4051 0.6958 1.0470 0.7676 0.5050 0.2424
x2 = ifft(A4.*conj(B2),2*N)%ans: 1.0470 0.7676 0.5050 0.2424 0 0.1952 0.4051 0.6958
x3 = ifft([A2(1:N/2) A2(N/2+1)/2 zeros(1, 2*N-length(A2)-1) A2(N/2+1)/2 A2(N/2+2:end)].*conj(B2),2*N)
%ans: 3.5624 4.2973 5.4391 6.3191 6.2232 5.2077 4.0659 3.4665