【DSP教程】第36章 FIR滤波器的Matlab设计(含低通,高通,带通和带阻)

article/2025/10/22 18:23:51

完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547

第36章       FIR滤波器的Matlab设计(含低通,高通,带通和带阻)

本章节讲解FIR滤波器的Matlab设计。主要是函数fir1和fir2的使用。

目录

36.1 窗函数

36.2 fir1函数

36.2.1 fir1函数介绍

36.2.2 fir1设计低通滤波器实例

36.2.3 fir1设计高通滤波器实例

36.2.4 fir1设计带通滤波器实例

36.2.5 fir1设计带阻滤波器实例

36.2.6 切比雪夫窗口函数设计带通滤波器实例

36.3 fir2函数

36.3.1 fir2函数介绍

36.3.2 fir2设计低通滤波器

36.4 总结


36.1 窗函数

在数字信号处理中不可避免地要用到数据截取的问题。例如,在应用DFT的时候,数据x(n)总是有限长的,在滤波器设计中遇到了对理想滤波器抽样响应h(n)的截取问题,在功率谱估计中也要遇到对自相关函数的截取问题。总之,我们在实际工作中所能处理的离散序列总是有限长,把一个长序列变换成有限长的序列不可避免的要用到窗函数。因此,窗函数本身的研究及其应用是信号处理中的一个基本问题。

不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)。

对于窗函数的选择,应考虑被分析信号的性质与处理要求。如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用主瓣宽度比较窄而便于分辨的矩形窗,例如测量物体的自振频率等;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。

  •  矩形窗:

矩形窗属于时间变量的零次幂窗。矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。

  •  三角窗:

三角窗亦称费杰(Fejer)窗,是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。

  •  汉宁窗:

汉宁窗又称升余弦窗,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了 π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。可以看出,汉宁窗主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。

  •  海明窗:

海明窗也是余弦窗的一种,又称改进的升余弦窗。海明窗与汉宁窗都是余弦窗,只是加权系数不同。海明窗加权的系数能使旁瓣达到更小。分析表明,海明窗的第一旁瓣衰减为一42dB.海明窗的频谱也是由3个矩形时窗的频谱合成,但其旁瓣衰减速度为20dB/(10oct),这比汉宁窗衰减速度慢。海明窗与汉宁窗都是很有用的窗函数。

  •  高斯窗:

三角窗亦称费杰(Fejer)窗,是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。

还有很多其它的窗口这里就不做介绍了,需更详细的了解的话,可以看matlab中help文档中的如下部分:

 

或者直接在命令窗口输入windowDesigner可以打开窗口工具:

 

 

打开后界面如下:

36.2 fir1函数

36.2.1 fir1函数介绍

函数fir1用来设计标准频率响应的基于窗函数的FIR滤波器,可实现加窗线性相位FIR滤波器设计。

语法:

b = fir1(n,Wn)

b = fir1(n,Wn,'ftype')

b = fir1(n,Wn,window)

b = fir1(n,Wn,'ftype',window)

b = fir1(...,'normalization')

其中,n:为了滤波器的阶数;

Wn:为滤波器的截止频率;

ftype:参数用来决定滤波器的类型,当ftype=high时,可设计高通滤波器,当ftype=stop时,可设计带阻滤波器。Window参数用来指导滤波器采用的窗函数类型。其默认值为汉明(Hamming)窗。

使用fir1函数可设计标准的低通,高通,带通和带阻滤波器。滤波器的系数包含在返回值b中,可表示为:

b(z) = b(1) + b(2)z-1 + …… +b(n+1)z-n

(1)  采用汉明窗设计低通FIR滤波器

使用b=fir1(n, Wn)可得到低通滤波器。其中, 0<=Wn<=1, Wn=1相当于0.5。其语法格式为

b=fir1(n, Wn)

(2)  采用汉明窗设计高通FIR滤波器

