This example shows how to design a variety of FIR and IIR digital filters with thedesignfilt
function in the Signal Processing Toolbox® product.
The gallery is designed for you to identify a filter response of interest, view the code, and use it in your own project. It contains examples for each of the available filter responses offered bydesignfilt
. Note, however, that these are only a few of the possible ways in which you can design filters for each response type. For an exhaustive list of specification sets, see the Signal Processing Toolbox documentation.
Except when noted otherwise, in this example all frequency units are in hertz, and all ripple and attenuation values are in decibels.
平等设计
fpass = 100;fstop = 150;Apass = 1;astop = 65;FS = 1E3;d = designfilt('lowpassfir',...'Passband职业',馈送,'StopbandFrequency',Fstop,...'PassbandRipple',Apass,'stopbandattenuation',Astop,...'DesignMethod','equiripple','SampleRate',fs);FVTool(D)
Maximally Flat Design
fpass = 100;fstop = 150;Apass = 0.5;astop = 65;FS = 1E3;d = designfilt('洛链',...'Passband职业',馈送,'StopbandFrequency',Fstop,...'PassbandRipple',Apass,'stopbandattenuation',Astop,...'DesignMethod','牛油','SampleRate',fs);FVTool(D)
通带和停机带的波纹
n = 8;fpass = 100;Apass = 0.5;astop = 65;FS = 1E3;d = designfilt('洛链',...'FilterOrder',N,...'Passband职业',馈送,...'PassbandRipple',Apass,'stopbandattenuation',Astop,...'SampleRate',fs);FVTool(D)
平等设计
Fstop = 350; Fpass = 400; Astop = 65; Apass = 0.5; Fs = 1e3; d = designfilt('highpassfir','StopbandFrequency',Fstop,...'Passband职业',馈送,'stopbandattenuation',Astop,...'PassbandRipple',Apass,'SampleRate',Fs,'DesignMethod','equiripple');FVTool(D)
Maximally Flat Design
Fstop = 350; Fpass = 400; Astop = 65; Apass = 0.5; Fs = 1e3; d = designfilt('highpassiir','StopbandFrequency',fstop,...'Passband职业',馈送,'stopbandattenuation',Astop,...'PassbandRipple',Apass,'SampleRate',Fs,'DesignMethod','牛油');FVTool(D)
通带和停机带的波纹
n = 8;Fpass = 400; Astop = 65; Apass = 0.5; Fs = 1e3; d = designfilt('highpassiir',...'FilterOrder',N,...'Passband职业',馈送,...'stopbandattenuation',Astop,'PassbandRipple',Apass,...'SampleRate',fs);FVTool(D)
平等设计
fstop1 = 150;Fpass1 = 200; Fpass2 = 300; Fstop2 = 350; Astop1 = 65; Apass = 0.5; Astop2 = 65; Fs = 1e3; d = designfilt('bandpassfir',...'stopbandfrequency1',fstop1,'PassbandFrequency1', Fpass1,...'passbandfrequency2'',Fpass2,'stopbandfrequency2', Fstop2,...'stopbandattenuation1',Astop1,'PassbandRipple', 通过,...'StopbandAttenuation2',Astop2,...'DesignMethod','equiripple','SampleRate',fs);FVTool(D)
Asymmetric Band Attenuations
N = 50; Fstop1 = 150; Fpass1 = 200; Fpass2 = 300; Fstop2 = 350; Wstop1 = 3; Wstop2 = 100; Fs = 1e3; d = designfilt('bandpassfir',...'FilterOrder',N,...'stopbandfrequency1',fstop1,'PassbandFrequency1', Fpass1,...'passbandfrequency2'',Fpass2,'stopbandfrequency2', Fstop2,...'StopbandWeight1',Wstop1,'StopbandWeight2',Wstop2,...'DesignMethod','equiripple','SampleRate',fs);FVTool(D)
Maximally Flat Design
fstop1 = 150;Fpass1 = 200; Fpass2 = 300; Fstop2 = 350; Astop1 = 65; Apass = 0.5; Astop2 = 65; Fs = 1e3; d = designfilt('bandpassiir',...'stopbandfrequency1',fstop1,'PassbandFrequency1', Fpass1,...'passbandfrequency2'',Fpass2,'stopbandfrequency2', Fstop2,...'stopbandattenuation1',Astop1,'PassbandRipple', 通过,...'StopbandAttenuation2',Astop2,...'DesignMethod','牛油','SampleRate', Fs); fvtool(d)
通带和停机带的波纹
n = 8;Fpass1 = 200; Fpass2 = 300; Astop1 = 65; Apass = 0.5; Astop2 = 65; Fs = 1e3; d = designfilt('bandpassiir',...'FilterOrder',N,...'PassbandFrequency1', Fpass1,'passbandfrequency2'', Fpass2,...'stopbandattenuation1', Astop1,'PassbandRipple', 通过,...'StopbandAttenuation2', Astop2,...'SampleRate', Fs); fvtool(d)
平等设计
fpass1 = 100;fstop1 = 150;fstop2 = 350;fpass2 = 400;Apass1 = 0.5; Astop = 65; Apass2 = 0.5; Fs = 1e3; d = designfilt('bandstopfir',...'PassbandFrequency1',Fpass1,'stopbandfrequency1',fstop1,...'stopbandfrequency2',fstop2,'passbandfrequency2'',Fpass2,...'PassbandRipple1',Apass1,'stopbandattenuation',Astop,...'PassbandRipple2', Apass2,...'DesignMethod','equiripple','SampleRate', Fs); fvtool(d)
不对称通带涟漪
n = 30;fpass1 = 100;fstop1 = 150;fstop2 = 350;fpass2 = 400;wpass1 = 1;wpass2 = 10;FS = 1E3;d = designfilt('bandstopfir',...'FilterOrder',N,...'PassbandFrequency1',Fpass1,'stopbandfrequency1',fstop1,...'stopbandfrequency2',fstop2,'passbandfrequency2'',Fpass2,...'passbandweight1',Wpass1,'passbandweight2',Wpass2,...'DesignMethod','equiripple','SampleRate', Fs); fvtool(d)
Maximally Flat Design
fpass1 = 100;fstop1 = 150;fstop2 = 350;fpass2 = 400;Apass1 = 0.5; Astop = 65; Apass2 = 0.5; Fs = 1e3; d = designfilt('bandstopiir',...'PassbandFrequency1',Fpass1,'stopbandfrequency1',fstop1,...'stopbandfrequency2',fstop2,'passbandfrequency2'',Fpass2,...'PassbandRipple1',Apass1,'stopbandattenuation',Astop,...'PassbandRipple2', Apass2,...'DesignMethod','牛油','SampleRate', Fs); fvtool(d)
通带和停机带的波纹
n = 8;fpass1 = 125;fpass2 = 375;Apass = 0.5;astop = 65;FS = 1E3;d = designfilt('bandstopiir',...'FilterOrder',N,...'PassbandFrequency1',Fpass1,'passbandfrequency2'',Fpass2,...'PassbandRipple',Apass,'stopbandattenuation',astop,...'SampleRate',fs);FVTool(D)
Single-Band Arbitrary Magnitude Design
N = 300;% Frequencies are in normalized unitsF1 = 0:0.01:0.18;f2 = [.2 .38 .4 .55 .562 .585 .78];F3 = 0.79:0.01:1;freqvect = [f1 f2 f3];% vector of frequencies% Define desired response using linear unitsA1 = .5 + SIN(2 * PI * 7.5 * F1)/ 4;% Sinusoidal sectionA2 = [.5 2.3 1 1 -.2 -.2 1 1];%分段线性部分A3 = .2 + 18 *(1-F3)。^ 2;%二次部分AmpVect = [A1 A2 A3];d = designfilt('arbmagfir',...'FilterOrder',N,'Amplitudes',安瓿,'频率',FreqVect,...'DesignMethod','freqsamp');FVTool(D,'MagnitudeDisplay','Zero-phase')
Multiband Lowpass Design with Stepped Attenuation Levels on Stopband
n = 150;B = 2;频段数量% Frequencies are in normalized unitsF1 = [0 .25];%通频带F2 = [.3 .4 .401 .5 .501 .6 .601 .7 .701 .8 .801 .9 .901 1];%stopband.A1 = ones(size(F1));% Desired amplitudes for band 1 in linear unitsA2 = zeros(size(F2));线性单元中带2的%期望幅度%载体的重量W = 10.^([0 0 5 5 10 10 15 15 20 20 25 25 30 30 35 35]/20); W1 = W(1:2);% Weights for band 1w2 = w(3:结束);% Weights for band 2d = designfilt('arbmagfir',...'FilterOrder',N,'numbands',B,...'BandFrequencies1',F1,'BandAmplitudes1',A1,...'BandFrequencies2',F2,'BandAmplitudes2',A2,...'Bandweights1',W1,'bandweights2', W2); fvtool(d)
Full Band Design
N = 41; Fs = 1e3; d = designfilt('differentiatorfir',...'FilterOrder',N,'DesignMethod','equiripple','SampleRate',fs);FVTool(D,'MagnitudeDisplay','zero-phase','OverlayedAnalysis','phase')
Partial Band Design
n = 40;fpass = 100;fstop = 150;FS = 1E3;d = designfilt('differentiatorfir',...'FilterOrder',N,...'Passband职业',馈送,'StopbandFrequency',Fstop,...'DesignMethod','equiripple','SampleRate',fs);FVTool(D,'MagnitudeDisplay','zero-phase','OverlayedAnalysis','phase')
平等设计
n = 40;tw = 50;FS = 1E3;d = designfilt('hilbertfir',...'FilterOrder',N,'transitionwidth',Tw,...'DesignMethod','equiripple','SampleRate',fs);FVTool(D,'MagnitudeDisplay','Zero-phase','OverlayedAnalysis','phase')