信号与系统时域分析研究性报告.docx
《信号与系统时域分析研究性报告.docx》由会员分享,可在线阅读,更多相关《信号与系统时域分析研究性报告.docx(28页珍藏版)》请在冰豆网上搜索。
信号与系统时域分析研究性报告
《信号与系统》课程研究性学习报告
姓名王明庆
学号12274107
同组成员董昊
李松霖
张立众
指导教师胡健
时间2013年10月8日
信号的时域分析专题研讨
【目的】
(1)掌握基本信号及其特性,了解实际信号的建模。
(2)掌握基本信号的运算,加深对信号时域分析基本原理和方法的理解,并建立时频之间的感性认识。
(3)学会仿真软件MATLAB的初步使用方法,掌握利用MATLAB进行信号表示和信号运算。
【研讨内容】
题目1:
基本信号的产生,语音的读取与播放
1)生成一个正弦信号,改变正弦信号的频率(可选择262,294,330,349,392,440,494,523Hz),观察波形变化,并听其声音的变化。
2)将频率为262,294,330,262,262,294,330,262,330,349,392,392,330,349,392,392Hz的正弦信号按顺序播放,听其声音的变化。
3)生成一个幅度为1、周期为2s、占空比为40%的周期矩形脉冲。
4)(董昊)本组男生、女生分别朗读“信号是指消息的表现形式与传送载体”,并录音成wav格式,利用MATLAB进行音频信号的读取与播放,画出其时域波形。
【温馨提示】
(1)利用MATLAB函数wavread(file)读取.wav格式文件。
(2)利用MATLAB函数sound(x,fs)播放正弦信号和声音信号。
(1)
【题目分析】
正弦信号的形式为
和
,分别用MATLAB的内部函数
和
表示,其调用形式为
、
。
【仿真程序】
A=1;f=262;fs=44100
t=0:
1/fs:
0.02 ;
ft=A*sin(2*f*pi*t);
plot(t,ft)
sound(ft)
【仿真结果】
f=262
f=294:
f=330:
f=349:
f=392,
f=440,
f=494,
f=523
【结果分析】
当正弦信号频率增大时,周期变小,声音音调变高。
(2)
【题目分析】
将在matlab中表示题中各频率的正弦信号的数组按题目中的顺序组成一个一维数组ft,用sound(ft)播放之。
【仿真程序】
f1=262;f2=294;f3=330;f4=349;f5=392;f6=440;f7=494;fi=523;
fs=44100;
T1=0.5;
t=[0:
1/fs:
T1];
dol=sin(2*pi*f1*t);
rel=sin(2*pi*f2*t);
mil=sin(2*pi*f3*t);
fal=sin(2*pi*f4*t);
sol=sin(2*pi*f5*t);
lal=sin(2*pi*f6*t);
til=sin(2*pi*f7*t);
do2l=sin(2*pi*fi*t);
ft=[dolrelmildoldolrelmildolmilfalsolsolmilfalsolsol];
sound(ft,fs)
【仿真结果】
儿歌《两只老虎》的曲片段。
【结果分析】
不同频率的无意义的信号在时域的叠加,形成了有意义的信号。
(3)
【题目分析】
周期方波信号在matlab中用square函数表示,其调用形式为x=square(w*t,duty_cycle);用以产生一个幅度是+1和-1,基波频率为w的矩形脉冲信号。
其占空比为duty_circle
【仿真程序】
t=-2:
.001:
2;
y=square(pi*t,40);plot(t,y)
axis([-2,2,-1.5,1.5])
【仿真结果】
(4)
【题目分析】
利用MATLAB函数wavread(file)读取.wav格式文件。
(音频信号见附件)
【仿真程序】
Fs=44100;bits=32;
[y,Fs,bits]=wavread('研学1男声.wav');
wavplay(y,Fs)
plot(y)
Fs=44100;bits=32;
[y,Fs,bits]=wavread('研学1女声.wav');
wavplay(y,Fs)
plot(y)
【仿真结果】
男声时域波形:
女声时域波形:
【结果分析】
排除波形幅度,节奏的疏密差别,男女声时域波形无法明显区分。
【自主学习内容】
函数调用语句;改变白标度画波形;amr格式语音向wav格式转换;音频信号读取与播放。
【阅读文献】
[1]陈后金.信号与系统.高等教育出版社;
[2]敬照亮.matlab教程与运用.[M].清华大学出版社。
【发现问题】
抽样点数不变,而在时域放大横坐标可以区分不同频率的正弦信号,但有信息的语音信号却不能使用这种方法,否则会丢失信息。
问题探究】
为有效解决信号区分问题,要对信号进行频域分析。
【研讨内容】
题目2:
信号的基本运算(语音信号的翻转、展缩)
1)将题目1(5)录制的男生音频信号在时域上进行延展、压缩,画出相应的时域波形,并进行播放,听声音有和什么变化。
2)将题目1(5)录制的男生音频信号在时域上进行幅度放大与缩小,画出相应的时域波形,并进行播放,听声音有和什么变化。
3)将题目1(5)录制的男生音频信号在时域上进行翻转,画出相应的时域波形,并进行播放,听声音有和什么变化。
4)画出
的波形,
的取值如下表所示。
0.5000
0.3183
0.0000
-0.1061
-0.0000
0.0637
0.0000
-0.0455
0.5000
0.2026
0.0000
0.0225
0.0000
0.0081
0.0000
0.0041
0.7500
0.2026
-0.1013
0.0225
0.0000
0.0081
-0.0113
0.0041
(1)
【题目分析】
对通过wavread读取的音频信号y,y(1:
n-1:
end)表示n倍压缩,y(1:
1/n:
end)表示n伸展。
【仿真程序】
%原始音频信号
Fs=44100;bits=32;
[y,Fs,bits]=wavread('研学1男声.wav');
wavplay(y,Fs)
plot(y)
%原信号1/3倍压缩
Fs=44100;bits=32;
[Y,Fs,bits]=wavread('研学1男声.wav');
Y1=Y(1:
2:
end);
wavplay(Y1,Fs)
plot(Y1)
%原信号的3倍伸展
Fs=44100;bits=32;
[Y,Fs,bits]=wavread('研学1男声.wav');
Y2=Y(1:
1/3:
end);
wavplay(Y2,Fs)
plot(Y2)
【仿真结果】
原男声语音信号波形
1/3倍压缩后波形
3倍伸展后波形
【结果分析】
排除标度差异,信号进行1/3倍压缩和3倍延展后,信号的波形分别变得疏散和密集。
1/3倍压缩后的声音语速快,音调高,信息有丢失;3倍伸展后的声音又慢又粗,像鬼叫。
(2)
【题目分析】
对通过wavread读取的音频信号y,n*y表示幅度n倍放缩。
【仿真程序】
%原始音频信号
Fs=44100;bits=32;
[y,Fs,bits]=wavread('研学1男声.wav');
wavplay(y,Fs)
plot(y)
%幅度两倍放大
Fs=44100;bits=32;
[Y,Fs,bits]=wavread('研学1男声.wav');
wavplay(2*Y,Fs)
plot(2*Y)
%幅度0.5倍缩小
Fs=44100;bits=32;
[Y,Fs,bits]=wavread('研学1男声.wav');
wavplay(0.5*Y,Fs)
plot(0.5*Y)
【仿真结果】
原男声语音信号波形
幅度两倍放大后波形
幅度0.5倍缩小后波形
【结果分析】
幅度放大,声音变强;幅度缩小,声音变弱。
(3)
【题目分析】
对信号y,y1是其翻转,则y1=flipud(y).
【仿真程序】
Fs=44100;bits=32;
[y,Fs,bits]=wavread('研学1男声.wav');
y1=flipud(y);
wavplay(y1,Fs)
plot(y1)
【仿真结果】
【结果分析】
翻转后语音信号响度,音调,音色均无变化,但内容完全倒置,好像在听另一种语言。
(4)
【题目分析】
此处各信号可看在同一组基上不同的线性组合。
【仿真程序】
a=[0.50.31830-0.106100.06370-0.0455];
b=[0.50.202600.022500.008100.0041];
c=[0.750.2026-0.10130.022500.0081-0.01130.0041];
t=0:
0.01:
3;y1=0;y2=0;y3=0;
forn=1:
8
y1=a(n)*cos((n-1)*pi*t)+y1;
y2=b(n)*cos((n-1)*pi*t)+y2;
y3=c(n)*cos((n-1)*pi*t)+y3;
end
subplot(2,2,1);plot(y1);
subplot(2,2,2);plot(y2);
subplot(2,2,3);plot(y3);
【仿真结果】
【结果分析】
将信号分解为正弦信号的线性组合,信号的特征取决于各项前面的系数。
【自主学习内容】
如何对从文件中读得,没有表达式的信号进行时域展缩;翻转语句的调用;如何在一个figure中画多幅图;循环语句的使用。
【阅读文献】
[1]陈后金.信号与系统.高等教育出版社;
[2]敬照亮.matlab教程与运用.[M].清华大学出版社。
【发现问题】
在进行信号的1/3倍压缩时,会出现一下这句话:
Warning:
Integeroperandsarerequiredforcolonoperator(冒号运算符)whenusedasindex。
【问题探究】
matlab数组索引必须为正整数或逻辑值,否则将进行四舍五入。
系统的时域分析专题研讨
【目的】
(1)掌握系统响应的时域求解,加深对系统时域分析基本原理和方法的理解。
(2)掌握连续系统零状态响应(卷积积分)数值计算的方法。
(3)学会仿真软件MATLAB的初步使用方法,掌握利用MATLAB求解连续系统和离散系统的零状态响应。
(4)培养学生发现问题、分析问题和解决问题的能力。
【研讨内容】
题目1:
系统响应时域求解
1)求一个RLC电路的零输入响应和零状态响应,
2)录制一段不超过8秒的wav格式的音乐信号,将其中混入随机噪声,然后用M点滑动平均系统对受噪声干扰的信号去噪,改变M点数,比较不同点数下的去噪效果,
【温馨提示】
利用MATLAB函数rand(M,N)产生M行N列[0,1]上均匀分布的随机噪声。
(2)
【题目分析】:
M点滑动平均系统,
相当于左边阶数为0的差分方程,左边系数矩阵a=[100……],右边系数矩阵b=[1/M1/M1/M1/M……]。
差分方程调用filter函数。
一维随机矩阵的产生用rand(n,1).
【仿真程序】
clearall
fs=44100;bits=16;
[y,fs,bits]=wavread('E:
/信号与系统/语音/研学2.wav');
wavplay(y,fs);
figure
(1);plot(y);xlabel('t');ylabel('y');
d=0.02*(rand(length(y),1)-0.5);
y1=y+d;
wavplay(y1,fs);
figure
(2);
plot(y1);xlabel('t');ylabel('y1');
%5点滑动平均%
M=5;b=ones(M,1)/M;a=1;
Y=filter(b,a,y1);
wavplay(Y,fs);
figure(3);
subplot(2,2,1);plot(Y);xlabel('t');ylabel('Y');
%10点滑动平均%
M=10;b=ones(M,1)/M;a=1;
Y=filter(b,a,y1);
wavplay(Y,fs);
subplot(2,2,2);plot(Y);xlabel('t');ylabel('Y');
%15点滑动平均%
M=15;b=ones(M,1)/M;a=1;
Y=filter(b,a,y1);
wavplay(Y,fs);
subplot(2,2,3);plot(Y);xlabel('t');ylabel('Y');
%20点滑动平均%
M=20;b=ones(M,1)/M;a=1;
Y=filter(b,a,y1);
wavplay(Y,fs);
subplot(2,2,4);plot(Y);xlabel('t');ylabel('Y');
【仿真结果】
原语音信号:
混入噪声后语音信号:
滑动平均去噪后波形:
【结果分析】
原语音信号混入噪声后,波形出现噪声带,播放出来的是带白噪声的语音;分别使用五点、十点,十五点,二十点滑动平均系统处理含有噪声的信号,波形上噪声带幅度依次减小,但未完全消除,同时有意义语音信号的幅度也相应依次减小,播放出来的声音渐清晰,同时也渐弱。
【自主学习内容】
滑动平均系统,差分方程,噪声的模拟。
【阅读文献】
[1]陈后金.信号与系统.高等教育出版社;
[2]敬照亮.matlab教程与运用.[M].清华大学出版社。
【发现问题】
当M足够大,如M=100000,用此滑动平均系统直接对白噪声信号去噪,发现输出信号幅度很小,但仍然不为零,是一条随机弯曲的线条。
【问题探究】
滑动平均系统并不是最有效的去噪系统。
【研讨内容】
题目2:
连续信号卷积的近似计算
两个连续信号的卷积定义为
为了进行数值计算,需对连续信号进行抽样。
记x[k]=x(k∆),h[k]=h(k∆),∆为进行数值计算的抽样间隔。
则连续信号卷积可近似的写为
(1)
这就可以利用conv函数可近似计算连续信号的卷积。
设x(t)=u(t)-u(t-1),h(t)=x(t)*x(t),
(a)为了与近似计算的结果作比较,用解析法求出y(t)=x(t)*h(t);
(b)用不同的∆计算出卷积的数值近似值,并和(a)中的结果作比较;
(c)证明
(1)式成立;
(d)若x(t)和h(t)不是时限信号,则用上面的方法进行近似计算会遇到什么问题?
给出一种解决问题的方案;
(e)若将x(t)和h(t)近似表示为
推导近似计算卷积的算法。
取相同的抽样间隔,比较两种方法的计算卷积误差。
【题目分析】
x(t)=u(t)-u(t-1),
则h(t)=x(t)*x(t)=u(t)*u(t)+u(t-1)*u(t-1)+2u(t)*u(t-1)=r(t)-2r(t-1)+r(t-2),
y(t)=x(t)*h(t)=
即
0,t<0
0<=t<1
y(t)=
1<=t<2
2<=t<3
0t>=3
x[k]用逻辑表达式来实现。
h([lk]为三角波信号,用tripul函数来实现,调用形式为
h=tripuls(k,w),其幅度为1,宽度为w.证明
(1)成立即用两种方法画出图像,看其拟合程度。
【仿真程序】
dt=0.1;
k=-1:
dt:
4;
%解析法卷积结果%
Y=k.^2/2.*((k>=0)&(k<1))+(-k.^2+3*k-1.5).*((k>=1)&(k<2))+(k-3).^2/2.*((k>=2)&(k<3));
x=1*((k>=0)&(k<=1));
h=tripuls(k-1,2);
%近似计算结果%
y=dt*conv(x,h);
t=-2:
dt:
8;
plot(k,Y,'b-',t,y,'r--');xlabel('k');legend('Y(t)','y[(t)');
gridon
【仿真结果】
dt=0.1
dt=0.05
dt=0.01
【结果分析】
取样间隔dt越小,近似计算结果y(t)与解析法的精确结果Y(t)拟合得越好。
当dt=0.01时,曲线y(t)与Y(t)几乎完全重合。
即证明了
(1)式成立。
【自主学习内容】
逻辑量既不是single型也不是double型。
用关于自变量的逻辑表达式实现u(t)函数,以建立分段函数的表达式。
【发现问题】
若x(t)和h(t)不是时限信号,则用上面的方法进行近似计算,抽样点有无穷多个,程序无法实现。
这里给出一种解决问题的方法,即对x(t),h(t)进行截断,曲信息量大而集中的部分,舍信息量小而稀疏的部分,再使用以上方法进行卷积近似机算。
【问题探究】
若将x(t)和h(t)近似表示为
推导近似计算卷积的算法。
取相同的抽样间隔,比较两种方法的计算卷积误差。
1、分析。
=x(fix(t/⊿)),
=h(fix(t/⊿)),
上式中,fix为matlab的向0取整函数。
这种近似方法是将定义在(0,b)上的函数x(t)分割为[b/⊿]个小区间,第n小区间内函数值均近似为x(n⊿)。
就本题而言,x(t)=u(t)-u(t-1),h(t)=r(t)-2r(t-1)+r(t-2),该近似法未对u(t)作多大改变,可认为仍有X(t)=u(t)-u(t-1);对h(t),H(t)=tripuls(fix(t/⊿).*⊿-1,2).则卷积近似结果Y(t)=conv(X,H).
2、仿真程序
dt=0.01;t=-1:
dt:
4;
Dt=0.5;
h=tripuls(fix(t/Dt).*Dt-1,2);
plot(t,h)
dt=0.001;t=-1:
dt:
4;
Dt=0.1;
h=tripuls(fix(t/Dt).*Dt-1,2);
plot(t,h)
dt=0.001;k=-1:
dt:
4;
Dt=0.1;
%解析法卷积结果%
Y=k.^2/2.*((k>=0)&(k<1))+(-k.^2+3*k-1.5).*((k>=1)&(k<2))+(k-3).^2/2.*((k>=2)&(k<3));
x=1*((k>=0)&(k<=1));
h=tripuls(fix(k/Dt).*Dt-1,2);
%近似计算结果,法2是建立在法1的基础上%
y=dt*conv(x,h);
t=-2:
dt:
8;
plot(k,Y,'b-',t,y,'r--');xlabel('k');legend('Y(t)','y[(t)');
gridon
3、仿真结果
第一种方法Dt=0.1
第二种方法,Dt=0.1
4、结果分析
显然第二种方法比第一种方法误差小的多。