Matlab在数字信号处理中运用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab在数字信号处理中运用
本章内容:
离散时间信号与系统 数字滤波器概述 IIR滤波器的设计
Matlab在数字信号处理中运用
信号
连续信号 指时间连续、幅度连续的信号,又称模拟信 号,数学上表示为一个时间连续函数f(t);
离散信号 指时间离散,幅度仍然可以连续的信号。可 由f(t)时域取样得到,数学上表示为一个时 间离散函数f(n);
Fs=2000; t=1/Fs:1/Fs:5; f=150; A=0.45; Fai=35/180*pi; X=A*sin(2*pi*f.*t+Fai); plot(t(1:100),X(1:100)); xlabel('time(sec)'); ylabel('sin2\pi ft'); title('150Hz sin wave'); disp('按任意键开始播出5秒的150Hz正弦波...');pause;
Matlab在数字信号处理中运用
• freqz函数: 用于计算并画出离散系统的幅频响应和相频响应。 该函数使用基于FFT算法计算系统传递函数响应 模型中的系数向量a和b。常用调用格式为:
[h,f]=freqz(b,a,n,fs)
其中: b为传递函数H(z)分子多项式系数, a为分母多项式系数, n为指定计算频率点数(由于采用FFT算法,n常取 2的幂次方,以提高计算速度), fs为离散系统的采样频率, h为对应于频率点序列f的复频率响应。如无输出变量, 则自动作出幅频响应和相频响应图, f为记录频率点数。
N为长度; randn(1,N) —— 产生均值为0,方差为1的高斯
随机序列,即白噪声序列。
Matlab在数字信号处理中运用
例7-4 产生随机序列
%generate random sequence n=200; xn1=rand(1,n); xn2=randn(1,n); subplot(2,2,1),stem(xn1); xlabel('n');ylabel('x(n)');title('rand'); grid subplot(2,2,2);hist(xn1,10); xlabel(‘n’);ylabel(‘x(n)’);title(‘均匀分布的概率密度'); grid subplot(2,2,3),stem(xn2); xlabel('n');ylabel('x(n)');title('randn'); grid subplot(2,2,4),hist(xn2,10); xlabel(‘n’);ylabel(‘x(n)’);title(‘高斯分布的概率密度') grid
Matlab在数字信号处理中运用
an
实指数序列:x(n)= a n
Matlab实现:n=0:N-1; x=a.^n;
例: x(n)= (0.9)n,0n10 实现程序: >> n=[0:10]; >> x=(0.9).^n; >> stem(n,x)
Matlab在数字信号处理中运用
随机序列
由于许多实际的序列并不能用数学式来描述, 我们将这些序列成为随机序列,并用相应的概率 密度函数来表示。 Matlab提供了两个随机数产生函数: rand(1,N) ——产生[0,1]上均匀分布的随机序列,
第七讲 Matlab在数字信号 处理中的运用
数字信号处理(DSP):是指利用计算机或专用 处理设备,以数值计算的方法对信号进行采集、 变换、综合、估值与识别等加工处理,借以达到 提取信息和便于应用的目的。
Matlab是数字信号处理技术实现的重要手段。 Matlab,可以进行数字信号处理问题理论上的分 析和算法开发;配合Simulink,用户可以进行数 字信号处理系统的设计和仿真。
Matlab在数字信号处理中运用
4)线性系统及其Matlab实现
线性系统的基本概念:
连续时间线性时不变系统的表示: 拉普拉斯变换描述的传递函数形式; 一阶微分方程组描述的状态空间形式
离散时间线性系统的表示: Z变换描述的传递函数形式; 一阶差分方程组描述的状态空间形式
Matlab在数字信号处理中运用
Matlab在数字信号处理中运用
例如: x=square(2*pi*f*t+fai,duty) % t为时间取样序列 % f为方波的基频率 % fai为方波的初始相位 % duty为占空比,为0-100之间的数。
例如 duty=20, 即占空比为20% % x 返回的幅度为1的矩形波样值序列
Matlab在数字信号处理中运用
三角函数sawtooth:
x=sawtooth(t); x=sawtooth(t,width); 例如:
x=sawtooth(2*pi*f*t+fai,width) % f为三角波的基频率 % fai为三角波的初相位 % width为宽度,为0-1之间取值的尺度参数。
若width=0.3,表示在三角波的一个周期内上升沿 占30%;若width=0.5,产生对称的三角波;若 width=1,产生锯齿波。 % 返回的幅度为1的锯齿波样值序列
Matlab在数字信号处理中运用
数字信号
指时间离散而且幅度也离散的信号,可对模拟信 号处理获得: 模拟信号→ 取样、量化、编码 → 数字信号 上述过程又称为脉冲编码调制,这是一个典型的 AD变换过程;
计算机处理和存储的信号全部是数字信号,通常 需要将数字信号还原为模拟信号,过程为: 数字信号→ 解码、反量化、重建 → 模拟信号 这个过程又称为 DA变换。
Matlab在数字信号处理中运用
• impz函数: 直接给出系统的单位冲激相应,调用格式: impz(b,a)
Matlab在数字信号处理中运用
例7-5:当系统的输入差分方程为: y(n)-0.8y(n-1)-0.5y(n-2)=0.7x(n)+0.3(n-1), 分别利用filter函数和impz函数求系统的单位冲激相
Matlab在数字信号处理中运用
2. 数字滤波器概述
1)数字滤波器的数学描述和分类
数字滤波器(DF,Digital Filter)在数字信号 处理中起着重要的作用。在信号的处理, 检测与参数的估计方面,数字滤波器是使 用最为广泛的一种系统。
Matlab在数字信号处理中运用
由于信号通常夹杂噪声及无用信号成分,所以必 须将这些干扰成分滤除。滤波器可以对信号进行 筛选,只让特定信号通过。
μ(n-m)=
1, n≥m 0, n<m
正弦序列
正弦序列定义:x(n)=Asin(2πfnTs+φ)
Matlab实现:n=0:N-1;
x=A*sin(2*pi*f*n*Ts+fai);
Matlab在数字信号处理中运用
例7-3:产生一个频率为150Hz,幅度为0.45,初始 相位为35度的正弦波,信号持续时间为5s。
时域响应工具箱函数
当系统由传递函数、状态方程给出时,Matlab 给出了专门求解系统单位冲激相应的函数:
impulse(sys): 计算连续系统的冲激响应 dimpulse: 计算离散系统的冲激响应
Matlab在数字信号处理响应。
sys=tf(1,[1,1,0.5]) Transfer function:
和非周期三角脉冲 voc——压控振荡信号
Matlab在数字信号处理中运用
3)序列的操作
信号相加: 是一种对应的样本与样本之间的相加,表示为: {x1(n)}+ {x2(n)}= {x1(n)+ x2(n)} 用运算符“+”实现,要求参与运算的两个序列长 度必须相等。
信号相乘: 对应采样值之间的相乘,表示为: {x1(n)}* {x2(n)}= {x1(n) x2(n)} 用数组运算符“.*”实现,要求参与运算的两个序 列长度必须相等。
Matlab在数字信号处理中运用
传递函数响应
• freqs函数: 用于计算并画出连续系统的幅频响应和相频响应。 常用的调用格式为:
h=freqs(b,a)
h=freqs(b,a,w) 其中: b为传递函数H(s)分子多项式系数, a为分母多项式系统, w是指定计算频率点序列,如果w省略,则自动取 200个频率点作计算。 h为返回值,是对应于频率点序列w的复频率响应。
Matlab在数字信号处理中运用
sound(X,Fs); disp('播放结束,下面将音频数据存盘为C:\my50HzSIN.wav'); wavwrite(X,Fs,'C:\my50HzSIN.wav'); clear; [R,Rs]=wavread('C:\my50HzSIN.wav'); sound(R,Rs);
Matlab在数字信号处理中运用
倍率: 每一个采样值乘以一个常数a,表示为 a{x(n)} = {ax(n) } 用算术运算符“*”实现。
折叠: x(n)的每个样本都对n=0翻转,得到一个折叠后的 序列y(n)。 y(n)= {x(-n)} 由flghr(x)实现。
Matlab在数字信号处理中运用
例7-1 产生一个32点的,右移20各单位的冲击序列。 程序如下: clear all; N=32; k=20; x=zeros(N); x(k)=1; xn=0:N-1; stem(xn,x);
Matlab在数字信号处理中运用
单位阶跃序列μ(n)
Matlab实现:x=ones(1,N);
右移m,则:
n2
x(n)x(n1).....x(n2)
n1
样本和:
将n1和n2之间的所有样本x(n)加起来: n2 x(n)x(n1).....x(n2) nn1
由sum(x(n1): x(n2))函数实现。
样本积:
将n1和n2之间的所有样本x(n)乘起来:
n2
x(n)x(n1).....x(n2)
n1
由prod x((n1: n2))函数实现。
Matlab在数字信号处理中运用
1. 离散时间信号与系统
1)离散信号及其Matlab实现
单位抽样序列(单位冲激) δ(n):仅在n=0时
取值为1. 在Matlab中,产生N点的单位抽样序列,我们利 用zeros函数来实现:
x=zeros(1,N); x(1)=1;
Matlab在数字信号处理中运用
Matlab在数字信号处理中运用
其它波形发生函数:
chirp——线性调频信号 dirichlet——周期信号 sinc——傅立叶反变换 rectpuls——非周期的、单位高度的矩形信号 gauspuls——高斯调制正弦脉冲 tripuls——三角形脉冲信号 pulstrain——高斯调制正弦脉冲、非周期矩形脉冲
一般而言,噪声信号往往是高频信号。而经典滤 波器正是假定有用信号与噪声具有不同的频段, 所以利用经典的滤波器可以将噪声滤除。
Matlab在数字信号处理中运用
Matlab在数字信号处理中运用
2)波形发生器
Matlab内部提供了大量的函数用以产生噪声及常 用的信号波形,这些信号在信号处理中非常重要。
方波函数square
square函数有两种调用格式: x=square(t); x=square(t,duty); square函数产生周期为2*pi,幅度为1的方波。 duty为占空比,即信号为正值的区域在一个周期 内所占的百分比。
1 ------------s^2 + s + 0.5 impulse(sys);
Matlab在数字信号处理中运用
离散系统模型时域表示
• filter函数: 利用递归滤波器或非递归滤波器对数据进行滤波。 因为一个离散系统可以看作是一个滤波器,系统 的输出就是输入经过滤波器滤波的结果。 y=filter(b,a,x); 表示由向量b和a组成的系统对输入x进行滤波,系 统的输出为y; [y,zf]= filter(b,a,x,zi); zi表示输出信号的初始状态,zf表示该函数返回 的系统的最终状态向量。
应。 clear all; pulse=[1,zeros(1,63)]; b=[0.7,0.3]; a=[1,-0.8,-0.5]; h1=filter(b,a,pulse); h2=impz(b,a,64); subplot(2,1,1),stem(h1),title('filter fuction'); subplot(2,1,2),stem(h2),title('impz fuction');
本章内容:
离散时间信号与系统 数字滤波器概述 IIR滤波器的设计
Matlab在数字信号处理中运用
信号
连续信号 指时间连续、幅度连续的信号,又称模拟信 号,数学上表示为一个时间连续函数f(t);
离散信号 指时间离散,幅度仍然可以连续的信号。可 由f(t)时域取样得到,数学上表示为一个时 间离散函数f(n);
Fs=2000; t=1/Fs:1/Fs:5; f=150; A=0.45; Fai=35/180*pi; X=A*sin(2*pi*f.*t+Fai); plot(t(1:100),X(1:100)); xlabel('time(sec)'); ylabel('sin2\pi ft'); title('150Hz sin wave'); disp('按任意键开始播出5秒的150Hz正弦波...');pause;
Matlab在数字信号处理中运用
• freqz函数: 用于计算并画出离散系统的幅频响应和相频响应。 该函数使用基于FFT算法计算系统传递函数响应 模型中的系数向量a和b。常用调用格式为:
[h,f]=freqz(b,a,n,fs)
其中: b为传递函数H(z)分子多项式系数, a为分母多项式系数, n为指定计算频率点数(由于采用FFT算法,n常取 2的幂次方,以提高计算速度), fs为离散系统的采样频率, h为对应于频率点序列f的复频率响应。如无输出变量, 则自动作出幅频响应和相频响应图, f为记录频率点数。
N为长度; randn(1,N) —— 产生均值为0,方差为1的高斯
随机序列,即白噪声序列。
Matlab在数字信号处理中运用
例7-4 产生随机序列
%generate random sequence n=200; xn1=rand(1,n); xn2=randn(1,n); subplot(2,2,1),stem(xn1); xlabel('n');ylabel('x(n)');title('rand'); grid subplot(2,2,2);hist(xn1,10); xlabel(‘n’);ylabel(‘x(n)’);title(‘均匀分布的概率密度'); grid subplot(2,2,3),stem(xn2); xlabel('n');ylabel('x(n)');title('randn'); grid subplot(2,2,4),hist(xn2,10); xlabel(‘n’);ylabel(‘x(n)’);title(‘高斯分布的概率密度') grid
Matlab在数字信号处理中运用
an
实指数序列:x(n)= a n
Matlab实现:n=0:N-1; x=a.^n;
例: x(n)= (0.9)n,0n10 实现程序: >> n=[0:10]; >> x=(0.9).^n; >> stem(n,x)
Matlab在数字信号处理中运用
随机序列
由于许多实际的序列并不能用数学式来描述, 我们将这些序列成为随机序列,并用相应的概率 密度函数来表示。 Matlab提供了两个随机数产生函数: rand(1,N) ——产生[0,1]上均匀分布的随机序列,
第七讲 Matlab在数字信号 处理中的运用
数字信号处理(DSP):是指利用计算机或专用 处理设备,以数值计算的方法对信号进行采集、 变换、综合、估值与识别等加工处理,借以达到 提取信息和便于应用的目的。
Matlab是数字信号处理技术实现的重要手段。 Matlab,可以进行数字信号处理问题理论上的分 析和算法开发;配合Simulink,用户可以进行数 字信号处理系统的设计和仿真。
Matlab在数字信号处理中运用
4)线性系统及其Matlab实现
线性系统的基本概念:
连续时间线性时不变系统的表示: 拉普拉斯变换描述的传递函数形式; 一阶微分方程组描述的状态空间形式
离散时间线性系统的表示: Z变换描述的传递函数形式; 一阶差分方程组描述的状态空间形式
Matlab在数字信号处理中运用
Matlab在数字信号处理中运用
例如: x=square(2*pi*f*t+fai,duty) % t为时间取样序列 % f为方波的基频率 % fai为方波的初始相位 % duty为占空比,为0-100之间的数。
例如 duty=20, 即占空比为20% % x 返回的幅度为1的矩形波样值序列
Matlab在数字信号处理中运用
三角函数sawtooth:
x=sawtooth(t); x=sawtooth(t,width); 例如:
x=sawtooth(2*pi*f*t+fai,width) % f为三角波的基频率 % fai为三角波的初相位 % width为宽度,为0-1之间取值的尺度参数。
若width=0.3,表示在三角波的一个周期内上升沿 占30%;若width=0.5,产生对称的三角波;若 width=1,产生锯齿波。 % 返回的幅度为1的锯齿波样值序列
Matlab在数字信号处理中运用
数字信号
指时间离散而且幅度也离散的信号,可对模拟信 号处理获得: 模拟信号→ 取样、量化、编码 → 数字信号 上述过程又称为脉冲编码调制,这是一个典型的 AD变换过程;
计算机处理和存储的信号全部是数字信号,通常 需要将数字信号还原为模拟信号,过程为: 数字信号→ 解码、反量化、重建 → 模拟信号 这个过程又称为 DA变换。
Matlab在数字信号处理中运用
• impz函数: 直接给出系统的单位冲激相应,调用格式: impz(b,a)
Matlab在数字信号处理中运用
例7-5:当系统的输入差分方程为: y(n)-0.8y(n-1)-0.5y(n-2)=0.7x(n)+0.3(n-1), 分别利用filter函数和impz函数求系统的单位冲激相
Matlab在数字信号处理中运用
2. 数字滤波器概述
1)数字滤波器的数学描述和分类
数字滤波器(DF,Digital Filter)在数字信号 处理中起着重要的作用。在信号的处理, 检测与参数的估计方面,数字滤波器是使 用最为广泛的一种系统。
Matlab在数字信号处理中运用
由于信号通常夹杂噪声及无用信号成分,所以必 须将这些干扰成分滤除。滤波器可以对信号进行 筛选,只让特定信号通过。
μ(n-m)=
1, n≥m 0, n<m
正弦序列
正弦序列定义:x(n)=Asin(2πfnTs+φ)
Matlab实现:n=0:N-1;
x=A*sin(2*pi*f*n*Ts+fai);
Matlab在数字信号处理中运用
例7-3:产生一个频率为150Hz,幅度为0.45,初始 相位为35度的正弦波,信号持续时间为5s。
时域响应工具箱函数
当系统由传递函数、状态方程给出时,Matlab 给出了专门求解系统单位冲激相应的函数:
impulse(sys): 计算连续系统的冲激响应 dimpulse: 计算离散系统的冲激响应
Matlab在数字信号处理响应。
sys=tf(1,[1,1,0.5]) Transfer function:
和非周期三角脉冲 voc——压控振荡信号
Matlab在数字信号处理中运用
3)序列的操作
信号相加: 是一种对应的样本与样本之间的相加,表示为: {x1(n)}+ {x2(n)}= {x1(n)+ x2(n)} 用运算符“+”实现,要求参与运算的两个序列长 度必须相等。
信号相乘: 对应采样值之间的相乘,表示为: {x1(n)}* {x2(n)}= {x1(n) x2(n)} 用数组运算符“.*”实现,要求参与运算的两个序 列长度必须相等。
Matlab在数字信号处理中运用
传递函数响应
• freqs函数: 用于计算并画出连续系统的幅频响应和相频响应。 常用的调用格式为:
h=freqs(b,a)
h=freqs(b,a,w) 其中: b为传递函数H(s)分子多项式系数, a为分母多项式系统, w是指定计算频率点序列,如果w省略,则自动取 200个频率点作计算。 h为返回值,是对应于频率点序列w的复频率响应。
Matlab在数字信号处理中运用
sound(X,Fs); disp('播放结束,下面将音频数据存盘为C:\my50HzSIN.wav'); wavwrite(X,Fs,'C:\my50HzSIN.wav'); clear; [R,Rs]=wavread('C:\my50HzSIN.wav'); sound(R,Rs);
Matlab在数字信号处理中运用
倍率: 每一个采样值乘以一个常数a,表示为 a{x(n)} = {ax(n) } 用算术运算符“*”实现。
折叠: x(n)的每个样本都对n=0翻转,得到一个折叠后的 序列y(n)。 y(n)= {x(-n)} 由flghr(x)实现。
Matlab在数字信号处理中运用
例7-1 产生一个32点的,右移20各单位的冲击序列。 程序如下: clear all; N=32; k=20; x=zeros(N); x(k)=1; xn=0:N-1; stem(xn,x);
Matlab在数字信号处理中运用
单位阶跃序列μ(n)
Matlab实现:x=ones(1,N);
右移m,则:
n2
x(n)x(n1).....x(n2)
n1
样本和:
将n1和n2之间的所有样本x(n)加起来: n2 x(n)x(n1).....x(n2) nn1
由sum(x(n1): x(n2))函数实现。
样本积:
将n1和n2之间的所有样本x(n)乘起来:
n2
x(n)x(n1).....x(n2)
n1
由prod x((n1: n2))函数实现。
Matlab在数字信号处理中运用
1. 离散时间信号与系统
1)离散信号及其Matlab实现
单位抽样序列(单位冲激) δ(n):仅在n=0时
取值为1. 在Matlab中,产生N点的单位抽样序列,我们利 用zeros函数来实现:
x=zeros(1,N); x(1)=1;
Matlab在数字信号处理中运用
Matlab在数字信号处理中运用
其它波形发生函数:
chirp——线性调频信号 dirichlet——周期信号 sinc——傅立叶反变换 rectpuls——非周期的、单位高度的矩形信号 gauspuls——高斯调制正弦脉冲 tripuls——三角形脉冲信号 pulstrain——高斯调制正弦脉冲、非周期矩形脉冲
一般而言,噪声信号往往是高频信号。而经典滤 波器正是假定有用信号与噪声具有不同的频段, 所以利用经典的滤波器可以将噪声滤除。
Matlab在数字信号处理中运用
Matlab在数字信号处理中运用
2)波形发生器
Matlab内部提供了大量的函数用以产生噪声及常 用的信号波形,这些信号在信号处理中非常重要。
方波函数square
square函数有两种调用格式: x=square(t); x=square(t,duty); square函数产生周期为2*pi,幅度为1的方波。 duty为占空比,即信号为正值的区域在一个周期 内所占的百分比。
1 ------------s^2 + s + 0.5 impulse(sys);
Matlab在数字信号处理中运用
离散系统模型时域表示
• filter函数: 利用递归滤波器或非递归滤波器对数据进行滤波。 因为一个离散系统可以看作是一个滤波器,系统 的输出就是输入经过滤波器滤波的结果。 y=filter(b,a,x); 表示由向量b和a组成的系统对输入x进行滤波,系 统的输出为y; [y,zf]= filter(b,a,x,zi); zi表示输出信号的初始状态,zf表示该函数返回 的系统的最终状态向量。
应。 clear all; pulse=[1,zeros(1,63)]; b=[0.7,0.3]; a=[1,-0.8,-0.5]; h1=filter(b,a,pulse); h2=impz(b,a,64); subplot(2,1,1),stem(h1),title('filter fuction'); subplot(2,1,2),stem(h2),title('impz fuction');