资源描述
matlab时域分析部分专题研讨
———————————————————————————————— 作者:
———————————————————————————————— 日期:
19
个人收集整理 勿做商业用途
《信号与系统》课程研究性学习报告
时间 2010/11/15
题目1:基本信号的产生,语音的读取与播放
1) 生成一个正弦信号,改变正弦信号的角频率和初始相位,观察波形变化;
2) 生成一个幅度为1、基频为2Hz、占空比为50%的周期方波,
3) 观察一定时期内的股票上证指数变化,生成模拟其变化的指数信号,
4) 录制一段音频信号,进行音频信号的读取与播放,
【题目分析】
1. 1生成一个正弦信号,改变正弦信号的角频率和初始相位,观察波形变化。
主要掌握正弦信号的函数表示,通过改变w0来改变角频率,通过改变phi来改变初始相位。
【仿真程序】
w0=2*pi;phi=pi/6;
t=0:0.0001:8
xt=sin(w0*t+phi);
plot(t,xt)
【仿真结果】
原始图形
改变w0后图形
改变phi后的图形
【结果分析】
使w0增大时,图形变密集,频率增加
使w0减小时,图形变稀疏,频率减小
改变phi时,图形t=0是y值改变
【自主学习内容】
通过该题学会了使用sin函数的表达方式,由此衍生出cos函数和其他三角形是函数的表达。
【阅读文献】
信号与系统。陈后金.北京:高等教育出版社,2007.12
【题目分析】
1。2生成一个幅度为1、基频为2Hz、占空比为50%的周期方波。
方波的函数为A*square(w0*t,n),
n为方波周期的占空比,
幅度通过A来控制。
【仿真程序】
fs=2,A=1;
w0=2*pi*fs;
x=A*square(w0*t,50);
plot(t,x);
axis([0,2,-1,2])
【仿真结果】
【结果分析】
像上题一样w0控制频率变化,占空比控制图形在坐标空间中的大小
【自主学习内容】
方波函数的使用,
占空比的理解。
【阅读文献】
信号与系统。陈后金。北京:高等教育出版社,2007.12
【题目分析】
1.3观察一定时期内的股票上证指数变化,生成模拟其变化的指数信号。
利用rand噪音信号与指数信号的相加得到一个波动上升的模拟股票信号.
【仿真程序】
t=0:0.01:2.99;
a=2;
xt=a.^t+(rand(1,300)-0.5)+sin(2*pi*t);
plot(t,xt)
【仿真结果】
【结果分析】
Rand函数与指数函数相加实现了随机的上下波动,程序中(rand(1,300)—0。5)为正负波动形式。
【自主学习内容】
Rand函数的使用
【阅读文献】
信号与系统.陈后金。北京:高等教育出版社,2007.12
【发现问题】
Rand函数使得指数函数整体上下移动。
【问题探究】
原因是没有确定有多少个点需要随机处理.
【题目分析】
1.4录制一段音频信号,进行音频信号的读取与播放。
音频的读取需要利用wavread函数,音频的播放需要利用sound函数
【仿真程序】
[y,fs,nbits]=wavread(’hktk');
sound(y,fs,nbits);
plot(y)
【仿真结果】
【结果分析】
通过Wavread函数读取音频,通过sound函数播放音频。
【自主学习内容】
Wavread函数与sound函数的使用.
【阅读文献】
信号与系统。陈后金。北京:高等教育出版社,2007.12
【发现问题】
开始播放不了音频
【问题探究】
音频文件没有转换成wav格式.
———-———-——————-————-—————————-————--———
题目2:信号的基本运算(语音信号的翻转、展缩)
1) 将原始音频信号在时域上进行延展、压缩,
2) 将原始音频信号在频域上进行幅度放大与缩小,
3) 将原始音频信号在时域上进行翻转,
【题目分析】
看到本题目以后,想到的思路是这样的,先提取一个音频信号,然后放在matlab中,如下列程序.之后对这个音频信号按照题目的要求进行变换.要注意的是前两问中对信号的延展压缩和对幅度的放大和缩小时不一样的.延展和压缩时对频率的变化,而幅度变化是加在外面的。最后一题,引入时间长度k,最终进行翻转。
【仿真程序】
(1)
figure(1);
[x,fs,nbits]=wavread (’speech’);
wavplay(x,fs);
x1=x(1:1:end);
k=1:length(x1);
plot(k,x1);
figure(2);
[x,fs,nbits]=wavread ('speech');
wavplay(x,fs);
x2=x(1:2:end);
k=1:length(x2);
wavplay(x2,fs);
plot(k,x2);
(2)
[x,Fs,bits]=wavread('speech');
wavplay(x,Fs);
x3=10*x(1:1:end);
wavplay(x3,Fs);
k=1:length(x1);
plot(k,x3);
[x,Fs,bits]=wavread(’speech');
wavplay(x,Fs);
x4=0.1*x(1:1:end);
wavplay(x4,Fs);
k=1:length(x1);
plot(k,x4);
(3)
[x,fs,bits]=wavread(’speech',[512,102400]);
x=x(1:1:end);
k=1:length(x);
sound(x,fs,bits);
plot(-k,x);
【仿真结果】
初始语音信号 将初始信号延展
将初始信号幅度放小为原来的十分之一 将初始信号放大为原来的十倍
将初始信号翻转
【结果分析】
1.语音信号进行延展和压缩后,效果变得很难听了。
2。幅度放大与缩小会影响音频的声音高低
3.翻转后的效果不甚理想,只有语音信号的前一部分。
【自主学习内容】
Wavread与wavplay的应用
自己录制语音信号并将wma格式转换为wav格式
【阅读文献】
信号与系统.陈后金。北京:高等教育出版社,2007.12
【发现问题】 (专题研讨或相关知识点学习中发现的问题):
1运行的时候不知道怎么控制播放几遍,有的让他播放2次,但是他播放3次。
2翻转后的效果只有初始音频的前面一部分。
———-—-———————-—————-—————-——-—————-————
题目3:系统响应时域求解
将原始音频信号中混入噪声,然后用M点滑动平均系统对受噪声干扰的信号去噪,改变M点数,比较不同点数下的去噪效果,
【题目分析】
利用wavread函数输入一段音频样本.利用(rand(1,R)—0。5)*0。2生成一个在—0。1-0.1之间的随机噪声利用b=ones(M,1)/M;a=1;m=filter(b,a,x);对信号去噪
【仿真程序】
R=6455;Fs=80000;bits=16;
[y,Fs,bits]=wavread('0。wav’,R);
k=1:R;
wavplay(y,Fs);
figure(1);plot(k,y);xlabel('原始信号');legend(’原始信号’);
d=(rand(R,1)-0。5)*0。2;
x=y+d;
figure(2);plot(k,d,'r—.',k,x,'g-’);
xlabel(’加入噪声’);legend('噪声',’加噪后’);
wavplay(x,Fs);
M=5;b=ones(M,1)/M;a=1;
m=filter(b,a,x);
figure(3);plot(k,m,’r-');
xlabel('去掉噪声后’);
legend(’去噪后');
wavplay(m,Fs);
【仿真结果】
原始信号
加噪后信号:
去噪后信号:
【结果分析】
从声音的效果得出去噪后的噪音不明显。改变M值,M值越小时去噪强度越小,去噪效果越弱,但同时原信号失真也越小;M值越大时去噪效果越强,但原信号失真越强。
【自主学习内容】
【阅读文献】
信号与系统。陈后金.北京:高等教育出版社,2007.12
信号与系统实训指导.杜晶晶.西安:西安电子科技大学出版社.2009。8
其他来自搜素引擎:谷歌 百度
【发现问题】 (专题研讨或相关知识点学习中发现的问题):
【问题探究】
——————-———-——-—-—-———--—————————--—————
题目4:连续信号卷积的近似计算
两个连续信号的卷积定义为
为了进行数值计算,需对连续信号进行抽样。记x[k]=x(kD), h[k]=h(kD), D为进行数值计算的抽样间隔.则连续信号卷积可近似的写为
(1)
这就可以利用conv函数可近似计算连续信号的卷积。设x(t)=u(t)-u(t-1),h(t)=x(t)*x(t),
(a)为了与近似计算的结果作比较,用解析法求出y(t)=x(t)*h(t);
(b)用不同的D计算出卷积的数值近似值,并和(a)中的结果作比较;
(c)若x(t)和h(t)不是时限信号,则用上面的方法进行近似计算会遇到什么问题?给出一种解决问题的方案;
(d) 若将x(t)和h(t)近似表示为
推导近似计算卷积的算法。取相同的抽样间隔,比较两种方法的计算卷积误差。
【题目分析】:
(a) 应该就是利用学过的知识进行计算得出结果即可。
(b) 在matlab中不可以直接进行连续的信号的卷积,必须得先对连续信号采样,得到离散的信号,然后求得两个离散信号的卷积,得到另外一个离散信号y[kΔ],最后再把离散的信号连续化,得到要得到的y(kΔ).通过改变Δ的值来与(a)中所得结果进行对比。
(c) 此题的问题症结就是matlab不能表示出非时限信号。
(d) 题目中已经说明了x(t)与h(t)的近似值,所以直接将x(t)与h(t)带入中,就可以得到此种状态下的卷积。
【仿真程序】
clear;
%第二个小题(b)
TMAX=4;
dt=0。001;
delta=0.1;
t=0:dt:TMAX;
t0=0:delta:2*TMAX;
m=length(t);
N=delta/dt;
x=rectpuls(t—0.5,1);
xs=double(x(1:N:m));
MN1=length(xs);
%stem(1:MN1,xs);
h=tripuls(t—1,2,0);
hs=h(1:N:m);
MN2=length(hs);
%stem(1:MN2,hs);
J=conv(xs,hs)*delta;
plot(t0,J);
%第四个小题(d)
dt=0.001;
delta=0.1;
N=delta/dt;
t=0:dt:4;
m=length(t);
sum=0;
n0=1/delta;
m0=2/delta;
x=rectpuls(t-0。5,1);
xs=double(x(1:N:m));
h=tripuls(t-1,2,0);
hs=h(1:N:m);
for m=1:m0
for n=1:n0
y=tri(delta,n,m,t);
sum=sum+xs(n)*hs(m)*y;
end;
end;
plot(t-0.25,sum);
%第四个小题中的function函数
function y = tri(delta,m,n,t)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
y=[t>(m+n)*delta&t〈(m+n+1)*delta]。*(t—(m+n)*delta)+[t〉(m+n+1)*delta&t〈(m+n+2)*delta].*((m+n+2)*delta-t);
【仿真结果】
对于第(2)小题 当delta=0.1时,图像如(a)所示:
(a)
当delta=0。01时,图像如(b)所示:
(b)
当delta=0。3时,图像如(c)所示:
(c)
而对于第(4)小题的仿真结果为:
当delta=0.1时,图像如(d)所示:
(d)
【结果分析】
(a)为了与近似计算的结果作比较,用解析法求出y(t)=x(t)*h(t);
x(t)=u(t)-u(t-1),图形如下:
h(t)= x(t)*x(t)=[ u(t)-u(t-1)] * [u(t)-u(t-1)]
=r(t)-2r(t—1)+r(t—2)
h(t)如下图所示:
y(t)=x(t)*h(t)=[ u(t)-u(t-1)]*[ r(t)—2r(t-1)+r(t—2)]
=
(b) 从上述图像中可以看到,当delta越小的时候,图像越平滑,越接近于利用解析法求得的结果。
(c) 若x(t)和h(t)不是时限信号的话,由于matlab软件本身的性质,不能取到无穷大,函数值在到达某一值时会变成0。解决办法是我们可以根据自己的需要,设定x(t)和h(t)在某一范围内的函数值,其他值均为0。
(d) 和(b)相比,我们可以得到(b)的方法比较好,更接近于理论值.
【自主学习内容】
连续信号的抽样
离散信号的卷积
离散信号变为连续信号
Function函数的调用
变量的强制类型转换
【阅读文献】
《信号与系统》教材
Matlab软件中的help
搜索引擎 baidu
【学习心得}】
这次专题实验耗费了我们将尽两天的时间,最主要的问题是对matlab软件还不是很熟悉,不是很会调试,所以中途遇见的困难都没有针对性的去修改,说实话,有一部分猜的成分在里面,第二个程序尤为明显,虽然图形可能是对的,但是我感觉程序还不是完全正确,比如说,最后为什么t有个平移?这次实验,我们掌握了matlab的很简单的一点知识,以后会继续努力,继续学习!
展开阅读全文