信号处理

信号处理是指信号的表示,变换和运算以及提取它们所包含的信息。如我们可以分开两个或多个混在一起的信号,或者增强信号中某些成分的参数。

信号处理基础

信号分为数字信号和模拟信号,在计算机中连续信号只能让信号的离散时间间隔取无穷小。模拟信号表示x(t),离散信号x(n)。MATLAB中一个列向量就是一个一维信号,m×n矩阵表示m个通道信号。如n=[-5,5],x=[5 4 3 2 1 0 1 2 3 4 5]。数字信号序列表达式可以为:

  • square函数:生成周期方波信号

f=square(at),a=1时周期为2pi,高度正负1
f=square(a
t,duty),duty可以调占空比(正所占部分)

  • sawtooth函数:生成周期锯齿波或三角波

f=sawtooth(a*t,width),周期为2pi,峰值为1的锯齿波

  • pulstran函数:生成脉冲序列(不一定规则)

pulstran(t,d,‘func’,p1,p2,…)

t=0:1/1e3:1;
d=0:1/3:1;
y=pulstran(t,d,'tripuls',1.1,-1) %采样非周期三角波、还可以换成gauspuls(高斯调制的正弦脉冲)、rectpuls(采样非周期矩形波)
plot(t,y)

pulstran(t,d,p,fs)
pulstran(t,d,p)

  • sinc函数:用来计算一个输入向量或者数组的sinc函数(宽为2pi,高度为1的矩形脉冲的连续逆傅里叶变换)

y=sinc(x)

数字滤波结构

数字滤波是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统。数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以是将所需要的运算编成程序。

  • FIR有限冲激响应数字滤波器(横截型、级联型、线性相位型、快速卷积型和频率采样型)
  • IIR无限冲激响应数字滤波器(直接i、直接ii、级联、并联)

单位响应不同

1、fir:FIR滤波器的单位脉冲响应是有限长的,网络中没有反馈回路。

2、iir:IIR滤波器的单位脉冲响应为无限长,网络中有反馈回路。

幅频特性不同

1、fir:FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变。

2、iir:IIR数字滤波器幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上。

而且FIR得到相同结果需要的参数更多。

数字滤波器设计的三个步骤:

  • 给出技术指标
  • 以此确定数字滤波器的系统函数,实现频率特性的要求
  • 通过算法实现H(z)

IIR的MATLAB实现

其冲激响应序列具有无限延伸的长度,它与模拟滤波器匹配。它与FIR相比在给定要求下有更低的阶数。它具有非线性相位,在“MATLAB”中的数据一般是离线处理的,一般方法有
[z,p,k]=ellipord(2,0.2,45);
[N,Wn]=buttord(wp,ws,Rp,Rs,‘s’);

经典设计法

完全滤波器设计函数和最小阶数估计的评估函数可以完成多数设计。单如果需要变换一个模拟滤波器的带宽边界或者离散化有理变换函数,这部分的内容可以提供如何设计。

模拟滤波器设计

  • [z,p,k]=bessekap(n) %k代表增益,n是阶数
  • buttap(n)
  • cheblap(n,Rp) %Rp是通带的最大衰减,该滤波器无零点
  • cheb2ap(n,Rs) %阻带内纹波系数低于Rs分贝
  • ellipap(n,Rp,Rs)
[z,p,k]=besselap(3)
[b,a]=zp2tf(z,p,k) %有零极点模型转换为传递函数模型
w=logspace(-1,1)
freqs(b,a)  %根据传递函数话频率响应

模拟滤波器转换

要映射成数字滤波器有两种方法

-冲激响应不变 [bz,az]=impinvar(b,a,fs,(tol)):分子、分母系数分别为bz、az的数字滤波器,冲激响应与系数为b,a的模拟滤波器一样,fs是采样频率,默认1。tol作为计算误差。

clear;clc
wp=1200*2*pi; %带通截止频率
ws=1600*2*pi; %阻带截至频率
Fs=12000; %采样频率
Rp=0.2;
Rs=60;
[N,Wn]=cheblord(wp,ws,Rp,Rs,'s');%估计滤波器最小阶数.完全设计直接[b,a]=cheby1(N,Rp,Wn)
[z,p,k]=cheblap(N,Rp) %模拟滤波器函数引用
[A,B,C,D]=zp2ss(z,p,k); %转换成状态空间形式
[At,Bt,Ct,Dt]=lp2lp(A,B,C,D,Wn);%频率转换
[b,a]=ss2tf(At,Bt,Ct,Dt);转换成TF形式
[bz,az]=impinvar(b,a,Fs);
[H,W]=freqz(bz,az);
plot(W*Fs/(2*pi),abs(H));grid;
xlabel('frquency');
ylabel('magnitude');
  • 双线性变换:

