Как я могу сделать свертку правильно во временной области, что эквивалентно умножению в частотной области - PullRequest
0 голосов
/ 12 апреля 2020

Как я могу выполнить свертку во временной области, которая эквивалентна умножению в частотной области?

Это мой код с объяснением:

 % Filter Initiliazation and implemention
fsamp = 2*48*10^6;
fsamp2 = 48;
fcut  = [9.6*10^6 11*10^6]; % Normilaze Frequnecies [0.1 0.114] Delta_f = [0.014?]
devs = [0.001 0.0008]; % Maximam Deviation in passband (0.009dB) and stopband (62dB)
mags = [1 0]; % Magnitude of passband and stopband
[N,Wn,beta,ftype] = kaiserord(fcut,mags,devs,fsamp); %get Kasier parameter estemation
N = N + rem(N,2); % To get Odd Filter 
h1 = fir1(N,Wn,ftype,kaiser(N+1,beta),'noscale');
x=[1,zeros(1,length(h)*2)];
H1= fft(h,1024); %Frequency Response

Я создал еще один фильтр в таким же образом, который генерирует h2 и H2. В области частот я создаю:

W1 = [ones(1,512),zeros(1,512)];
W2 = [zeros(1,512),ones(1,512)];

Теперь H3 будет равен:

H3 = H1.*W1+H2.*W2;

, поэтому для получения желаемого сигнала во временной области я могу рассчитать:

h3 = fft(H3);

Теперь я хочу избежать работы в частотной области и работать во временной области, поэтому после создания h1 и h2 я написал следующее:

w1 = ifft(W1);
w2 = ifft(W2);
h4 = conv(h1,real(w1)) + conv(h2,real(w2))

Я ожидаю, что h3 Моя оригинальная работа - быть сравнимой с h4. Я надеюсь, вы сможете помочь понять, что не так в моем алогрите.

...