《信号与系统》——课程设计实验一信号的采样与重构一、实验内容:1.应用MATLAB实现连续信号的采样与重构仿真,了解MATLAB软件,学习应用MATLAB软件的仿真技术。
2.加深理解采样与重构的概念,掌握利用MATLAB分析系统频率响应的方法和掌握利用MATLAB实现连续信号采用与重构的方法。
计算在临界采样、过采样、欠采样三种不同条件下重构信号的误差。
3. 加深对采样定理的理解和掌握,以及对信号恢复的必要性;掌握对连续信号在时域的采样与重构的方法。
二、实验原理(1)连续时间信号连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点以外,信号都有确定的值与之对应。
严格来说,MATLAB并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。
当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。
(2)采样定理模拟信号经过 (A/D) 变换转换为数字信号的过程称为采样,信号采样后其频谱产生了周期延拓,每隔一个采样频率 fs,重复出现一次。
为保证采样后信号的频谱形状不失真,采样频率必须大于信号中最高频率成分的两倍,这称之为采样定理。
时域采样定理从采样信号恢复原信号必需满足两个条件:>各处为零;(对信a、必须是带限信号,其频谱函数在号的要求,即只有带限信号才能适用采样定理。
)b 、 取样频率不能过低,必须>2 (或>2)。
一个理想采样器可以看成是一个载波为理想单位脉冲序列)(t T 的幅值调制器。
图2 信号的采样(4) 信号重构设信号)(t f 被采样后形成的采样信号为)(t f s ,信号的重构是指由)(t f s 经过内插处理后,恢复出原来信号)(t f 的过程,又称为信号恢复。
三、实验步骤及代码(一).%%%%%%%%%%% 产生一个连续sin ()信号 %%%%%%%%%%%%%%%%%%f=100;t=(1:50)/2000; %时间轴步距 x=sin(2*pi*t*f); figuresubplot(211);plot(x); %绘制x(t)的图形图片号加底框 xlabel('t');ylabel('x(t)');title('连续时间信号sin ()的波形'); %图片命名 grid;n=0:255; %长度N=256; %设采样点的N 值 Xk=abs(fft(x,N));subplot(212); %频域波形 plot(n,Xk);axis([0 N 1.2*min(Xk) 1.2*max(Xk)]); %可用axis 函数来调整图轴的范围 xlabel('时域频谱波形图');ylabel('|Xk|');title('信号sin()的频谱波形');(二)%%%%%%%%%%%%对原始信号进行采样并滤波重构 %%%%%%%%%%%% t1=3*t;f1=sin(2*pi*t1*f);figuresubplot(211);stem(t1,f1);xlabel('kTs');ylabel('f(kTs)');title('欠采样的信号波形');[B,A]=butter(2,450/500); %设置低通滤波器参数[H,w]=freqz(B,A,512,2000);fa=filter(B,A,f1);subplot(212);plot(fa)xlabel('t');ylabel('fa(t)');title('欠采样信号重构后的波形');t2=0.5*t;f2=sin(2*pi*t2*f);Figure,subplot(211); stem(t2,f2);xlabel('kTs');ylabel('f(kTs)');title('临界采样的信号波形');[B,A]=butter(2,450/500); %设置低通滤波器参数[H,w]=freqz(B,A,512,2000);fb=filter(B,A,f2);subplot(212);plot(fb),xlabel('t'),ylabel('fb(t)');title('临界采样信号重构后的波形');t3=0.2*t;f3=sin(2*pi*t3*f);figuresubplot(211); stem(t3,f3);xlabel('kTs');ylabel('f(kTs)');title('过采样的信号波形');[B,A]=butter(2,450/500);[H,w]=freqz(B,A,512,2000);fc=filter(B,A,f3);subplot(212);plot(fc)xlabel('t');ylabel('fc(t)');title('过采样信号重构后波形');四、实验总结经过此次MATLAB课程设计我学到了很多知识和学习方法。
仅凭我在信号与系统课上所学的那点知识是不够的。
所以为了做好这次的课程设计,我上网搜索了许多与此有关的知识,这个过程中我也学会了好多。
在这次设计中,我学到了对信号的采样定理的应用,以及信号的重构,并通过观察MATLAB所生成的频谱图,进一步了解了有关信号的采样与重构,对信号的采样程度进行比较其误差,了解不同采样程度的重构信号和原信号所产生的差异。
网上有很多类似的程序而且很多都是对sinc()函数做的,我就想能不能换个连续函数试试,不过在换的过程中我也发现了不少的问题,调试也一直出错让人很头疼。
不过功夫不负有心人,就算是一点一点的扣,程序我也完全看懂了,很是欣慰。
实验二 语音信号的处理——延时和混响一、实验目的:1.加深对线性时不变系统的理解2.加深对滤波器滤波特性的理解3.掌握信号混响原理,并利用matlab 实现。
二、实验内容:选择语音信号作为分析的对象,对其进行频谱分析,在时域将信号加入混响,再分析其频谱,并对原始信号频谱进行比较三、实验原理1. 混响效果主要是用于增加音源的融合感。
自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。
常见参数有以下几种:(1)混响时间:(2)高频滚降:(3)扩散度:(4)预延时: (5)声阵密度:(6)频率调制:(7)调治深度:2.延时就是将音源延迟一段时间后,再欲播放的效果处理。
依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。
3.设计集中混响器(滤波器),实现混响。
(1) 单回声滤波器,系统函数为:()1,1mH z a z a -=+<(2) 单重回声滤波器:1(),11N N mmaz H z a a z ---=<- (3) 无限个回声滤波器:(),11mmzHz a a z --=<- (4) 全通结构混响器,(),11m ma z Hz a a z--+=<-四、实验步骤1获取一段语音信号[x1,fs,bits]=wavread('F:\applause.wav');2进行频谱分析及延时处理x1=x1(:,1);subplot(221);plot(x1); %做原始语音信号的时域图形title('原始语音信号');grid on;xlabel('时间 n');ylabel('音量 n');y1=fft(x1); %做length(x1)点的FFTy1=fftshift(y1);%平移,是频率中心为0derta_fs = fs/length(x1); %设置频谱的间隔,分辨率Subplot(222)plot([-fs/2:derta_fs:fs/2-derta_fs],abs(y1));%画出原始语音信号的频谱图title('原始语音信号的频谱');grid on;3.用设计的混响器对信号进行处理并分析比较y2=[x1;zeros(200,1)];y3=y2+z;%混响后信号叠加(两个信号必须长度相等)Figure,plot(y3);title('混响的时域图');grid on;Y3=fft(y3);%混响信号fft变换Y4=fftshift(y3);%平移,中心为0频率derta_Fs = Fs/length(y3);figure,plot([-Fs/2:derta_Fs: Fs/2-derta_Fs],abs(Y4)); title('混响后的频域图');grid on;Bz=[0,0,0,0,0,0,0,0,0,0,1];Az=[1,0,0,0,0,0,0,0,0,0,-a];yy1=filter(Bz,Az,x1);subplot(223);plot(yy1);title('无限个回声滤波器时域波形');grid on;YY1=fft(yy1);YY2=fftshift(yy1);%平移至中心为0频率derta_fs = fs/length(yy1);subplot(224);plot([-fs/2:derta_fs: fs/2-derta_fs],abs(YY2));title('无限个回声滤波器频谱图 ');grid on;五、实验总结:通过本此的课程设计对信号处理有了更进一步的熟悉,实际操作加深了对课本上的知识的理解。
通过上网搜索资料,查阅课本及课外书籍,动手设计滤波器,采集语音,语音分析等工作,加强了对MATLAB程序的编写能力以及对信号处理的相关知识的理解。
平时所学的知识如果不加以实践的话等于纸上谈兵。
实验二的内容网上有现成的程序,于是我也找了一些进行比较,发现都是大同小异,关键是要能够理解实验的内涵及原理。
在读程序的过程中遇到了一些不懂的地方:fftshift的功能 FFTSHIFT is useful for visualizing the Fourier transform with the zero-frequency component in the middle of the spectrum.对自己的以后的要求是:因为要考信号的研究生,以后也是免不了要编程序,先学着自己去读懂程序,然后自己去试着编写这些程序。