[zd,pd,kd]=bilinear(z,p,k,fs) %转成零极点模型
[numd,dend]=bilinear(num,den,fs) %转成传递函数形式
[Ad,Bd,Cd,Dd]=bilinear(A,B,C,D,fs) %转成状态方程

fs后面可接fp,fp是预畸变参数:
fp=2pipi;
fs=fp/tan(fp/fs/2);
否则
fs=2*fs

直接设计法

**[b,a]=yulewalk(n,f,m)**返回包括n阶iir滤波器的\

[b,a]=yulewalk(10,f,m);
[h,w]=freqz(b,a,128)
plot(f,m,w/pi,abs(h))
xlabel(’…’)
ylabel(’…’)

广义巴特沃思IIR滤波器设计

广义巴是指的低通滤波器的分子分母阶数不一致,甚至分子阶数可以高于分母。
调用:
[b,a]=maxflat(n,m,Wn) %a,b是返回的巴特沃思的分子和分母系数向量
b=maxflat(n,‘sym’,Wn) %返回的是对称FIR巴特沃思,Wn在0-1以内。
[b,a,b1,b2]=maxflat(n,m,Wn) %返回两个多项式系数b1,b2
b=conv(b1,b2).b1包含z=-1情况下所有的零点,b2包含所有其他的零点

[b,a,b1,b2,sos,g]=maxflat(n,m,Wn) %sos为滤波器矩阵,g为滤波器增益

[…]=maxflat(n,m,Wn,‘design_flag’) %监控滤波器设计。“de。。。”
:trace:表格 ;plots:可以获得相应幅值响应、群延迟、零点和极点图;both:两个都有。

FIR的MATLAB实现

FIR的优点:

  • 准确的线性相位
  • 永远稳定
  • 设计方法一般都是线性
  • 在硬件上有更高的运行效率
  • 启动传输只需要有限的时间
    缺点:
  • 阶数高
  • 延迟大

设计方法

  • 窗函数法:对理想滤波器加窗处理,截取某一段来近似理想滤波器(fir1\fir2\kaiserord)
  • 多带和过渡带:等纹波或者最小二乘法逼近频率范围的子带(firls\firpm\firpmord)
  • 约束最小二乘法:满足最大误差限制条件下使整个频带平方误差最小化(fircls,fircls 1)
  • 任意响应法:任意响应,包括非线性相位和复杂滤波器(cfirpm)
  • 升余弦法:具有光滑过渡带的低通滤波器的设计(firrcos)

之所以需要加窗是因为离散时间信号总是有限长的,因此不可避免要遇到数据截断问题,这就需要通过序列和窗函数相乘来实现。
常用窗函数如下:

fir1

b=fir1(n,Wn,‘ftype’,window)
n表示阶数,ftype表示设计的滤波器类型,high、stop、DC-1(多通带滤波器,第一阶段是通带)、DC-0

b=fir1(55,[0.35 0.67]); %[0.35 0.67]通带范围
freqz(b,1,512)

fir2

b=fir2(n,f,m,npt,lap,window) f和m表示决定频率响应的向量0-1,n表示滤波器阶数;b向量表示返回滤波器的系数,npt是内插点数,lap是参数用于指定fir2在重复频率点附近插入的区域大小。