在b=fir1(n, Wn, 'ftype')中,当ftype=high时,可设计高通滤波器。其语法格式为

b=fir1(n, Wn, 'high')

(3)  采用汉明窗设计带通FIR滤波器

在b=fir1(n, Wn)中,当Wn=[W1  W2]时,fir1函数可得到带通滤波器,其通带为W1 < W < W2

W1 和 W2分别为通带的下限频率和上限频率。其语法格式为

b=fir1(n, [W1  W2])

(4)  采用汉明窗设计带阻FIR滤波器

在b = fir1(n,Wn,'ftype')中,当ftype=stop,Wn=[W1  W2]时,fir1函数可得到带阻滤波器,其语法格式为

b=fir1(n,  [W1  W2], 'stop')

(5)  采用其他窗口函数设计FIR滤波器

使用Window参数,可以用其他窗口函数设计出各种加窗滤波器,Window参数可采用的窗口函数有Boxcar,Hamming,Bartlett,Blackman,Kasier和Chebwin等。其默认时为Hamming窗。例如,采用Bartlett窗设计带阻滤波器,其语法结构为

b=fir1(n, [W1  W2], 'stop', Bartlett[n+1])

注意:用fir1函数设计高通和带阻滤波器时,所使用的阶数n应为偶数,当输入的阶数n为奇数时,fir1函数会自动将阶数增加1形成偶数。

36.2.2 fir1设计低通滤波器实例

下面我们通过一个实例来讲解fir1的用法。原始信号是由50Hz正弦波和200Hz的正弦波组成,将200Hz的正弦波当做噪声滤掉,下面通过函数fir1设计一组低通滤波器系数,其阶数是30,截止频率为0.25(也就是125Hz)。Matlab运行代码如下:

%****************************************************************************************
%                             FIR低通滤波器设计
%***************************************************************************************
fs=1000;                %设置采样频率 1k
N=1024;                %采样点数      
n=0:N-1;
t=0:1/fs:1-1/fs;          %时间序列
f=n*fs/N;               %频率序列Signal_Original=sin(2*pi*50*t);      %信号50Hz正弦波
Signal_Noise=sin(2*pi*200*t);      %噪声200Hz正弦波Mix_Signal=Signal_Original+Signal_Noise;  %将信号Signal_Original和Signal_Original合成一个信号进行采样               
subplot(221);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;subplot(222);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT   
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;b = fir1(30, 0.25);       %30阶FIR低通滤波器,截止频率125Hz
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x);           %经过FIR滤波器后得到的信号
Ps=sum(Signal_Original.^2);          %信号的总功率
Pu=sum((y2-Signal_Original).^2);     %剩余噪声的功率
SNR=10*log10(Ps/Pu);               %信噪比y3=fft(y2, N);            %经过FIR滤波器后得到的信号做FFT
subplot(223);                               
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号FFT');
grid on;[H,F]=freqz(b,1,512);        %通过fir1设计的FIR系统的频率响应
subplot(224);
plot(F/pi,abs(H));           %绘制幅频响应
xlabel('归一化频率');        
title(['Order=',int2str(30),'    SNR=',num2str(SNR)]);
grid on;

Matlab的运行结果如下:

从运行结果的FFT和信噪比来看,滤波效果比较明显。

36.2.3 fir1设计高通滤波器实例

下面我们通过一个实例来讲解fir1的高通滤波器的用法。原始信号是由50Hz正弦波和200Hz的正弦波组成,将50Hz的正弦波当做噪声滤掉,下面通过函数fir1设计一组高通滤波器系数,其阶数是30,截止频率为0.25(也就是125Hz)。Matlab运行代码如下:

