首页 > 代码库 > 大毕设-MATLAB-常用知识回顾

大毕设-MATLAB-常用知识回顾

要用到FIR滤波器和抽样器下面研究这两个的Matlab实现:

Fir滤波器:

matlab上fir滤波器的关键字是fir1

在command窗口输入help fir1出现帮助文档:

>> help fir1
fir1 FIR filter design using the window method.                                              fir滤波器使用窗函数法设计
B = fir1(N,Wn) designs an N‘th order lowpass FIR digital filter                         B = fir1(N,Wn)这样是设计一个N阶低通滤波器
and returns the filter coefficients in length N+1 vector B.                                以一个N+1阶向量的形式返回滤波器系数
The cut-off frequency Wn must be between 0 < Wn < 1.0, with 1.0                截止频率Wn在0~1之间
corresponding to half the sample rate. The filter B is real and                          1.0表示截止频率为半 采样率

has linear phase. The normalized gain of the filter at Wn is                              这样得到的滤波器B是实且线性相位
-6 dB.                                                                                                        截止频率处的增益Wn是-6dB

B = fir1(N,Wn,‘high‘) designs an N‘th order highpass filter.                             B = fir1(N,Wn,‘high‘) 产生一个N阶高通滤波器
You can also use B = fir1(N,Wn,‘low‘) to design a lowpass filter.                      B = fir1(N,Wn,‘low‘) 可以产生N阶低通滤波器

If Wn is a two-element vector, Wn = [W1 W2], fir1 returns an                        如果Wn(Wn = [W1 W2])是二元向量,fir1函数返回一个N阶带通滤波器
order N bandpass filter with passband W1 < W < W2. You can                        通带是W1到W2, B = fir1(N,Wn,‘bandpass‘)用来产生带通滤波器

also specify B = fir1(N,Wn,‘bandpass‘). If Wn = [W1 W2],                              B = fir1(N,Wn,‘stop‘)产生带阻
B = fir1(N,Wn,‘stop‘) will design a bandstop filter.

If Wn is a multi-element vector,                                                                   如果Wn是一个多元向量


Wn = [W1 W2 W3 W4 W5 ... WN],                                                             例如Wn = [W1 W2 W3 W4 W5 ... WN], 
fir1 returns an order N multiband filter with bands                                         fir1函数产生一个多频带?滤波器
0 < W < W1, W1 < W < W2, ..., WN < W < 1.                                            0 < W < W1, W1 < W < W2, ..., WN < W < 1.                        
B = fir1(N,Wn,‘DC-1‘) makes the first band a passband.                                B = fir1(N,Wn,‘DC-1‘)表示第一个频带是通带
B = fir1(N,Wn,‘DC-0‘) makes the first band a stopband.                                B = fir1(N,Wn,‘DC-1‘)表示第一个频带是阻带

B = fir1(N,Wn,WIN) designs an N-th order FIR filter using                             B = fir1(N,Wn,WIN) ,WIN是长度为N+1的窗的向量,会产生一个N阶脉冲响应
the N+1 length vector WIN to window the impulse response.
If empty or omitted, fir1 uses a Hamming window of length N+1.                 如果没有参数WIN,fir1函数会默认使用长度为N+1的汉明窗
For a complete list of available windows, see the help for the                       查看窗函数了解更多WIN的知识
WINDOW function. KAISER and CHEBWIN can be specified with an              可以这样添加窗函数
optional trailing argument. For example, B = fir1(N,Wn,kaiser(N+1,4)) 
uses a Kaiser window with beta=4. B = fir1(N,Wn,‘high‘,chebwin(N+1,R))      
uses a Chebyshev window with R decibels of relative sidelobe
attenuation.

For filters with a gain other than zero at Fs/2, e.g., highpass    
and bandstop filters, N must be even. Otherwise, N will be    
incremented by one. In this case the window length should be
specified as N+2.

By default, the filter is scaled so the center of the first pass band
has magnitude exactly one after windowing. Use a trailing ‘noscale‘
argument to prevent this scaling, e.g. B = fir1(N,Wn,‘noscale‘),
B = fir1(N,Wn,‘high‘,‘noscale‘), B = fir1(N,Wn,wind,‘noscale‘). You
can also specify the scaling explicitly, e.g. fir1(N,Wn,‘scale‘), etc.

% Example 1:
% Design a 48th-order FIR bandpass filter with passband
% 0.35 <= w <= 0.65.

b = fir1(48,[0.35 0.65]); % Window-based FIR filter design
freqz(b,1,512) % Frequency response of filter

% Example 2:
% The chirp.mat file contains a signal, y, that has most of its power
% above fs/4, or half the Nyquist frequency. Design a 34th-order FIR
% highpass filter to attenuate the components of the signal below
% fs/4. Use a cutoff frequency of 0.48 and a Chebyshev window with
% 30 dB of ripple.

load chirp; % Load data (y and Fs) into workspace
y = y + 0.5*rand(size(y)); % Adding noise
b = fir1(34,0.48,‘high‘,chebwin(35,30)); % FIR filter design
freqz(b,1,512); % Frequency response of filter
output = filtfilt(b,1,y); % Zero-phase digital filtering
figure;
subplot(211); plot(y,‘b‘); title(‘Original Signal‘)
subplot(212); plot(output,‘g‘); title(‘Filtered Signal‘)

See also kaiserord, fircls1, fir2, firls, fircls, cfirpm,
firpm, freqz, filter, window, designfilt.

大毕设-MATLAB-常用知识回顾