北京交通大学信号与系统研究性学习题目1级.docx
- 文档编号:25414897
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:32
- 大小:479.41KB
北京交通大学信号与系统研究性学习题目1级.docx
《北京交通大学信号与系统研究性学习题目1级.docx》由会员分享,可在线阅读,更多相关《北京交通大学信号与系统研究性学习题目1级.docx(32页珍藏版)》请在冰豆网上搜索。
北京交通大学信号与系统研究性学习题目1级
《信号与系统》课程研究性学习手册
姓名
学号
同组成员
指导教师胡健/彭亚辉
时间2014年11月4日
信号的时域分析专题研讨
【目的】
(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自带函数sin来生成正弦信号.改变w0值即可改变正弦信号的频率,在一个程序下将题目给出频率的正弦信号用sound函数播放.
2.矩形脉冲
利用MATLAB自带的square函数,设置占空比为40%,生成矩形脉冲的波形.
3.音频的录制与播放
分别将男生和女生朗读的声音用wavread读取,并画出时域波形.
【仿真程序】
(1)改变频率正弦信号程序示例:
a=1;
w0=2*pi*262;
f=262;
t=0:
0.01/262:
2/262;
xt=a*sin(w0*t);
plot(t,xt);
t=0:
0.01/262:
2
xt=a*sin(w0*t)
sound(xt,f*100);
(2)顺序播放不同频率正弦信号的程序示例:
f1=262;f2=294;f3=330;f4=262;f5=262;f6=294;f7=330;f8=262;
f9=330;f10=349;f11=392;f12=392;f13=330;f14=349;f15=392;f16=392;
f=44100;
t=0:
1/f:
0.5;
y1=sin(2*pi*f1*t);
y2=sin(2*pi*f2*t);
y3=sin(2*pi*f3*t);
y4=sin(2*pi*f4*t);
y5=sin(2*pi*f5*t);
y6=sin(2*pi*f6*t);
y7=sin(2*pi*f7*t);
y8=sin(2*pi*f8*t);
y9=sin(2*pi*f9*t);
y10=sin(2*pi*f10*t);
y11=sin(2*pi*f11*t);
y12=sin(2*pi*f12*t);
y13=sin(2*pi*f13*t);
y14=sin(2*pi*f14*t);
y15=sin(2*pi*f15*t);
y16=sin(2*pi*f16*t);
y=[y1y2y3y4y5y6y7y8y9y10y11y12y13y14y15y16];
sound(y,f);
(3)生成幅度为1、周期为2s、占空比为40%的周期矩形脉冲程序示例:
t=0:
0.01:
4;
y=square(pi*t,40);
plot(t,y);
axis([0,4,-2,2]);
(4)画出音频信号时域波形的程序示例:
t=0:
0.01:
4;
y=square(pi*t,40);
plot(t,y);
axis([0,4,-2,2]);
【仿真结果】
(1)f=262时,波形如下图:
(2)改变f后,如f=440时,波形如图:
(3)按仿真程序3中MATLAB程序得到的矩形脉冲,波形如图:
(4)按仿真程序4中MATLAB程序得到的男女声时域波形如图:
1)女声波形:
2)男声波形:
【结果分析】
(1)随着正弦信号(角)频率的变化,其波形以及所听声音的变化
随着正弦信号的角频率逐渐增大,幅值没有改变,周期减小,波形变窄,听到的声音越来越尖锐.其之间的规律为正弦信号的角频率越大则听到的声音越尖细.
(2)男声和女声信号时域波形的区别
从时域波形的角度,二者在幅度和波形紧凑程度上有少量差别,但无法从波形明确分辨出男声和女声信号.
【自主学习内容】
在本题目中,我们学习了sound、square、wavread等函数的使用方法、占空比的定义,熟悉了MATLAB的基本操作.
【阅读文献】
[1]薛山,《MATLAB2012简明教程》,清华大学出版社,2013年6月.
[2]陈后金,《信号与系统》,高等教育出版社.
【发现问题】(专题研讨或相关知识点学习中发现的问题):
根据声音信号的什么特征能有效区分出男声和女声?
根据声音信号的频率可以分辨出男声和女声,女声声音信号的频率高于男声声音信号.
【问题探究】
由于从时域波形无法彻底研究问题,我们需要想办法将声音信号在频域分解,进一步研究不同信号的性质.
【研讨内容】
题目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
【题目分析】
对录制的男声音频信号进行时域上的延展和压缩即对时间变量进行放大或缩小,利用t=y(1:
1/2:
end/2)等语句可以实现.幅度的变换可以直接对信号y做放大与缩小.而信号时域的翻转可以利用MATLAB自带函数flipud实现.结合subplot的使用,从而产生原始信号与变换后的信号的波形对比图.最后利用MATLAB循环和累加语句,得到所需绘制的波形图.
【仿真程序】
(1)时域延展程序示例:
fs=44100;bits=32;
[y,fs,bits]=wavread('D:
\boy.wav');
subplot(211);
plot(y);
t=y(1:
1/2:
end/2);
subplot(212);
plot(t);
sound(t,44100);
(2)时域压缩程序示例:
fs=44100;bits=32;
[y,fs,bits]=wavread('D:
\boy.wav');
subplot(211);
plot(y);
t=y(1:
2:
end/2);
subplot(212);
plot(t);
sound(t,44100);
(3)幅度放大程序示例:
fs=44100;bits=32;
[y,fs,bits]=wavread('D:
\boy.wav');
subplot(211);
plot(y);
t=y(1:
1:
end/2);
subplot(212);
plot(2*t);
sound(2*t,44100);
(4)幅度缩小程序示例:
fs=44100;bits=32;
[y,fs,bits]=wavread('D:
\boy.wav');
subplot(211);
plot(y);
t=y(1:
1:
end/2);
subplot(212);
plot(1/2*t);
sound(1/2*t,44100);
(5)时域翻转程序示例:
fs=44100;bits=32;
[y,fs,bits]=wavread('D:
\boy.wav');
subplot(211);
plot(y);
t=flipud(y);
subplot(212);
plot(t);
sound(t,44100);
(6)画出
的波形程序示例:
a=[0.31830.0000-0.1061-0.00000.06370.0000-0.0455];
b=[0.20260.00000.02250.00000.00810.00000.0041];
c=[0.2026-0.10130.02250.00000.0081-0.01130.0041];
y1=0.5000;y2=0.5000;y3=0.7500;
t=0:
0.01:
4;
forn=1:
7
y1=a(n)*cos(n*pi*t)+y1;
y2=b(n)*cos(n*pi*t)+y2;
y3=c(n)*cos(n*pi*t)+y3;
end
subplot(311);plot(y1);
subplot(312);plot(y2);
subplot(313);plot(y3);
【仿真结果】
(1)男声音频信号延展2倍后,波形对比如图:
(2)男声音频信号压缩2倍后,波形对比如图:
(3)男声音频信号幅度扩大为原来的2倍后,波形对比如图:
(4)男声音频信号幅度缩小为原来的1/2后,波形对比如图:
(5)男声音频信号时域翻转后,波形对比如图:
(6)画出
的波形如下:
【结果分析】
(1)将男声信号时域延展为原来的2倍后,声音音色比原来更加低沉,信号的延续时间变为原来的2倍.时域压缩两倍后,声音音色比原来尖锐,且有机器人声感,信号的延续时间变为原来的1/2.
(2)将男声信号幅度扩大为原来的2倍后,声色没有变化,音量放大.反之,将幅度缩小为原来的1/2后,音量减小.
(3)将男声信号时域翻转后,声色和音量均没有变化,但信号的内容已无法得知.
【自主学习内容】
MATLAB的循环、叠加语句和信号时域翻转函数.
【阅读文献】
[1]薛山,《MATLAB2012简明教程》,清华大学出版社,2013年6月
[2]陈后金,《信号与系统》,高等教育出版社
【发现问题】(专题研讨或相关知识点学习中发现的问题):
画出
的波形,讨论
波形与
取值的关系.
【问题探究】
由上述给出的三种波形可以看出,波形的大体性质由前面的系数而非后面的函数决定.在第一组取值的情况下,绘制出了矩形波的近似波形,第二组对应三角波,第三组则对应梯形波.故我们不仅需要将信号在频域进行分解来研究它的深层次性质,还需要对分解后函数项前面的系数规律进行深刻的探究.
系统的时域分析专题研讨
【目的】
(1)掌握系统响应的时域求解,加深对系统时域分析基本原理和方法的理解.
(2)掌握连续系统零状态响应(卷积积分)数值计算的方法.
(3)学会仿真软件MATLAB的初步使用方法,掌握利用MATLAB求解连续系统和离散系统的零状态响应.
(4)培养学生发现问题、分析问题和解决问题的能力.
【研讨内容】
题目1:
系统响应时域求解
求一个RLC电路的零输入响应和零状态响应,
将信号与系统时域分析专题研讨1(4)录制的语音信号中混入随机噪声,然后用M点滑动平均系统对受噪声干扰的信号去噪,改变M点数,比较不同点数下的去噪效果.
【温馨提示】
利用MATLAB函数rand(M,N)产生M行N列[0,1]上均匀分布的随机噪声.
【题目分析】
背景设置:
绘制如图所示RLC串联电路,
,电容上初始储能
,电感上初始储能
,输入的激励
,以此为背景求解电路的零输入与零状态响应.
根据KVL定律,可以列出如下二阶微分方程及初值条件
【仿真程序】
1.RLC电路零输入响应求解
a=[168];b=[1];y0=[21]
sys=tf(b,a)
sys1=ss(sys)
t=0:
0.01:
10
x=0*t
lsim(sys1,x,t,y0)
xlabel('t/s')
ylabel('v(t)')
title('零输入响应')
2.RLC电路零状态响应求解
a=[168];b=[1];
sys=tf(b,a)
t=0:
0.01:
10
x=sin(2*pi*t)
y=lsim(sys,x,t)
plot(t,y)
xlabel('t/s')
ylabel('y(t)')
title(‘零状态响应’)
3.加躁去噪
R=242500;%R=fs*t,t为音频时长
[x,fs,bits]=wavread('male.wav',R);
k=0:
R-1;
wavplay(2*x,fs);%系数2用于增大音量
d=0.01*randn(size(x))*0.3-0.5;
y=2*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]');
forM=1:
5:
31
b=ones(M,1)/M;a=1;
s=filter(b,a,y);
wavplay(s,fs);
index=(M-1)/5+2
figure(index);plot(k,x,'b--',k,s,'r-');xlabel('k');title(M);legend('x[k]','s[k]');holdon;
end%通过改变M的值得到不同的结果,图的标题显示M值
【仿真结果】
【结果分析】
主要分析加噪去噪程序.连续播放不同M值下的去噪后音频,通过人耳辨别,我们认为M值越大,去噪效果越好,但会产生附加效果使得音频整体音量减小.
【自主学习内容】
1.求解零状态、零输入响应微分方程的函数
2.利用rand函数给音频加入噪声
3.利用filter函数对音频进行M点滑动平均系统为信号去噪
4.利用for函数连续播放音频,连续打印图像以对某一变量的作用进行对比
【阅读文献】
[1]陈后金胡健薛健.信号与系统.北京:
高等教育出版社
[2]薛山.MATLAB2012简明教程.北京:
清华大学出版社
【发现问题】(专题研讨或相关知识点学习中发现的问题):
1.矩阵对齐问题
2.R的设定依据
3.声音大小的调整
4.M作用的探讨
【问题探究】
1.矩阵对齐问题
当开始时使用rand函数加噪时,令d=0.01*rand(1,R)*0.3-0.5;结果提示
?
?
?
Errorusing==>plusMatrixdimensionsmustagree.
即d和x的维数没有保持一致.改用randn函数时,令d=0.01*randn(size(x))*0.3-0.5就成功地把噪声加入了进去
2.R的设定依据
男声录“信号是消息的表现形式与传送载体”,取R=10000,不能全部播放;男生录“信号”,同取R=10000,会提示
Errorusing==>wavread
Samplelimitsoutofrange.
通过Matlab自带的Help功能,我们发现wavread(file,R)中R表示播放file的前R个取值点.而fs为取样频率,所以我们想到,R不应大于fs*t且不能过小导致音频不能完全播放.
3.声音大小的调整
由于我们没有专门的耳机用于录音,导致音频音量过小,听不清楚.联系信号时域分析部分的研学所学,我们在音频信号前乘了系数2,取得了不错的效果.
4.M值作用的探讨
起初我们通过人工改变程序中的M值,多次运行程序进行比较,且取步长为1,效果不好,听不太出M不同值所得去噪音频的区别.于是我们尝试用for循环语句,增大步长,连续播放,并且在做这一点比较的时候采用了时长仅为1秒的录音,效果非常明显.
【研讨内容】
题目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)近似表示为
推导近似计算卷积的算法.取相同的抽样间隔,比较两种方法的计算卷积误差.
【题目分析】
我们采用conv函数来近似计算连续几号卷积积分方法.
若使该方法成立,我们首先需要证明
(1)式成立.
证明如下:
我们不妨设
,此时可近似
代入
则有式:
得证.
故我们可以用conv函数来计算连续信号的卷积.设
,
之后我们可以用卷积定义来编程计算.
【仿真程序】
dt=0.1;
T=10;
N=T/dt;
x=zeros(1,N);
y=x
i=1;
whilei<=N
u=i*dt;
x(i)=1*(u>=0&u<=1);
y(i)=u*(u>=0&u<=1)+(2-u)*(u>1&u<=2);
i=i+1;
End
%上述循环为定义进行卷积的x(t)与h(t)
y1=dt*conv(x,y);
result=y;
i=1;
whilei<=N
result(i)=y1(i);
i=i+1;
End
%上述过程为仿真过程
subplot(311)
plot(dt:
dt:
T,result,'o');
t0=0;tn=3;dt=0.1;
t=t0:
dt:
tn;
t1=t0:
dt:
1;
x=ones(size(t1));
h=dt*conv(x,x);
y1=dt*conv(x,h);
%上述过程为计算真实值的过程
N=length(y1);
subplot(312)
plot(0:
3/(N-1):
3,y1,'y')
subplot(313)
plot(dt:
dt:
T,result,'o');
【仿真结果】
其中蓝线为仿真结果(近似值),黄线为卷积积分结果(理论值).
【结果分析】
由上述结果可知,仿真结果的信号幅值在
较大时小于原信号,且当我们取的
越小,仿真结果就越接近理论值,但是同时计算量也随之增多.
【自主学习内容】
filter、conv、impz函数的综合运用来近似实现卷积积分的计算.
filter滤波器函数可实现差分方程的仿真
conv可用于计算卷积
impz函数可求系统的冲激响应.
它们的用法是:
y=filter(p,d,x)用来实现差分方程,d表示差分方程输出y的系数,p表示输入x的系数,而x表示输入序列.输出结果长度数等于x的长度.而y=conv(x,h)是用来实现卷积的,对x序列和h序列进行卷积,输出的结果个数等于x的长度与h的长度之和减去1.y=impz(p,d,N)是用来实现冲击响应的,N表示冲击响应输出的序列个数.
故当我们进行离散和连续的信号时域分析卷积等处理时可以将它们三个综合使用.impz冲击信号的使用还可以拓展到频域处理方面.
【阅读文献】
[1]薛山,《MATLAB2012简明教程》,清华大学出版社,2013年6月.
[2]陈后金,《信号与系统》,高等教育出版社.
【发现问题】(专题研讨或相关知识点学习中发现的问题):
若x(t)和h(t)不是时限信号,则用上面的方法进行近似计算会遇到什么问题?
如果它们两个不是时限信号,定义区间无穷,则会导致我们取样数无穷,无法直接用conv函数得到所求结果.
此时我们可以用两种方法进行计算:
(1)利用卷积特性,将时域的卷积化为频域的乘积,若此时频域有限,则我们可以再用傅里叶反变换来求出卷积后的信号表达式
(2)我们不妨取两个信号的有效带宽较大者,此时我们可以得到一个区间
,以我们需要的区间来进行卷积计算.在这里,我们取的区间越大,我们所得的结果就越精确,但是所需要的计算量也更大.
【问题探究】
另一种计算方法:
若将x(t)和h(t)近似表示为
推导近似计算卷积的算法.取相同的抽样间隔,比较两种方法的计算卷积误差.
由上面的表示,我们可得:
由我们所学的过程,卷积具有分配率性质,故
故卷积结果为任意
与任意
的卷积再求和,由已知,它们为等宽矩形波,故任意两个信号间的卷积为一个等腰三角形,故每个
与
的卷积和为一串经过平移得出的等腰三角形.可以证明,每两个相邻的等腰三角形底边中点间的间隔为等腰三角形底边长的1/2,将其求和恰好等于一个等腰梯形.
故我们将所有由
变化决定的等腰梯形求和可得最后的卷积值,利用这两个式子计算卷积的方法也成立.
在这里的卷积我们可以利用filter滤波函数还打到计算该卷积的目的.具体我们不做过于深入的研究.我们主要是分析一下它们两种算法之间的误差:
由于之前一般的conv方法与上文这样一种方法思想相同,由于它们的区别仅仅是选取的间隔区间与计算点不同,故我们可以认为两种计算方法的误差区别不大.
电子文件提交说明:
文件名学号_姓名_ss1(每组在文件名上只需提供一个学号和姓名)
文件格式MicrosoftWord2007版
建议用Office套装软件Visio进行绘图.Matlab所绘图形可在Visio环境下ungroup后进行编辑.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 交通大学 信号 系统 研究性学习 题目