%****************************************************************************************
%                             FIR高通滤波器设计
%***************************************************************************************
fs=1000;                 %设置采样频率 1k
N=1024;                 %采样点数      
n=0:N-1;
t=0:1/fs:1-1/fs;           %时间序列
f=n*fs/N;                %频率序列Signal_Original=sin(2*pi*200*t);   %信号200Hz正弦波
Signal_Noise=sin(2*pi*50*t);      %噪声50Hz正弦波Mix_Signal=Signal_Original+Signal_Noise;      %将信号Signal_Original和Signal_Original合成一个信号进行采样               
subplot(221);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;subplot(222);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT   
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;b = fir1(30, 0.25, 'high');   %30阶FIR低通滤波器,截止频率125Hz
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x);           %经过FIR滤波器后得到的信号
Ps=sum(Signal_Original.^2);           %信号的总功率
Pu=sum((y2-Signal_Original).^2);       %剩余噪声的功率
SNR=10*log10(Ps/Pu);                 %信噪比y3=fft(y2, N);            %经过FIR滤波器后得到的信号做FFT
subplot(223);                               
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号FFT');
grid on;[H,F]=freqz(b,1,512);        %通过fir1设计的FIR系统的频率响应
subplot(224);
plot(F/pi,abs(H));            %绘制幅频响应
xlabel('归一化频率');        
title(['Order=',int2str(30),' SNR=',num2str(SNR)]);
grid on;

Matlab的运行结果如下:

从运行结果的FFT和信噪比来看,滤波效果比较明显。

36.2.4 fir1设计带通滤波器实例

下面我们通过一个实例来讲解fir1的带通滤波器的用法。原始信号是由50Hz正弦波和200Hz的正弦波组成,设计通带为125Hz到300Hz,下面通过函数fir1设计一组带通滤波器系数,其阶数是30,通带为0.25 < W <0.6。Matlab运行代码如下:

%****************************************************************************************
%                             FIR带通滤波器设计
%***************************************************************************************
fs=1000;                 %设置采样频率 1k
N=1024;                 %采样点数      
n=0:N-1;
t=0:1/fs:1-1/fs;           %时间序列
f=n*fs/N;                %频率序列Signal_Original=sin(2*pi*200*t);     %信号200Hz正弦波
Signal_Noise=sin(2*pi*50*t);        %噪声50Hz正弦波Mix_Signal=Signal_Original+Signal_Noise;      %将信号Signal_Original和Signal_Original合成一个信号进行采样               
subplot(221);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;subplot(222);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT   
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;b = fir1(30, [0.25 0.6]);   %30阶FIR低通滤波器,截止频率125Hz
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x);           %经过FIR滤波器后得到的信号
Ps=sum(Signal_Original.^2);           %信号的总功率
Pu=sum((y2-Signal_Original).^2);       %剩余噪声的功率
SNR=10*log10(Ps/Pu);                 %信噪比y3=fft(y2, N);            %经过FIR滤波器后得到的信号做FFT
subplot(223);                               
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号FFT');
grid on;[H,F]=freqz(b,1,512);        %通过fir1设计的FIR系统的频率响应
subplot(224);
plot(F/pi,abs(H));            %绘制幅频响应
xlabel('归一化频率');        
title(['Order=',int2str(30),' SNR=',num2str(SNR)]);
grid on;

Matlab运行结果如下:

 

从运行结果的FFT和信噪比来看,滤波效果比较明显。

36.2.5 fir1设计带阻滤波器实例

下面我们通过一个实例来讲解fir1的带阻滤波器的用法。原始信号是由50Hz正弦波和200Hz的正弦波组成,设计阻带为125Hz到300Hz,下面通过函数fir1设计一组带阻滤波器系数,其阶数是30,阻带为0.25 < W <0.6。Matlab运行代码如下:

