MATLAB

更新时间:2023-11-07 01:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课 程 设 计 报 告

设计名称: MATLAB课程设计报告 系 别: 学生姓名: 班 级: 学 号: 成 绩: 指导教师:

开课时间: 2010 至 2011 学年第 2 学期

1

题目:matlab语音信号的采集与处理

一、实践的目的和要求

1.MATLAB软件功能简介 2.本题目的意义 二、实践内容

1.常用信号的实现

通过编写MATLAB软件仿真程序,掌握MATLAB软件中常用信号的表示方法,绘图函数的使用。内容如下:

(1) f(t)= ?(t)和单位阶跃序列的实现

(2) (2)激信号f(t)??(t)和单位脉冲序列的实现

(3)减指数信号f(t)?e??t?(t)和实指数序列x(n)?an的实现

2.信号的时域基本运算

通过调用MATLAB中的相关函数,编写信号的基本运算仿真程序,实现信号的时域基本运算,达到掌握MATLAB相关运算函数的调用格式及功能的目的。 (1)信号的相加,相乘和移位运算 (2)序列的卷积运算 3.系统分析

通过调用MATLAB相关函数,实现对LTI系统的时域和频域进行分析,熟练掌握LTI系统单位冲激响应和零状态响应得MATLAB求解方法。 (1)连续LTI系统的时域分析 (2)连续LTI系统的频域分析 4.综合设计

在熟练掌握MATLAB基本的信号处理方法的基础上,按照要求设计特定功能的综合系统,掌握MATLAB信号处理系统的仿真程序设计。综合系统题目 (1)MATLAB模拟滤波器的实现

(2)MATLAB语音信号的采集与处理 三、实践仿真程序设计及结果分析 1.常用信号的实现

(1) 单位阶跃信号f(t)= ?(t)和单位阶跃序列x(n)?u(n)的实现

①单位阶跃信号f(t)= ?(t)的实现程序: t0=0; t1=-1; t2=3; dt=0.01; t=t1:dt:-t0;

2

n=length(t); t3=-t0:dt:t2; n3=length(t3); u=zeros(1,n); u3=ones(1,n3); plot(t,u); hold on; plot(t3,u3);

plot([-t0,-t0],[0,1]); hold off;

axis([t1,t2,-0.2,1.5]); xlabel('时间(t)'); ylabel('幅值(f)'); title('单位阶跃信号');

时域波形:

单位阶跃信号1.41.210.80.60.40.20-0.2-1幅值(f)-0.500.51时间(t)1.522.53

②单位阶跃序列x(n)?u(n)的实现程序: k0=0;%单位阶跃开始出现的位置 k1=-3;k2=6; k=k1:k0-1; n=length(k); k3=-k0:k2; n3=length(k3); u=zeros(1,n); u3=ones(1,n3); stem(k,u,'filled'); hold on;

stem(k3,u3,'filled'); hold off;

axis([k1,k2,-0.2,1.5]);

3

title('单位阶跃序列');

xlabel('时间(k)');ylabel('幅值f(k)'); 时域波形:

单位阶跃序列1.41.210.8幅值f(k)0.60.40.20-0.2-3-2-1012时间(k)3456

(2)单位冲激信号f(t)??(t)和单位脉冲序列x(n)??(n)的实现 ①单位冲激信号f(t)??(t)的实现程序:

clear;

t0=0;t1=-1;t2=5;dt=0.1; t=t1:dt:t2; n=length(t); x=zeros(1,n);

x(1,(t0-t1)/dt+1)=1/dt; stairs(t,x);

axis([t1,t2,0,1/dt]);

xlabel('时间(t)');ylabel('幅值(t)');title('单位冲激信号'); 时域波形:

4

单位冲激信号109876幅值(t)543210-1012时间(t)345

②单位脉冲序列x(n)??(n)的实现程序: k1=-3; k2=6; k=k1:k2;

n=3;%单位脉冲出现的位置 f=[(k-n)==0];

stem(k,f,'filled');title('单位脉冲序列') xlabel('时间(k)');ylabel('幅值f(k)'); 时域波形:

单位脉冲序列10.90.80.70.6幅值f(k)0.50.40.30.20.10-3-2-1012时间(k)3456