MATLAB与信号处理相关推荐

  1. 【 MATLAB 】信号处理工具箱之 ifft 简介及案例分析

    这篇博文和上篇博文对应:[ MATLAB ]信号处理工具箱之fft简介及案例分析 目录 ifft Syntax Description 案例分析 Inverse Transform of Vector ...

  2. 【 MATLAB 】信号处理工具箱之 fft 案例分析

    上篇博文:[ MATLAB ]信号处理工具箱之fft简介及案例分析介绍了MATLAB信号处理工具箱中的信号变换 fft 并分析了一个案例,就是被噪声污染了的信号的频谱分析. 这篇博文继续分析几个小案例 ...

  3. 【 MATLAB 】信号处理工具箱之fft简介及案例分析

    目录 Syntax Description Y = fft(X) Y = fft(X,n) Y = fft(X,n,dim) Examples Noisy Signal Syntax Y = fft( ...

  4. 【 MATLAB 】信号处理工具箱之波形产生函数 pulstran

    前两篇博文和这篇博文有些许联系: [ MATLAB ]信号处理工具箱之波形产生函数 rectpuls [ MATLAB ]信号处理工具箱之波形产生函数 tripuls MATLAB帮助文档称pulst ...

  5. 【 MATLAB 】信号处理工具箱之波形产生函数 tripuls

    上篇博文写了:[ MATLAB ]信号处理工具箱之波形产生函数 rectpuls,这篇博文是tripuls,一看就是一个类型的,所以很简单的说下. MATLAB文档中称tripuls为采样非周期三角波 ...

  6. MATLAB数字信号处理函数

    MATLAB数字信号处理函数(自学笔记4) 笔者正在学习matlab的m函数,本文为学习笔记的其中之一.本文主要介绍数字信号处理相关的函数. 文章目录 MATLAB数字信号处理函数(自学笔记4) FI ...

  7. 基于matlab的信号与系统实例,华南理工大学信号与系统实验基于Matlab的信号处理实例...

    第2讲基于Matlab的信号处理实例实验内容(1) (1) 读取给定的3D加速度信号文件,绘出信号波形: 程序源代码: function sy2 fid = fopen('run 100m_TROUS ...

  8. triplus在matlab字函数,[理学]第7章 MATLAB在信号处理中的应用.ppt

    第7章 MATLAB在数字信号处理中的应用,--本章将介绍数字信号处理的相关知识.傅里叶变换.IIR数字滤波器.FIR数字滤波器的基本理论和MATLAB实现.,(一)典型信号及其表示,1. 单位抽样信 ...

  9. matlab 85个实用案例勘误,MATLAB数字信号处理85个实用案例精讲.入门到进阶+源代码(无需密码).rar...

    [实例简介] 本压缩包包含了MATLAB数字信号处理85个实用案例精讲.pdf以及每一章的实例m文件以及函数,下载即可使用,内无密码设置 [实例截图] [核心代码] MATLAB数字信号处理85个实用 ...

  10. MATLAB数字信号处理基础

    MATLAB数字信号处理基础 1.波形产生函数 函数 说明 square 方波 sawtooth 锯齿波 sinc sinc函数 diric diric函数 rectpuls 非周期方波 tripul ...

最新文章

  1. python官方网站地址-哪里能找到 Python 视频教程地址?
  2. 深度学习与概率、统计的有趣探讨
  3. ci中如何得到配置的url
  4. 10-30 团队的自动化
  5. 我想自学编程技术,但是每天下班回来都很累了,没力气,怎么办?
  6. goto语句_C语言goto语句
  7. apipost 如何分享多个接口
  8. python自动化办公都能做什么-用 Python 自动化办公能做到哪些有趣或有用的事情?...
  9. java版b2b2c社交电商spring cloud分布式微服务(十)高可用的服务注册中心
  10. MVC 的八个扩展点
  11. ESP32学习笔记(46)——MQTT客户端
  12. ilo管理脚本 hponcfg方式
  13. 搞定IC卡(上)-IC卡基础
  14. C++ 数组名a、数组名取地址a、数组首地址a[0]、数组指针*p
  15. VTK学习笔记(三十六)VTK图像填充
  16. (转)创业者应该有的5个正常心态
  17. 苹果三代耳机_P130 【AirPods 3代】绝对性的福利!“地表最强真无线耳机” 苹果第三代AirPods Pro蓝牙耳机、妙不可言!...
  18. 【高德地图进阶】--- 使用DistrictSearch 绘制城市版块
  19. SAP MM 因物料有负库存导致MMPV开账期失败问题之对策
  20. 从新建文件夹开始构建ShadowPlay Engine游戏引擎(3)

热门文章

  1. Python机器学习及实践——特征降维
  2. jsp页面中文乱码解决方法
  3. H3C官网-inode客户端下载
  4. springboot test
  5. 用计算机算出你的年龄,身体年龄计算器:一分钟算出你的健康年龄(全文)
  6. magento yandex插件 moneta插件 qiwi插件 俄罗斯银行
  7. 01-ArcGIS从下载到卸载那些事儿
  8. 华为星环大数据_大数据平台-华为和星环
  9. 王道训练营—Java编程经典50题
  10. oracle密码过期之后如何修改成永久不过期