%****************************************************************************************
%                             FIR带阻滤波器设计
%***************************************************************************************
fs=1000;                 %设置采样频率 1k
N=1024;                 %采样点数      
n=0:N-1;
t=0:1/fs:1-1/fs;           %时间序列
f=n*fs/N;                %频率序列Signal_Original=sin(2*pi*50*t);     %信号50Hz正弦波
Signal_Noise=sin(2*pi*200*t);      %噪声200Hz正弦波Mix_Signal=Signal_Original+Signal_Noise;      %将信号Signal_Original和Signal_Original合成一个信号进行采样               
subplot(221);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;subplot(222);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT   
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;b = fir1(30, [0.25 0.6], 'stop');   %30阶FIR低通滤波器,截止频率125Hz
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x);               %经过FIR滤波器后得到的信号
Ps=sum(Signal_Original.^2);   %信号的总功率
Pu=sum((y2-Signal_Original).^2);     %剩余噪声的功率
SNR=10*log10(Ps/Pu);               %信噪比y3=fft(y2, N);            %经过FIR滤波器后得到的信号做FFT
subplot(223);                               
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号FFT');
grid on;[H,F]=freqz(b,1,512);        %通过fir1设计的FIR系统的频率响应
subplot(224);
plot(F/pi,abs(H));            %绘制幅频响应
xlabel('归一化频率');        
title(['Order=',int2str(30),' SNR=',num2str(SNR)]);
grid on;

Matlab运行结果如下:

从运行结果的FFT和信噪比来看,滤波效果比较明显。

36.2.6 切比雪夫窗口函数设计带通滤波器实例

下面我们通过一个实例来讲解fir1设计切比雪夫窗口的的带通滤波器。原始信号是由50Hz正弦波和200Hz的正弦波组成,设计通带为125Hz到300Hz,下面通过函数fir1设计一组带通滤波器系数,其阶数是30,通带为0.25 < W <0.6,并且具有25db波纹的切比雪夫窗。Matlab运行代码如下:

%****************************************************************************************
%                             切比雪夫窗口函数设计带通滤波器
%***************************************************************************************
fs=1000;                 %设置采样频率 1k
N=1024;                 %采样点数      
n=0:N-1;
t=0:1/fs:1-1/fs;           %时间序列
f=n*fs/N;                %频率序列Signal_Original=sin(2*pi*200*t);     %信号200Hz正弦波
Signal_Noise=sin(2*pi*50*t);      %噪声50Hz正弦波Mix_Signal=Signal_Original+Signal_Noise;      %将信号Signal_Original和Signal_Original合成一个信号进行采样               
subplot(221);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;subplot(222);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT   
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;Window = chebwin(31, 25);           %25db的切比雪夫窗
b = fir1(30, [0.25 0.6], Window);   %30阶FIR低通滤波器,截止频率125Hz
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x);           %经过FIR滤波器后得到的信号
Ps=sum(Signal_Original.^2);           %信号的总功率
Pu=sum((y2-Signal_Original).^2);       %剩余噪声的功率
SNR=10*log10(Ps/Pu);                 %信噪比y3=fft(y2, N);            %经过FIR滤波器后得到的信号做FFT
subplot(223);                               
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号FFT');
grid on;[H,F]=freqz(b,1,512);        %通过fir1设计的FIR系统的频率响应
subplot(224);
plot(F/pi,abs(H));            %绘制幅频响应
xlabel('归一化频率');        
title(['Order=',int2str(30),' SNR=',num2str(SNR)]);
grid on;

Matlab运行结果如下:

 

通过归一化频率可以看出切比雪夫窗口是有一定纹波的。不过从FFT结果和信噪比来看,通过切比雪夫窗口做的滤波效果也是比较明显的。

36.3 fir2函数

36.3.1 fir2函数介绍

函数fir2用来设计有任意频率响应的各种加窗FIR滤波器。

语法:

b = fir2(n,f,m)

b = fir2(n,f,m,window)

b = fir2(n,f,m,npt)

b = fir2(n,f,m,npt,window)

b = fir2(n,f,m,npt,lap)

b = fir2(n,f,m,npt,lap,window)

参数n为滤波器的阶数。

参数f为频率点矢量,且f[0, 1], f=1对应于0.5fs。矢量f按升序排列,且第一个元素必须为0,最后一个必须为1,并可以包含重复的频率点。

