姓名 郭玉佼 学号 13213034 同组成员 陈潇(13213033) 李书玮 (13213039)
翟思民(13213007) 宋晓凤 (13213021) 指导教师 胡健 李居朋 时间 2014.11
信号的时域分析专题研讨
【目的】
(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)
【题目分析】
正弦信号的形式为
Acos(?0t??)和Asin(?0t??),分别用MATLAB的内部函数cos和sin表
示,其调用形式为y?A*cos(w0*t?phi)、y?A*sin(w0*t?phi)。 【仿真程序】
A=1; w=3*pi; phi=pi/4; t=0:0.01:8; ft=A*sin(w*t+phi); plot(t,ft)
sound(ft)
【仿真结果】
10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678
改变频率的大小: w=2*pi*262 rad/s时,
A=1;w=2*pi*262;phi=pi/4; t=0:0.01:8;
ft=A*sin(w*t+phi); plot(t,ft) sound(ft)
图像为
10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678
w=2*pi*294 rad/s时,
A=1;w=2*pi*294;phi=pi/4; >> t=0:0.01:8;
>> ft=A*sin(w*t+phi); >> plot(t,ft) sound(ft)
图像为
10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678
w=2*pi*330 rad/s时,
A=1;w=2*pi*330;phi=pi/4; >> t=0:0.01:8;
>> ft=A*sin(w*t+phi); >> plot(t,ft) sound(ft)
10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678
w=2*pi*349rad/s时,
A=1;w=2*pi*349;phi=pi/4; >> t=0:0.01:8;
>> ft=A*sin(w*t+phi); >> plot(t,ft) >> sound(ft)
10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678
w=2*pi*392rad/s时,
10.80.60.40.20-0.2-0.4-0.6-0.8-1012345678
【结果分析】
当正弦信号角频率增大时,周期减小,声音音调变高
【题目分析】
周期方波信号在matlab中用square函数表示,其调用形式为x=square(w*t,duty_cycle);用以产生一个幅度是+1和-1,基波频率为w的矩形脉冲信号。
【仿真程序】
t=-3:0.0001:3; A=1;T=pi;;w0=2*pi/T;
ft=(1/2)*A*square(w0*t,40)+1/2; plot(t,ft) axis([-3,3,-1,2])
【仿真结果】
21.510.50-0.5-1-3-2-10123
(3)
【题目分析】
利用MATLAB函数 wavread(file)读取.wav格式文件。(音频信号见附件)
【仿真程序】 fs=44100;bits=16;
[y,fs,nbits]=wavread('信号.wav');
sound(y,fs) plot(y) 【仿真结果】 男声时域波形
0.60.40.20-0.2-0.4-0.6-0.800.511.522.533.5x 105
fs=44100;bits=32;
[y,fs,nbits]=wavread('cricket.wav'); sound(y,fs) plot(y)
女声时域波形
86420-2-4-6-8x 10400.511.522.5x 1035
【结果分析】
根据时域波形无法区分男声和女声。 【自主学习内容】
函数调用语句;模拟函数;音频信号读取与播放函数;
【阅读文献】
[1] 陈后金·胡健·薛健-信号与系统[M]·高等教育出版社,2007.12;
[2] 朱衡军·肖燕彩·邱成·齐红元-MATLAB语言及实践教程[M]·清华大学出版社 北京交通大学
出版社,2009.9;
[3] 苏新红· 张海燕-信号与系统简明教程[M]·北京邮电大学出版社,2010.6
【发现问题】
根据声音信号的时域特征不能有效区分出男声和女声 【问题探究】
编写Matlab语句时要细心,一个字母的错误可能导致大的错误,需要及时发现,分析并改正
【研讨内容】
题目2:信号的基本运算(语音信号的翻转、展缩)
1) 将题目1(5)录制的男生音频信号在时域上进行延展、压缩,画出相应的时域波形,并进
行播放,听声音有和什么变化。
2) 将题目1(5)录制的男生音频信号在时域上进行幅度放大与缩小,画出相应的时域波形,
并进行播放,听声音有和什么变化。
3) 将题目1(5)录制的男生音频信号在时域上进行翻转,画出相应的时域波形,并进行播放,
听声音有和什么变化。 4) 画出x(t)?a0??n?17ancos(nπt)的波形,an的取值如下表所示。
a3 -0.1061 0.0225 0.0225 a0 0.5000 0.5000 0.7500
a1 0.3183 0.2026 0.2026 a2 0.0000 0.0000 -0.1013 a4 -0.0000 0.0000 0.0000 a5 0.0637 0.0081 0.0081 a6 0.0000 0.0000 -0.0113 a7 -0.0455 0.0041 0.0041
【题目分析】
掌握信号的基本运算,学会用matlab进行信号的运算。
【仿真程序】 原始声音信号: fs=44100;bits=16;
[y,fs,nbits]=wavread('信号.wav'); sound(y,fs) plot(y)
原信号的3倍延展: fs=44100;bits=16;
[y,fs,nbits]=wavread('信号.wav'); y1=y(1:2:end);sound(y1,fs); plot(y1)
原信号的0.5倍压缩 fs=44100;bits=32;
[y,fs,bits]=wavread('信号.wav'); y2=y(1:1/2:end);sound(y2,fs); plot(y2)
【仿真结果】 原始声音信号:
0.60.40.20-0.2-0.4-0.6-0.800.511.522.533.5x 105
原信号的3倍延展:
0.60.40.20-0.2-0.4-0.6-0.800.511.522.533.5x 105
原信号的0.5倍压缩
0.60.40.20-0.2-0.4-0.6-0.802468101214x 105
【结果分析】
由上面的图示可以看出,信号进行0.5倍压缩和3.0倍延展后,信号的波形分别变得疏散和密集,同时由存储的处理后的信号音频,可以听出0.5倍压缩后的信号的音色变粗了,而3.0倍延展后的信号音频的音色变尖了。0.5压缩,本应该在X=2处播放的部分,被放到了X=4处播放,所以音频听起来变得音色粗了,波形变得疏散了;对3.0延展而言,原本在X=3处播放的部分在X=1处播放了,因此音频听起来音色变得尖了,波形密集了。
(2)
【题目分析】
掌握信号的基本运算,学会用matlab进行信号的运算。 【仿真程序】
原信号的幅度放大到2倍 fs=44100;bits=16;
[y,fs,bits]=wavread('信号.wav'); y1=y(1:1:end);sound (2*y1,fs); plot(y1)
原信号的幅度缩小到0.5倍 fs=44100;bits=16;
[y,fs,bits]=wavread('信号.wav'); y2=y(1:1:end);sound(0.5*y2,fs);
plot(y2)
【仿真结果】 幅度放大到2倍
0.60.40.20-0.2-0.4-0.6-0.80123456x 1075
幅度缩小到0.5倍
0.60.40.20-0.2-0.4-0.6-0.80123456x 1075
【结果分析】
对信号幅度的2倍和0.5倍的改变,音频上可以听出来音量大小发生了改变。2倍变化时,音量变大,0.5倍时音量变小。
(3)
【题目分析】
掌握信号的基本运算,学会用matlab进行信号的运算。
【仿真程序】
fs=44100;bits=16;
[y,fs,bits]=wavread('信号.wav'); y1=flipud(y);sound(y1,fs); plot(y1)
【仿真结果】
0.60.40.20-0.2-0.4-0.6-0.800.511.522.533.5x 105
【结果分析】
翻转信号时,图示上可以看出图形的翻转变化。音频上,音乐的播放发生了倒置。 (4)
【题目分析】
掌握信号的基本运算,学会用matlab进行信号的运算。 【仿真程序】
1、 a0=0.5000
A=[ 0.5000 0.5000 0.7500]; B=[0.3183 0.2026 0.2026 0.0000 0.0000 -0.1013 -0.1061 0.0225 0.0225 -0.0000 0.0000 0.0000 0.0637 0.0081 0.0081
0.0000 0.0000 -0.0113 -0.0455 0.0041 0.0041 ];
x=0;y=0;
for i=1:1:7 t=0:0.0001:10
y=y+B(i,1).*cos(i.*pi.*t) end
x=y+A(1,1) plot(t,x)
a0=0.5000
x=0;y=0;
for i=1:1:7 t=0:0.0001:10
y=y+B(i,2).*cos(i.*pi.*t) end
x=y+A(1,2) plot(t,x)
a0=0.7500
x=0;y=0;
for i=1:1:7 t=0:0.0001:10
y=y+B(i,3).*cos(i.*pi.*t) end
x=y+A(1,3) plot(t,x)
【仿真结果】
0.90.80.70.60.50.40.30.2012345678910
0.750.70.650.60.550.50.450.40.350.30.25012345678910
0.90.850.80.750.70.650.60.550.50.450.4012345678910
【自主学习内容】
如何使用相应的MATLAB函数将音频信号录入播放,以及如何将其音质改变。信号压缩、延展、增减幅和翻转的相应技术。
【阅读文献】
[1] 陈后金·胡健·薛健-信号与系统[M]·高等教育出版社,2007.12;
[2] 朱衡军·肖燕彩·邱成·齐红元-MATLAB语言及实践教程[M]·清华大学出版社 北京交通大学
出版社,2009.9;
[3] 苏新红· 张海燕-信号与系统简明教程[M]·北京邮电大学出版社,2010.6
【发现问题】
(专题研讨或相关知识点学习中发现的问题): 画出an的波形,讨论x(t)波形与an取值的关系。
在进行信号的0.5倍压缩时,运行程序后,会出现一下这句话:Warning: Integer operands are required for colon operator when used as index不过不影响最终信号的输出。 【问题探究】
这句话是说,整数运算所需要的冒号运算符时,作为参考指标。0.5倍压缩非整数运算,在这样的情况下,冒号运算符要作为参考指标。
系统的时域分析专题研讨
【目的】
(1) 掌握系统响应的时域求解,加深对系统时域分析基本原理和方法的理解。 (2) 掌握连续系统零状态响应(卷积积分)数值计算的方法。
(3) 学会仿真软件MATLAB的初步使用方法,掌握利用MATLAB求解连续系统和离散系统的零状态响应。
(4) 培养学生发现问题、分析问题和解决问题的能力。 【研讨内容】
题目1:系统响应时域求解
1) 求一个RLC电路的零输入响应和零状态响应,
2) 将信号与系统时域分析专题研讨1(4)录制的语音信号中混入随机噪声,然后用M点滑动平
均系统对受噪声干扰的信号去噪,改变M点数,比较不同点数下的去噪效果,
【温馨提示】
利用MATLAB函数 rand(M,N)产生M行N列[0,1]上均匀分布的随机噪声。
题目分析:
1)题目要求一个RLC电路的零输入响应和零状态响应:自己用EWB 软件画一个简单的RLC电路图,如图。求零输入响应时,调用lsim函数。
其中L=2Н,C=3F,R=6Ω。x(t)是输入信号,y(t)是输出响应。初态: y(0-)=1,y’(0-)=2,x(t)是振幅为10,周期为1,初相位为0的正弦信号。
由这个电路图可以写出方程:y’’(t)+3y’(t)+6y(t)=6x(t)。下面编写程序代码求零输入响应:
仿真程序:
num=[6];den=[1 3 6];R0=[2 1]; sys=tf(num,den); sys1=ss(sys); t=0:0.01:8; u=0*t;
lsim(sys1,u,t,R0); axis([0 8 -0.5 2.5])
仿真结果:
Linear Simulation Results2.521.5Amplitude10.50-0.501234Time (sec)5678
求零状态响应时,同样的调用lsim函数。由已知条件:x(t)=10sin(2π*t) 仿真程序:
num=[6];den=[1 3 6]; sys=tf(num,den); t=0:0.01:8;
xt=10*sin(2*pi*t); yt=lsim(sys,xt,t); plot(t,yt,'r'); axis([0 8 -2 4])
仿真结果:
43210-1-2012345678
2)题目要求采用M点滑动平均系统进行去噪。M点滑动平均系统可以看成是N=0的差分方程。调用filter函数时,调用参数a-1=1,b为有M个元素的向量,b中每个元素的值为1/M。即M点的滑动平均系
1统输入输出关系为:y[k]?MM?1n?0?x[k?n],同时我们将噪声设为n,函数为n=rand(n,1);原始信号
为s。通过调整M值,观察和比较去噪效果,从而得出结论。
仿真程序:
fs=44100;bits=32;R=100000;
[x,fs,bits]=wavread('cricket.wav',R); k=0:R-1;
d=(rand(R,2)-0.5)*0.3;; y=x+d;
wavplay(y,fs);
figure(1);plot(k,d, 'r-.', k,x, 'b--', k,y, 'g-'); xlabel('k'); legend('d[k]', 'x[k]', 'y[k]');
M=20;b=ones(M,1)/M;a=1; s=filter(b,a,y); wavplay(s,fs);
figure(2);plot(k,x, 'b--', k,s, 'r-'); xlabel('k');legend('x[k]', 's[k]')
仿真结果: M=100
x 10486420-2-4-6 d[k]x[k]y[k]-8 012345k678910x 104
86420-2-4-6x 104 x[k]s[k]-8 012345k678910x 104
M=20
x 10486420-2-4-6 d[k]x[k]y[k]-8 012345k678910x 104
86420-2-4-6x 104 x[k]s[k]-8 012345k678910x 104
M=5时:
M=10时:
8x 104 d[k]6x[k]y[k]420-2-4-6-80 12345678910kx 1048x 104 x[k]6s[k]420-2-4-6-80 12345678910kx 104
86420-2-4-6x 104 d[k]x[k]y[k]-8 012345k678910x 10486420-2-4-6x 104 x[k]s[k]-8 012345k678910x 104
M=1时:
x 10486420-2-4-6 d[k]x[k]y[k]-8 012345k678910x 104
86420-2-4-6x 104 x[k]s[k]-8 012345k678910x 104
【结果分析】
对于不同的M值,去噪的效果不同,M值越大,去噪效果越明显,反之,去噪效果越差。 【自主学习内容】
Lsim函数的运用,filter函数的运用,对正常信号的加噪处理(即randn函数的运用)还有运用M点滑动平均系统对噪声信号进行去噪。 【阅读文献】
[1] 陈后金·胡健·薛健-信号与系统[M]·高等教育出版社,2007.12;
[2] 朱衡军·肖燕彩·邱成·齐红元-MATLAB语言及实践教程[M]·清华大学出版社 北京交通大学
出版社,2009.9;
[3] 苏新红· 张海燕-信号与系统简明教程[M]·北京邮电大学出版社,2010.6 【发现问题】
当开始时使用rand函数加噪时,令 d=0.01*rand(1,R)*0.3-0.5;结果提示??? Error using ==> plus Matrix dimensions must agree.意思d和x的维数没有保持一致。改用randn函数时,令d=0.01*randn(size(x))*0.3-0.5就成功地把噪声加入了进去。 【问题探究】
在对两个函数进行加法计算时要保持维数相同。 题目2:连续信号卷积的近似计算
两个连续信号的卷积定义为
? y(t)????x(?)h(t??)d?
为了进行数值计算,需对连续信号进行抽样。记x[k]=x(k抽样间隔。则连续信号卷积可近似的写为
h[k]=h(k为进行数值计算的
(1)
y(kΔ)?Δx[k]?h[k]
这就可以利用conv函数可近似计算连续信号的卷积。设x(t)=u(t(a)为了与近似计算的结果作比较,用解析法求出y(t)=x(t(b)用不同的计算出卷积的数值近似值,并和(c)证明(1)式成立;
u(t,h(t)=x(tx(t),
h(t);
中的结果作比较;
(d)若x(t)和h(t)不是时限信号,则用上面的方法进行近似计算会遇到什么问题?给出一种解决问题的方案;
(e) 若将x(t)和h(t)近似表示为
?x(t)?h(t)?n?????x(nΔ)pΔ(t?0.5Δ?nΔ) h(nΔ)pΔ(t?0.5Δ?nΔ)
n????推导近似计算卷积的算法。取相同的抽样间隔,比较两种方法的计算卷积误差。
题目分析:
通过抽样对连续卷积运算进行模拟,加深对卷积的理解。 仿真程序:
a) 计算过程:
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(th(t)=t2u(t)?1231(t?1)2u(t?1)?(t?3)2u(t?3)即 22
b) T=0.1; k=-1:T:4;
f1=1*((k>=0)&(k<=1)); f2=tripuls(k-1,2); y=T*conv(f1,f2); tmin=-2;tmax=8; t1=tmin:0.1:tmax; plot(t1,y) grid on
c) 如果x(t)和h(t)不是时限信号时,则会有无穷多个抽样点,程序将无法处理,进行计算。 d) x(t)?n?????x(nΔ)pΔ(t?0.5Δ?nΔ)
h(t)?n?????h(nΔ)pΔ(t?0.5Δ?nΔ)
这样的表达相当于把x(t)和h(t)分为无穷多个宽度为Δ的信号的和 仿真结果:
b)
T=0.001
T=0.01
T=0.1
结果分析:
在数值计算卷积时,对于不同的抽样间隔,卷积结果纵坐标会有不同。 自主学习内容:
卷积函数conv的调用格式 阅读文献:
[1] 陈后金·胡健·薛健-信号与系统[M]·高等教育出版社,2007.12;
[2] 朱衡军·肖燕彩·邱成·齐红元-MATLAB语言及实践教程[M]·清华大学出版社 北京交通大学
出版社,2009.9;
[3] 苏新红· 张海燕-信号与系统简明教程[M]·北京邮电大学出版社,2010.6