(3)单边衰减指数信号f(t)?e??t?(t)和实指数序列x(n)?an的实现 ①单边衰减指数信号f(t)?e??t?(t)的实现程序:

clear

t1=-1;t2=10;dt=0.1;

5

t=t1: dt: t2; A1=1; a1=0.5;

n=A1*exp(-a1*t); plot(t,n);

axis([t1,t2,0,1]);

xlabel('时间(t)');ylabel('幅值(f)');title('单边衰减指数信号');

时域波形:

②实指数序列x(n)?an的实现程序:

clf;

k1=-1;k2=10; k=k1:k2; a=-0.6; A=1; f=A*a.^k;

stem(k,f,'filled'); title('');

xlabel('(k)');ylabel('f(k)');

时域波形:

6

10.50f(k)-0.5-1-1.5-2-2024(k)6810

2.信号的时域基本运算

(1)信号的相加,相乘和移位运算

①实现两个连续信号的相加,即f(t)?f1(t)?f2(t)。

程序:

clear all;

t=0:0.0001:3; b=3; t0=1;

u=stepfun(t,t0); n=length(t); for i=1:n

u(i)=b*u(i)*(t(i)-t0);

end %产生一个斜坡信号 y=sin(2*pi*t); %产生一个正弦信号 f=y+u; %信号相加 plot(t,f);

xlabel('时间(t)');ylabel('幅值f(t)');title('连续信号的相加');

时域波形:

7

连续信号的相加654幅值f(t)3210-100.511.5时间(t)22.53

②实现两个连续信号的相乘,即f(t)?f1(t)×f2(t)。

程序: clear all; t=0:0.0001:5; b=3;t0=1;

u=stepfun(t,t0); n=length(t); for i=1:n

u(i)=b*u(i)*(t(i)-t0);

end y=sin(2*pi*t); f=y.*u;

plot(t,f);xlabel('时间(t)');ylabel('幅值f(t)');title('连续信号的相乘');

时域波形:

连续信号的相乘1050幅值f(t)-5-10-1500.511.522.5时间(t)33.544.55

③实现两个连续信号的移位,即f(t?t0),或者f(t?t0),常数t0?0 程序:

8

t=0:0.05:5; f1=sin(t); f2=sin(t+1); subplot(1,2,1); plot(t,f1);

title('f1(t)=sin(t)');

xlabel('t'),ylabel('f1(t)'); subplot(1,2,2); plot(t,f2);

title('f2(t)=sin(t+1)'); xlabel('t'),ylabel('f2(t)');

时域波形:

f1(t)=sin(t)10.80.60.40.210.80.60.40.2f2(t)=sin(t+1)f1(t)0-0.2-0.4-0.6-0.8-102t46f2(t)0-0.2-0.4-0.6-0.8-102t46

(2)序列的卷积运算

实现两个连续信号的卷积运算,f(t)?f1(t)*f2(t) 程序:

%计算连续信号的卷积积分 %f: 函数的样值向量 %k: 对应时间向量 %s:对应时间间隔 s=0.01;

k1=0:s:2; %生成k1的时间向量 k2=k1; %生成k2的时间向量 f1=3*k1; %生成f1的样值向量 f2=3*k2; %生成k2的样值向量 f=conv(f1,f2); f=f*s;

k0=k1(1)+k2(1); %序列f非零样值的起点

k3=length(f1)+length(f2)-2; %序列f非零样值的宽度

9

k=k0:s:k3*s;

subplot(3,1,1); ?(t)的波形 plot(k1,f1); title('f1(t)');

subplot(3,1,2); ò(t)的波形 plot(k2,f2); title('f2(t)');

subplot(3,1,3); ó(t)的波形 plot(k,f); title('f(t)');

时域波形:

f1(t)642010504020000.20.40.60.81f2(t)1.21.41.61.8200.20.40.60.81f(t)1.21.41.61.8200.511.522.533.54

3.系统分析

(1)连续LTI系统的时域分析

① 求系统y(2)(t)+6y(1)(t)+8y(t)=3x(1)(t)+9x(t)的冲激响应和阶跃响应。

i 冲激响应MATLAB程序:

手工计算微分方程得到的冲激响应的表达式为:

冲激响应: h(t)=(3/2)*exp(-4*t)*ε(t)+(3/2)*exp(-t)*ε(t)