参数m为幅度点矢量,在矢量m中包含了与f相对应的期望得到的滤波器幅度。

参数Window用来指导所使用的窗函数类型,其默认值为汉明窗。

参数npt用来指定fir2函数对频率响应进行内插的点数。

参数lap用来指定fir2函数在重复频率点附近插入的区域大小。

36.3.2 fir2设计低通滤波器

fir2函数是用来设计任意频率响应的各种加窗FIR滤波器,此函数使用也比较简单,但是要采样的频率点和幅值不好把握,关于这个函数我们仅提供一个低通滤波器的设计。

原始信号是由50Hz正弦波和200Hz的正弦波组成,将200Hz的正弦波当做噪声滤掉,下面通过函数fir2进行设计。其中频率点矢量和幅度点矢量配置如下:

F = [0 0.1  0.2  0.3  0.4 0.5  0.6  0.7  0.8  1];

A = [1  1  1    1     0 0    0   0    0    0];  

Matlab运行的代码如下:

%****************************************************************************************
%                            fir2设计低通滤波器
%***************************************************************************************
fs=1000;                 %设置采样频率 1k
N=1024;                 %采样点数      
n=0:N-1;
t=0:1/fs:1-1/fs;           %时间序列
f=n*fs/N;                %频率序列Signal_Original=sin(2*pi*50*t);     %信号50Hz正弦波
Signal_Noise=sin(2*pi*200*t);      %噪声200Hz正弦波Mix_Signal=Signal_Original+Signal_Noise;      %将信号Signal_Original和Signal_Original合成一个信号进行采样               
subplot(221);
plot(t, Mix_Signal);   %绘制信号Mix_Signal的波形                                                 
xlabel('时间');
ylabel('幅值');
title('原始信号');
grid on;subplot(222);
y=fft(Mix_Signal, N);     %对信号 Mix_Signal做FFT   
plot(f,abs(y));
xlabel('频率/Hz');
ylabel('振幅');
title('原始信号FFT');
grid on;F = [0 0.1  0.2  0.3  0.4 0.5  0.6  0.7  0.8  1];  %表示要采样的点
A = [1  1     1     1     0    0     0     0     0     0];   %表示采样点的幅值
b = fir2(30, F, A);   %30阶FIR低通滤波器
%y2= filter(b, 1, x);
y2=filtfilt(b,1,x);           %经过FIR滤波器后得到的信号
Ps=sum(Signal_Original.^2);           %信号的总功率
Pu=sum((y2-Signal_Original).^2);       %剩余噪声的功率
SNR=10*log10(Ps/Pu);                 %信噪比y3=fft(y2, N);            %经过FIR滤波器后得到的信号做FFT
subplot(223);                               
plot(f,abs(y3));
xlabel('频率/Hz');
ylabel('振幅');
title('滤波后信号FFT');
grid on;[H,F]=freqz(b,1,512);        %通过fir1设计的FIR系统的频率响应
subplot(224);
plot(F/pi,abs(H));            %绘制幅频响应
xlabel('归一化频率');        
title(['Order=',int2str(30),' SNR=',num2str(SNR)]);
grid on;

Matlab运行结果如下:

从FFT结果和信噪比来看,fir2任意滤波器设计效果也是比较明显的。

36.4 总结

本章节主要讲解了函数fir1和函数fir2的使用,想深入的掌握这两个函数,还需要大家多多练习。


http://chatgpt.dhexx.cn/article/PjHfQ3O8.shtml

相关文章

1.巴特沃斯模拟滤波器(低通,高通,带通,带阻)设计-MATLAB实现

本文是模拟滤波器设计&#xff0c;如果需要了解数字滤波器的内容&#xff0c;可以按顺序看我写的另外两篇博客&#xff0c;如下&#xff1a; 2.MATLAB实现无限脉冲响应数字滤波器&#xff08;IIR&#xff09; 3.MATLAB实现有限脉冲响应数字滤波器&#xff08;FIR&#xff09;…

