mirroring a magnitude response of a filter from -1 to 1

9 views (last 30 days)
Aly Khafagy
Aly Khafagy on 7 May 2022
Answered: Paul on 7 May 2022
This code shows the FIR filter magnitude response with the normalized frequency through interval from [0 to pi] in a figure, my question is how i can make mirroring of this magnitude response to start through interval from [-pi to pi] ??
clc;
close all;
clear all;
n1= 15; %order
Fs= 100; %sampling frequency
fc= Fs/4; %cutoff frequency
%nyq_f= Fs/2; %normalize cutoff frequency wrt to nyquist freq
%wn= fc/nyq_f; %normalized fc
wc= (2*pi*fc)/Fs;
wn= wc/pi;
%window= hamming(n+1)
H1= fir1(n1,wn,hamming(n1+1));
h1= freqz(H1); %frequency response
f1= linspace(0,Fs/2,512);
w1= (2*pi*f1)/Fs;
w= w1/pi;
plot (w, abs(h1))
axis([0 1 -0.1 1.1])

Accepted Answer

Jonas
Jonas on 7 May 2022
Edited: Jonas on 7 May 2022
use
plot([-w(end:-1:2) w],abs([h1(end:-1:2); h1]))
i mirror only down to index 2 because index 1 is the 0 Hz component, which is already available before

More Answers (1)

Paul
Paul on 7 May 2022
freqz() takes a third input that allows you to specify the frequency vector.
n1= 15; %order
Fs= 100; %sampling frequency
fc= Fs/4; %cutoff frequency
%nyq_f= Fs/2; %normalize cutoff frequency wrt to nyquist freq
%wn= fc/nyq_f; %normalized fc
wc= (2*pi*fc)/Fs;
wn= wc/pi;
%window= hamming(n+1)
H1= fir1(n1,wn,hamming(n1+1));
figure
freqz(H1);
wvec = linspace(-pi,pi,1024);
h1= freqz(H1,1,wvec); %frequency response
figure
plot (wvec, db(abs(h1))),grid
xlim([-pi pi])
ylim([-100 0])

Tags

Community Treasure Hunt

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

Start Hunting!