How to correctly apply dsp.FIRFilter

28 visualizaciones (últimos 30 días)
Kera Cai
Kera Cai el 3 de Abr. de 2024 a las 8:24
Comentada: Kera Cai el 15 de Abr. de 2024 a las 2:35
The code is simple:
N = 40;
fs = 20 * 10 ^ 9;
freq = [0, 1 * 10 ^ 9, 2 * 10 ^ 9, 3 * 10 ^ 9, 5 * 10 ^ 9, 7.5 * 10 ^ 9, 10 * 10 ^ 9]
mag = [1, 1, 1, 0.3, 0.1, 0.005, 0.001]
d = fdesign.arbmag('N,F,A', N, freq, mag, fs);
W = [1, 1, 1, 1, 1, 1, 1];
fir = design(d, 'equiripple', 'weights', W, 'SystemObject', true);
sents = ones(1, 300) * amplitude;
rcvds = fir(sents);
% plot
figure(1)
stem(sents)
hold on
stem(rcvds)
legend('sents', 'received')
By viewing freqz(fir), seems the filter is correctly designed, it's low pass:
But in the code I input a DC signal, the result does not seem to be correct, the output is almost 0.
Is the way I perform the filter wrong?
Seems I got correct result when apply the filter by function filter:
fir = fir.Numerator
rcvds = filter(fir, 1, sents)
figure(2)
stem(sents)
hold on
stem(rcvds)
legend('sents', 'received')
  1 comentario
Kera Cai
Kera Cai el 7 de Abr. de 2024 a las 2:06
I did not really get that. Static or time-varying FIR filter - MATLAB (mathworks.com), this page says to apply a dsp.FIRFilter object fir: y = fir(x) to get the output.

Iniciar sesión para comentar.

Respuesta aceptada

Paul
Paul el 7 de Abr. de 2024 a las 2:19
The input to fir() should be a column vector.
N = 40;
fs = 20 * 10 ^ 9;
freq = [0, 1 * 10 ^ 9, 2 * 10 ^ 9, 3 * 10 ^ 9, 5 * 10 ^ 9, 7.5 * 10 ^ 9, 10 * 10 ^ 9];
mag = [1, 1, 1, 0.3, 0.1, 0.005, 0.001];
d = fdesign.arbmag('N,F,A', N, freq, mag, fs);
W = [1, 1, 1, 1, 1, 1, 1];
fir = design(d, 'equiripple', 'weights', W, 'SystemObject', true);
sents = ones(1, 300);% * amplitude;
rcvds = fir(sents.');
% plot
figure(1)
stem(sents)
hold on
stem(rcvds)
legend('sents', 'received')

Más respuestas (0)

Categorías

Más información sobre Single-Rate Filters en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by