matlab设计模拟带通滤波器

简单记录下在matlab上如何设计出模拟的带通滤波器&#xff0c;包括&#xff1a;巴特沃斯滤波器、切比雪夫I型滤波器、切比雪夫II型滤波器、椭圆型滤波器。 代码如下&#xff1a; %设计带通滤波器 %巴特沃斯、切比雪夫I型、切比雪夫II型、椭圆型滤波器clear all;%wp和ws分别是通…

学习如何在matlab用带通滤波器进行滤波

如何在matlab用带通滤波器进行滤波&#xff1f; 主要内容是在知乎上看到的一篇文章 链接: https://zhuanlan.zhihu.com/p/152647067?from_voters_pagetrue.可以直接看这篇文章。 以带通滤波器——巴特沃斯滤波器为例 matlab给出的代码如下&#xff1a;[n,Wn] buttord(Wp,W…

matlab设计低通滤波器

matlab设计低通滤波器 文章目录 matlab设计低通滤波器 前言一、什么是滤波器&#xff1f;二、滤波器的技术指标三、滤波器的分类四、巴特沃斯低通滤波器设计1.输入信号设置2.设计滤波器3.滤波器输出信号 五、采用ADI公司的滤波器向导设计滤波器 前言 例如&#xff1a;随着人工…

matlab实现低通、高通、带通、带阻滤波

MATLAB滤波常用函数 模拟滤波器阶数选择函数 buttord 功能&#xff1a;计算butterworth模拟滤波器的阶数 调用格式&#xff1a; [n,Wn]buttord(Wp,Ws,Rp,Rs,s); % 参数中的n是求出模拟滤波器最小的阶数&#xff0c;Wn是等效低通滤波器的截止频率&#xff1b;Wp和Ws分别是通…

matlab制作数字滤波器(带通滤波器)

一、目的 使用matlab中自带的工具fdatool制作带通滤波器&#xff0c;对数据进行滤波。 二、过程 如图&#xff0c;使用该工具制作了一个带通滤波器&#xff0c;频率为130-180Hz&#xff0c;使用汉明窗截短&#xff0c;滤波器的阶数为250。 滤波器的冲击响应如下图 将生成的滤…

matlab实现带通滤波

以带通滤波器——巴特沃斯滤波器为例 matlab给出的代码如下&#xff1a;[n,Wn] buttord(Wp,Ws,Rp,Rs) 首先要先理解一个带通滤波器的幅频特性图中&#xff0c;分为通带、阻带、过渡带三大部分。 通带截止频率和阻带截止频率对这三部分进行划分&#xff0c;二者之间的部分即…

PTAM算法流程介绍

相关工作&#xff1a;1、摄像机校正 2、特征提取&#xff08;FAST角点特征、扭曲图像的直线特征优化&#xff09; 3、极线几何与极线搜索 4、RANSAC&#xff08;随机采样一致&#xff09;及N点算法&#xff08;主要围绕5点算法&#xff09; 5、Bundle Adjustment&#xff08;光…

智能优化算法、智能控制算法、多目标优化、MPPT、无功优化

一、主题 matlab&#xff0c;python等智能优化算法、智能控制算法、多目标优化、MPPT、无功优化、机器学习类程序&#xff0c;可提供指导。 二、主要领域 开关电源、最大功率点跟踪&#xff08;恒电压法、电导增量法、爬山法、智能算法等&#xff09;、并网逆变器控制、多目…

【图】普利姆算法(prim算法)基本思想

一、prim算法基本思想&#xff1a; 假设G&#xff1d;(V&#xff0c;E)是连通的&#xff0c;TE是G上最小生成树中边的集合。算法从U&#xff1d;{u0}&#xff08;u0∈V&#xff09;、TE&#xff1d;{}开始。重复执行下列操作&#xff1a; 在所有u∈U&#xff0c;v∈V&#xf…

