归纳:频谱分析和滤波器设计 一。MATLAB表述的信号和系统
一。离散信号的表述与运算 1。信号的表述: 用 n 及 x 两个数组,如书 impseq,stepseq,... 2。信号的初等运算;相加,相乘,移位等,...(书 sigadd, sigmult, sigshift) 3。信号的卷积、相关、抽选等;conv, xcorr, xcov, decimate, ... 此处是以Ingle书为蓝本时才有sigadd, sigmult, sigshift(移位)等函数
二。系统的表述 (连续系统) 状态方程模型 传递函数模型 零极增益模型 极点留数模型 二阶串接模型 (参数矩阵A,B,C,D) (参数数组 z,p,k) 极点留数模型 (参数数组 r,p) 二阶串接模型 (参数矩阵 [b0k,b1k,b2k,1,a1k,a2k])
二。系统的表述 (离散系统) 状态方程模型 传递函数模型 零极增益模型 极点留数模型 二阶串接模型 (参数矩阵A,B,C,D) (参数数组 z,p,k) 极点留数模型 (参数数组 r,p) 二阶串接模型 (参数矩阵 [b0k,b1k,b2k,1,a1k,a2k])
三。系统的表述 (离散系统) 状态方程模型(不用) 传递函数模型(参数数组 ad,bd) 零极增益模型(参数数组 z,p,k) ad =1 FIR滤波器(系统) ad ~=1 IIR滤波器(系统) 零极增益模型(参数数组 z,p,k) 极点留数模型(参数数组 r,p,C) 二阶串接模型
连续系统和离散系统之间的转换函数 模拟/数字滤波器转换 1。双线性变换函数 bilinear [NUMd,DENd] = bilinear(NUM,DEN,Fs) H(z) = H(s) | | s = 2*Fs*(z-1)/(z+1) 2。脉冲响应不变法impinvar [BZ,AZ] = impinvar(B,A,Fs)
信号处理工具箱提供的线性模型转换函数
用MATLAB与信号流图求系统 信号流图方程列写 设Ki个输入节点ui K个中间和输出节点xj 方程为 写成矩阵形式:
X= [x1;x2;…xK]为状态变量列向量; Q为K乘K维的状态传送矩阵; U = [u1;u2;…uL]为输入信号列向量 P为K乘L维的为信号输入矩阵
四。信号通过线性系统(滤波器实现) 信号与系统脉冲过渡函数的卷积 y=conv(u,h),... 差分方程解法 y=filter(bd,ad,u) 滤波器实行中的其他函数: fftfilt; latcfilt,sosfilt…等 Z-变换及反变换 部分分式展开 长除
二.频谱分析(第三、五章) 傅立叶变换(包括连续和离散形式 ) 正变换 反变换
离散时间傅立叶正反变换 离散傅立叶正反变换
连续和离散傅立叶变换的对比
在MATLAB中计算傅立叶变换 在MATLAB中的计算相当方便,只要下列两行八个语句: xn=input('x = '); N= (length(xn)); n = [0:1:N-1]; k = n WN = exp(-j*2*pi/N); nk = n'*k; WNnk = WN .^ nk; Xk = xn * WNnk 在《数字信号处理及其MATLAB实现》书pp119-120中,定义它为dft函数,相应也定义了idft函数,即 X=dft(x,N) x=idft(X,N) 但其运算速度低。 在MATLAB中设有基本函数fft,它是快速傅立叶变换的缩写,调用形式为:X=fft(x,N) x=idft(X,N) N取为2的幂次时,速度最快。(令N=2^nextpow2(N);) 它的功能和dft相同,不过速度快得多,而且有许多出错提示能力。
Matlab程序 ftdemo
离散频谱与连续频谱的转换 MATLAB只能处理离散量,把离散量取得很密时,就接近于连续量。在时间轴上取得很密,对应的频谱应该取得很窄,离散傅立叶变换的最高频率通常取为2pi,故只能取到0.2*pi以下的部分,才代表连续系统的频谱。 另外它抽去了时间和频率,应当补上。时间应乘以采样周期Ts,即X=Ts*fft(x) fft的频率轴应乘以2π/(N*Ts),单位:弧度/秒 或1 /(N*Ts)=Fs/N,单位:赫兹
作傅立叶反变换ifft时注意事项 1。x=ifft(X)中的X必须取全频段(-π~π]的值。通常给出的X为[0~ π],要扩展。 3。反变换x应取实部x=real(ifft(X)) 4. 如X已含有采样周期T,反变换应除以T.
求连续信号频谱的程序例 x=input('x(1:N)序列'); Nx=length(x); K=nextpow2(Nx);N=2^K; n=0:N-1; Fs=input('采样频率Fs= ');T=1/Fs; X=T*fft(x); m1=0:N/2-1;D=2*pi/(T*N); subplot(2,1,1),plot(m1*D/(2*pi),abs(X(m1+1))) m=-N/2:N/2-1; subplot(2,1,2) plot(m*D/(2*pi),abs(fftshift(X)))
三。FIR滤波器的设计 (一)FIR滤波器的特点: (1)线性相位,波形失真小; (2)极点在z-平面原点,必稳定; (3)易于实现
(二)窗函数法 1. 定预期频率特性: 2。由预期特性求预期脉冲响应hd 3。把脉冲响应与窗函数相乘,得实际的有限长度的h; 通带幅频特性为1,相位线性;1*exp(-a*w) 阻带幅频特性为0;过渡带宽 2。由预期特性求预期脉冲响应hd 3。把脉冲响应与窗函数相乘,得实际的有限长度的h; 4. h就是FIR滤波器分子系数,可用freqz函数验算其幅频特性
滤波器的设计指标 类型和理想特性 各段允许误差Rp,As,(或delta1,delta2) Wn=[wc1,wc2,…]处的理想幅特性 A=[A1,A2,…] 各段允许误差Rp,As,(或delta1,delta2)
根据过渡带宽选择FIR滤波器窗函数类型和长度M的公式 名称 近似过渡带宽 精确过渡带宽 最小阻带衰减 矩形 4π/M 1.8π/M 21dB 巴特利特 8π/M 6.1π/M 25dB 汉宁 6.2π/M 44dB 哈明 6.6π/M 51dB 布莱克曼 12π/M 11/M 74dB 取Kaiser窗时用MATLAB中的kaiserord函数来得到长度M
FIR滤波器的其他设计方法 (二)频率抽样法 (三)约束最小二乘法(fircls) 朴素算法: 等波动方法(用remez函数) 约束指的对波动的上限有规定 均方误差最小化准则 最大误差最小化准则
四。模拟及IIR数字滤波器设计
(二)几种模拟原型的主要特点
(三)IIR滤波器设计步骤(用书上的方法和函数) 1。用buttap+求阶次N的公式→函数afd_butt 设计模拟低通原型; 数字指标:wp,ws,Rp,As先换成模拟指标 用双线性变换时wp,ws用预崎变变换 2。用变换函数bilinear或impinvar将模拟低通原型变换为数字低通 3。用zmapping函数将数字低通变换为数字高通、带通或带阻滤波器
(三)模拟及IIR滤波器设计步骤(用Signal工具箱) 以椭圆滤波器为例 选类型 确定阶次 elipord ... 求出模拟 原型滤波 器参数 ellipap 设计指标Wp,Ws,Rp,Rs等 lp2bp ... 转换为数字滤波器 bilinear 直接求出滤 波器参数 ellip
信号处理工具箱中滤波器设计界面
图形界面的滤波器设计工具fdatool 和信号处理工具sptool 要得到MATLAB的使用说明,可: 1. 用help 命令 2. 用Acrobat Reader打开MATLAB\help\pdf_doc\signal\
滤波器设计工具fdatool功能 输入给滤波器规定的指标、类型与参数; 自动或半自动地设计滤波器; 用多种方法显示设计的结果; 导入和导出滤波器的参数 分析、比较有限字长的效应对滤波器特性的影响;
信号浏览器的概貌: 使用信号浏览器可以: 分析和比较矢量或者矩阵信号. 放大有关信号数据的某部分 测量各种各样的信号数据的特征 比较多种信号. 在音频硬件上播送信号数据 打印信号.
滤波器浏览器的概貌: 使用滤波器浏览器可以分析所选滤波器下列的响应特征 幅度响应,相位响应 脉冲响应,阶跃响应 群延迟 极点和零点位置 滤波器浏览器能在任何时候显示出选定滤波器的多达六种不同响应特征曲线.
滤波器浏览器可提供以下功能 缩放 测量滤波器响应 分析和修改滤波器响应 修改显示方法:例如频率范围或者重幅度单位等参数 使信号通过滤波器得到输出
信号滤波的sptool演示 用程序ffiltdem及ffiltdem1运行 将其信号数据和滤波器数据送至sptool 再研究其输出信号 再观察其输入输出频谱;
频谱浏览器的概貌:谱分析 估计和分析一信号的功率谱密度(PSD). 用PSD估计值得知信号的频率内容. 使用谱浏览器可以 分析和比较谱的密度曲线; 评价不同谱分析的方法; 比较窗函数,FFT长度,采样频率等的影响;
声音信号的采集 用话筒及windows的录音机录下声音文件: 用MATLAB中的wavread命令读入.wav文件,参数为样本长度; 后缀.wav,存储采样频率默认22500Hz,可选 用MATLAB中的wavread命令读入.wav文件,参数为样本长度; 再用save命令将它改为.mat数据格式存储; 以后即可在sptool中直接调用。