阶跃响应: g(t)=(-3/8)*exp(-4*t)*ε(t)+(-3/4)*exp(-t)*ε(t)+(9/8)*ε(t)

MATLAB程序求得冲激响应和阶跃响应并与手工计算比较程: t=0:0.1:10;

b=[3 9]; a=[1 6 8]; s=step(b,a,t);

s1=(-3/8)*exp(-4*t)+(-3/4)*exp(-2*t)+(9/8); plot(t,s,'o',t,s1,'r'); title('Step Respones');

10

ylabel('y(t)'); xlabel('t');

legend('step函数','解析式') figure

h=impulse(b,a,t);

h1=3/2*exp(-4*t)+3/2*exp(-2*t); plot(t,h,'o',t,h1,'r');

title('Impulse Response'); ylabel('t'); xlabel('t');

legend('impluse函数','解析式') 系统的冲激响应图。

系统的阶跃响应图。

② 求系统y(2)(t)+y(t)=costu(t),y(0+)=y(1)(0+)=0的全响应。

i 系统在正弦激励下的零状态响应MATLAB程序

11

b=[1];a=[1 0 1]; sys=tf(b,a); t=0:0.1:10; x=cos(t);

y=lsim(sys,x,t); plot(t,y);

xlabel('时间(t)');ylabel('y(t)');title('零状态响应');

系统的零状态响应如图所示。

ii求系统的全响应MATLAB程序:

b=[1];a=[1 0 1];

[A B C D]=tf2ss(b,a); sys=ss(A,B,C,D); t=0:0.1:10;

x=cos(t);zi=[-1 0]; y=lsim(sys,x,t,zi); plot(t,y);

xlabel('时间(t)');ylabel('y(t)');title('系统的全响应');

系统的全响应如图所示

12

③ 已知某LTI系统的激励为f1=sintε(t),单位冲激响应为h(t)=te-2tε(t),给出系统零状态响应yf(t)的数学表达式。 MATLAB程序:

p=0.1; k1=0:p:10; f1=sin(k1); k2=k1;

f2=1*exp(-2*k1); f=conv(f1,f2); f=f*p;

k0=k1(1)+k2(1);

k3=length(f1)+length(f2)-2; k=k0:p:(k3*p+k0); subplot(2,2,1); plot(k1,f1); title('f1(t)');

xlabel('t'),ylabel('f1(t)'); subplot(2,2,2); plot(k2,f2); title('f2(t)');

xlabel('t'),ylabel('f2(t)'); subplot(2,2,3); plot(k,f);

h=get(gca,'position'); h(3)=2.5*h(3);

set(gca,'position',h); title('f(t)=f1(t)*f2(t)');

xlabel('t'),ylabel('f(t)');

13

f1(t)10.51f2(t)f1(t)0-0.5-1f2(t)05t100.5005t10f(t)=f1(t)*f2(t)0.5f(t)0-0.50246810t1214161820

④ 程序设计实验

计算下述系统在指数函数激励下的零状态响应。

1.65s4?0.331s3?576s2?90.6s?19080H(s)= s6?0.996s5?463s4?97.8s3?12131s2?8.11s MATLAB程序:

a=[1 0.996 463 97.8 12131 8.11 0];b=[1.65 -0.331 -576 90.6 19080]; sys=tf(b,a); t=0:0.1:10;

x=exp(-t);y=lsim(sys,x,t); plot(t,y);

xlabel('时间(t)');ylabel('y(t)');title('零状态响应')

系统的响应如图所示。

14

(2)连续LTI系统的频域分析

① 编程实现信号的傅里叶变换和傅里叶逆变换 I傅里叶变换。

i 已知连续时间信号f(t)=e-2|t|,通过程序完成信号f(t)的傅里叶变换

MATLAB程序:

R=0.02; t=-2:R:2; syms t;

f=fourier(exp(-2*abs(t))); ezplot(f);

信号f(t)的傅里叶变换如图所示。

4/(4+w2)10.90.80.70.60.50.40.30.20.10-6-4-20w246ii 试画出信号f(t)= MATLAB程序:

R=0.02; t=0:R:2;

2?3te?(t)的波形及其幅频特性曲线。 3

15

本文来源:https://www.bwwdw.com/article/yug2.html

Top