MP算法与OMP算法讲解一

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a; https://blog.csdn.net/ice110956/article/details/18403789 稀疏编码的一般最优化公式为&#xff1a; 其中的零范数为非…

MP算法和OMP算法介绍

正交匹配追踪算法是90年代初提出来的,主要目的是将信号在完备的字典库上进行稀疏分解。 1. 信号的稀疏表示(sparse representation of signals) 预设一个过完备字典矩阵,矩阵每列表示一种原型信号的原子。可将一个信号y表示成这些原子的稀疏线性组合。即 y = Dx ,或者…

单相/三相光伏发电并网/离网simlink仿真(MPPT)或是大功率VSC 最大功率点追踪算法(MPPT)仿真模型

单相/三相光伏发电并网/离网simlink仿真&#xff08;MPPT&#xff09;或是大功率VSC 最大功率点追踪算法&#xff08;MPPT&#xff09;仿真模型&#xff0c; 有基于扰动观察法&#xff08;P&O&#xff09;&#xff0c;恒压算法&#xff0c;电导增量法&#xff0c;变步长扰动…

光伏逆变simlink仿真(MPPT) 最大功率点追踪算法(MPPT)仿真模型,本设计基于扰动观察法

光伏逆变simlink仿真&#xff08;MPPT&#xff09; 最大功率点追踪算法&#xff08;MPPT&#xff09;仿真模型&#xff0c;本设计基于扰动观察法&#xff08;P&O&#xff09;最大功率点跟踪算法追踪光伏电池的发电曲线&#xff0c;实现最大功率点追踪输出的仿真模型。 目前…

Matlab|基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率

&#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ 目录 1 光伏特性 2 动机 3 基于粒子群优化的MPPT算法 4 运行结果 5 结论 6 Simulink&Matlab代码实现 1 光伏特性 光伏电池特性是非线性的&#xff0c;其输出功率随辐照度和温度的变化而变化。…

OMP与MP算法流程与代码

目录 1. 算法描述2. 部分公式推导3. 算法代码3.1 OMP算法代码3.2 MP算法代码 4. 例子 本文算法描述主要来自下面书籍的3.1节。 [1] 【以色列】Michael Elad著. 曹铁勇等翻.《稀疏与冗余表示–理论及其在信号与图像处理中的应用》.国防工业出版社. 2015. 1. 算法描述 (1) 任务&a…

并行计算(MPI + OpenMP)

文章目录 并行计算MPI&#xff08;进程级并行&#xff09;基本结构数据类型点对点通信阻塞非阻塞非连续数据打包 聚合通信Communicator & Cartisen Grid OpenMP&#xff08;线程级并行&#xff09;简介基本制导语句worksharing constructSectionsSingleFor 临界区 & 原…

算法5:普里姆算法

目录 1. 应用场景-修路问题2. 最小生成树3. 普里姆算法介绍4. 代码实现 1. 应用场景-修路问题 有7个村庄(A, B, C, D, E, F, G) &#xff0c;现在需要修路把7个村庄连通各个村庄的距离用边线表示(权) &#xff0c;比如 A – B 距离 5公里问&#xff1a;如何修路保证各个村庄都能…

使用粒子群PSO算法实现MPPT-M语言仿真

在Octave以及Matlab上&#xff0c;仿真了使用粒子群PSO实现MPPT的过程。粒子数为4。太阳能电池为4个串联。 2019年4月24日更新matlab代码。 目录 1.1 先绘制出PV曲线&#xff08;Octave&#xff09; 1.2 PSO算法&#xff08;Octave&#xff09; 2.1 绘制PV曲线&#xff08…

MPP概述

什么是MPP MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群&#xff08;传统的单节点不属于集群&#xff0c;双机热备或Oracle RAC等&#xff0c;均是基于共享存储的&#xff09;中&#xff0c;每个节点都有独立的磁盘存储系…