MATLAB学习之滤波器设计

简介: MATLAB  进制之间的转换 1.    十进制整数转二进制函数dec2bin  如果已知绝对值小于1的十进制数D,如何转换成B比特的二进制数原码? Dec2bin(round(abs(D)*2^(B-1))+(2^(B-1))*(D<0),B) 2.    十进制整数转换成补码形式的二进制数 Dec2bin(round(D*2^(B-1))

MATLAB 

进制之间的转换

1.    十进制整数转二进制函数dec2bin

 如果已知绝对值小于1的十进制数D,如何转换成B比特的二进制数原码?

Dec2bin(round(abs(D)*2^(B-1))+(2^(B-1))*(D<0),B)

2.    十进制整数转换成补码形式的二进制数

Dec2bin(round(D*2^(B-1))+2^B*(D<0),B)

 

规定:窗函数以w_开头(window),滤波器系数以b_开头,量化滤波器系数以Q_开头(quantization),频率响应(dB单位)以f_开头(就相当于频率响应的纵坐标f)

 

 

FIR滤波器的MATLAB设计

一.   采用fir1

采用了窗函数设计方法

语法如下:

  •  
  •  
  •  
  •  

各项参数意义:

  1. b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1
  2. n:滤波器的阶数,需要注意的是,设计出的滤波器长度为n+1
  3. Wn:滤波器的截止频率(归一化)。需要注意的是,wn的取值范围为0<wn<1,1对应为信号采样频率的1/2;

如果wn是单个数值,且ftype参数为low,则表示设计截止频率为wn的低通滤波器,如ftype参数为high,则表示设计截止频率为wn的高通滤波器;

如果wn是由两个数组成的向量[wn1,wn2],ftype为stop,则表示设计带阻滤波器,ftype为bandpass,则表示设计带通滤波器;

如果wn是由多个数组成的向量,则表示根据ftype的值设计多个通带或阻带范围的滤波器,ftype为DC-1,表示设计的第一个频带为通带,ftype为DC-0,表示设计的第一个频带为阻带。

4.window:指定使用的窗函数向量,默认为海明窗(Hamming),最常用的窗函数有汉宁窗(Hanning),海明窗(Hamming),布拉克曼窗(Blackman)和凯塞窗(Kaiser),可通过输入help window查找(当凯塞窗函数的贝塔值取7.856时,凯塞窗具有最好的性能

5.noscale:指定是否归一化滤波器的幅度

注意:fir1函数智能选择滤波器的截止频率和阶数,不能选择滤波器通带,阻带衰减,过渡带宽等参数。

二.   采用kaiserord函数设计

语法如下:[n,wn,beta,filtype]=kaiserord(f,a,dev,fs)

参数意义:

  1. f及fs:f是一个向量,其中的元素为待设计滤波器的过渡带的起始点和结束点。如果没有fs参数,f中元素的取值范围为0~1,即相对于采样频率一半的归一化频率;如果有fs参数,则fs为信号采样频率,f中元素即为实际的截止频率。如,设计滤波器的过渡带宽为1000~1200hz,2000~2100hz,信号采样频率为8000hz;如没有设置fs参数,则f=[0.25 0.3 0.5 0.525];如设置fs为8000,则f=[1000 1200 2000 2100]
  2. a:指定这些频率段的理想幅度值。通带为1,阻带为0.a与f相对应。以上例子,应该设置为a=[1 0 1],则表示设计带阻滤波器。
  3. dev:指定通带或阻带内的容许误差。同样是上面的例子,要求通带容许误差为0.01,阻带容许误差为0.02,则dev=[0.01 0.02 0.01]
  4. n:n为滤波器的最小阶数
  5. wn:得到滤波器的截止频率点
  6. beta:计算得到的beta值
  7. ftype:获得滤波器的类型参数

三.   采用fir2函数设计

使用fir2函数,可以完成任意响应滤波器的设计,即滤波器的幅度频率响应在指定的频段范围内有不同的幅值。,如在0~0.1的理想幅值为1,0.2~0.4的幅值为0.5等。

语法如下:

  •  
  •  
  •  
  •  
  •  
  •  

参数意义:

  1. n及b:滤波器的阶数。注意,根据FIR滤波器的结构特点,当设计的滤波器在归一化频率为1处的幅度值部位0时,n不能为奇数。
  2. f及m:f的取值为0~1,对应于滤波器的归一化频率,m用于设置对应频段范围内的理想幅值。如要求的滤波器在0~0.125内幅值为1,0.125~0.25为0.5,0.25~0.5为0.25,0.5~1为0.125,则f=[0 0.125 0.125 0.25 0.25 0.5 0.5 1],m=[1 1 0.5 0.5 0.25 0.25 0.125 0.125]
  3. windom:指定窗函数的种类,其长度为滤波器长度n+1,默认为海明窗。
  4. npt:指定在对幅度响应进行插值的插值点个数,其默认为512
  5. lap:指定对幅度响应进行插值时,对于不连续点转变成连续时的点数,其默认值是25

 

 

区别:

1.stem和plot

stem是离散函数,plot是连续函数

 

常用的信号处理函数:

1.    随机信号函数

随机信号函数:Rand(1,N)和randn(1,N)

2.    方波信号函数

Square(T)和Square(T,DUTY),其实DUTY为正值区域在一个周期的比例,如DUTY=50时,产生方波。

3.    锯齿波信号函数

Sawtooth(T)和sawtooth(T,WIDTH)

4.    正弦波信号函数

Sin(2*pi*f*t)

 

 

 

常用信号分析级处理函数

1.    滤波函数

Filter(b,a,x):分子项系数依次从大到小排列成一个行矩阵b,分母项系数依次从大到小排列成一个行矩阵a,x为输入信号序列。

2.    单位抽样响应函数

Impz(b,a,p),其中a,b同上,p为计算的数据点数

3.    频率抽样响应函数

Freqz(b,a,n,Fs): 其中a,b同上,n为在[0 Fs/2]范围内计算的频率点数量,Fs为采样频率。

4.    零极点增益函数

Root函数计算系统的零极点,zplane函数画出系统的零极点。

目录
相关文章
|
6月前
OFDM深入学习及MATLAB仿真(二)
OFDM深入学习及MATLAB仿真
248 1
|
6月前
|
编解码 网络协议 前端开发
OFDM深入学习及MATLAB仿真(一)
OFDM深入学习及MATLAB仿真
676 1
|
6月前
|
索引
matlab日常学习-------矩阵
matlab日常学习-------矩阵
71 0
|
6月前
|
算法 计算机视觉
基于CMFB余弦调制滤波器组的频谱响应matlab仿真
基于CMFB余弦调制滤波器组的频谱响应matlab仿真
|
6月前
|
机器学习/深度学习 数据安全/隐私保护 计算机视觉
matlab学习(二)
matlab学习(二)
|
5月前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
47 4
基于高通滤波器的ECG信号滤波及心率统计matlab仿真
**摘要:** 使用MATLAB2022a,实施高通滤波对ECG信号预处理,消除基线漂移,随后分析心率。系统仿真展示效果,核心代码涉及IIR HPF设计,如二阶滤波器的差分方程。通过滤波后的信号,检测R波计算RR间期,从而得到心率。滤波与R波检测是心电生理研究的关键步骤,平衡滤波性能与计算资源是设计挑战。
|
6月前
|
存储 算法
m考虑时偏影响的根升余弦滤波器matlab仿真
MATLAB 2022a仿真实现了根升余弦滤波器(RRC)的效果,该滤波器常用于通信系统以消除码间干扰。RRC滤波器设计考虑了时偏影响,其脉冲响应由理想矩形脉冲卷积得到,滚降系数控制衰减速度。在有同步误差时,滤波器需保持良好ISI抑制能力。MATLAB代码展示了计算时偏量并应用RRC滤波于连续样本的过程,以降低误码率并优化系统性能。
62 2
|
6月前
|
算法 数据安全/隐私保护
matlab学习(三)
matlab学习(三)
|
6月前
|
计算机视觉
matlab学习(一)(3.26-4.1)
matlab学习(一)(3.26-4.1)