信号与系统实验报告.docx
《信号与系统实验报告.docx》由会员分享,可在线阅读,更多相关《信号与系统实验报告.docx(18页珍藏版)》请在冰点文库上搜索。
信号与系统实验报告
信号与系统
实验教程
(实验报告)
班级:
自动化一班
姓名:
韩晓晖
学号:
20134317
西南交通大学信息科学与技术学院
二◦一五年五月二十日
实验一连续时间信号的采样
实验目的
进一步加深对采样定理和连续信号傅立叶变换的理解。
实验步骤
1•复习采样定理和采样信号的频谱
Fs2Fo
则该信号可以由它的采样值x(n)xa(nTs)重构。
否则就会在x(n)中产生混叠。
该有限带宽模拟信号的2Fo被称为奈奎斯特频率。
必须注意,在xa(t)被采样以后,x(n)表示的最高模拟频率为Fs/2Hz(或)。
采样信号的频谱为原信号频谱以采样频率为周期的周期延托:
2•熟悉如何用MATLAB语言实现模拟信号表示
严格地说,除了用符号处理工具箱(Symbolics)外,不可能用MATLAB来分析模拟信号。
然而如果用时间增量足够小的很密的网格对Xa(t)采样,就可得到一根平滑的曲线和足够长的最大时间来显示所有的模态。
这样就可以进行近似分析。
令t是栅网的间隔且tTs,贝U
XG(m)Xa(mt)
(2)
可以用一个数组来仿真一个模拟信号。
不要混淆采样周期Ts和栅网间隔t,因为后者是MATLAB中严格地用来表示模拟信号的。
类似地,付利叶变换关系也可根据(2。
近似为:
Xa(jw)xG(m)ejwmtttxG(m)ejwmt(3)
mm
现在,如果xa(t)(也就是xG(m))是有限长度的。
则公式(3)与离散付利叶变换关系相似,因而可以用同样的方式以MATLAB来实现,以便分析采样现象。
三、实验内容
1.通过例1熟悉用MATLAB语言实现描绘连续信号的频谱的过程,并在MATLAB语言环境中验证例1的结果;
例1令Xa(t)e10呷1,求出并绘制其傅立叶变换。
解:
根据傅立叶变换公式有
因为Xa(t)是一个实偶信号,所以它的傅立叶变换是一个实偶函数。
为了用数值方法估计Xa(jW),必须先把Xa(t)用一个栅格序列XG(m)来近似。
利用e50,注意Xa(t)可以用一个在0.005t0.005(或等效地[-5,5]毫
秒)之间的有限长度信号来近似。
类似地从式(4),Xa(jw)0,当w2(2000)。
由此选:
用MATLAB实现例1的程序如下:
%模拟信号
Dt=0.00005;t=-0.005:
Dt:
0.005;xa=exp(-1000*abs(t));
%连续时间傅立叶变换
Wmax=2*pi*2000;
K=500;
k=0:
1:
K;
W=k*Wmax/K;Xa=xa*exp(-j*t'*W)*Dt;Xa=real(Xa);
W=[-fliplr(W),W(2:
501)];%频率从-WmaxtoWmax
Xa=[fliplr(Xa),Xa(2:
501)];%Xa介于-Wmax和Wmax之间
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t毫秒');ylabel('xa(t)');title('模拟信号')subplot(2,1,2);
plot(W/(2*pi*1000),Xa*1000);
xlabel('频率(单位:
KHz)');ylabel('Xa(jW)*1000')
title('连续时间傅立叶变换')
te
•0-
图1例1中的曲线
图1给出了Xa(t)和Xa(jW)。
注意为了减少计算量,这里只在[0,4000]弧度/秒(等效地[0,2]kHz)范围内计算了Xa(jw),然后将它复制到[4000,0]中去以便于绘图。
所画出的Xa(jw)的图与公式(3)相符。
10000.5e
2.仿照例2用MATLAB语言实现对连续信号Xa1(t)e1000同和Xa2(t)
的采样;并验证采样定理。
Xa(t)e10002t|
a.以Fs8000样本/秒采样Xa(t)得到x,n)。
求并画出X1(ej)
matlab程序:
Dt=0.00005;
t=-0.005:
Dt:
0.005;
xa=exp(-1000*abs(2*t));
%离散时间信号
Ts=0.0002;n=-40:
1:
40;x=exp(-1000*abs(2*n*Ts));
%离散时间傅立叶变换
K=500;
k=0:
1:
K;
w=pi*k/K;
X=x*exp(-j*n'*w);
X=real(X);
w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t毫秒');
ylabel('x1(n)');
title('离散信号');holdon
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');holdoff
subplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
Firrel■曲
ftlrEdllistnIj&ohQrtlitopififiidow*
CiJ||\X-1310S|■口I
亀叭■
离敷时间傅立叶娈抿
0i11;11—1i;
-1A6恥04-02CC.10A0&0.3
以血为单锻的類奉
b.以Fs1000样本/秒采样Xa(t)得到X2(n)。
求并画出X2(ej)matlab程序:
Dt=0.00005;t=-0.005:
Dt:
0.005;
Xa=eXp(-1000*abs(2*t));%离散时间信号
Ts=0.0002;n=-5:
1:
5;X=eXp(-1000*abs(2*n*Ts));%离散时间傅立叶变换
K=500;
k=0:
1:
K;w=pi*k/K;
X=X*eXp(-j*n'*w);
X=real(X);w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];subplot(1,1,1)
subplot(2,1,1);plot(t*1000,Xa);
Xlabel('t毫秒');
ylabel('X1(n)');
title('离散信号');holdon
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');holdoffsubplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
10000.5t|
Xa(t)e11
a以Fs8000样本/秒采样Xa(t)得到Xi(n)。
求并画出Xi(ej)
matlab程序:
Dt=0.00005;
t=-0.005:
Dt:
0.005;
xa=exp(-1000*abs(0.5*t));
%离散时间信号
Ts=0.0002;n=-40:
1:
40;x=exp(-1000*abs(0.5*n*Ts));
%离散时间傅立叶变换
K=500;
k=0:
1:
K;
w=pi*k/K;
X=x*exp(-j*n'*w);
X=real(X);
w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];
subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);
xlabel('t毫秒');
ylabel('x1(n)');
title('离散信号');holdon
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');holdoff
subplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
b.以Fs5000样本/秒采样xa(t)得到X2(n)。
求并画出X2(ej)
matlab程序:
Dt=0.00005;
t=-0.005:
Dt:
0.005;
xa=exp(-1000*abs(0.5*t));
%离散时间信号
Ts=0.0002;n=-25:
1:
25;x=exp(-1000*abs(0.5*n*Ts));%离散时间傅立叶变换
K=500;k=0:
1:
K;w=pi*k/K;
X=x*exp(-j*n'*w);
X=real(X);w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];subplot(1,1,1)
subplot(2,1,1);plot(t*1000,xa);xlabel('t毫秒');
ylabel('x1(n)');
title('离散信号');holdon
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');holdoffsubplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');ylabel('X1(w)');
title('离散时间傅立叶变换');
四、思考题:
1•通过实验说明信号的时域与频域成反比的关系。
由图可知,当时域扩大为原来的2倍时,频域变为原来的1/2,当时域变为原来的1/2时,频域扩大到原来的2倍。
因此信号的时域与频域成反比。
2•分别求出Xai(t)e10002t|和Xa2(t)e10000列奈奎斯特采样间隔,并与例1信号的奈奎斯特采样间隔比较。
例1中的奈奎斯特采样间隔:
Ts_,丄0.00025。
由例一中的公式计算可知
4000
Xa1t和Xa2t的奈奎斯特采样频率分别为8000样本/秒和2000样本/秒,采样间
11
隔分别为——0.000125和0.0005,分别为例1中奈奎斯特采样间隔的
80002000
12倍和2倍。
实验二音乐电子记谱
一、实验目的
利用Matlab工具分析音频文件的时域和频域特性,利用Matlab工具完成对音频文件升调降调的修改,去噪处理,合成新的音频文件。
二、实验步骤
分析wav格式音频文件的时域与频域特性。
利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。
再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析。
语音的录入与打开:
[x,fs,bits]=wavread('d:
\1.wav');%用于读取语音,采样值放在向量x中,fs表示采样频率(Hz),bits表示量化位数。
sound(x,fs,bits);用于对声音的回放。
向量x则代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。
FFT的MATLAB实现:
在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。
三、实验内容
(1)分别确定乐曲“小星星-降”“小星星-升”的曲调,即Do的基波频率。
matlab程序:
音乐电子记谱小星星_高');
L=length(m);
N=L/32;m1=m(1:
N);fm1=fft(m1);
f=(0:
N/2-1)*fs/N;
plot(f,abs(fm1(1:
N/2))/max(abs(fm1)))grid
axis([0,4000,0,1])
音乐电子记谱小星星_低');
L=length(m);
N=L/32;
m1=m(1:
N);
fm仁fft(m1);
f=(0:
N/2-1)*fs/N;
plot(f,abs(fm1(1:
N/2))/max(abs(fm1)))
grid
axis([0,4000,0,1])
MATLAB分析
试给出去噪的方
⑵乐音文件P_n1到P_n8是真实钢琴弹奏时录制的C大调八个音节,利用
它们的时频特征,确定钢琴弹奏乐音的包络、幅度。
这八个音节含有噪声,
案,并设计相应的系统。
下图为去噪前的P_n1频谱图:
1C0J2OU^Cto5CC0OOCtOC€90CO1QCOQ
Matlab程序:
function[]=music2(fname,sname)
%UNTITLED6此处显示有关此函数的摘要
%此处显示详细说明
[y,fs,bits]=wavread(fname);
%sound(y,fs)%回放语音信号
n=length(y);%选取变换的点数
y_zp=fft(y,n);%对n点进行傅里叶变换到频域
f=fs*(O:
n/2-1)/n;%对应点的频率fp=1500;fc=1700;As=100;Ap=1;%通带边缘频率fp,阻带边缘频率fc%(以上为低通滤波器的性能指标)
wc=2*pi*fc/fs;wp=2*pi*fp/fs;%数字频率=模拟频率/采样频率;
wdel=wc-wp;
beta=0.112*(As-8.7);
N=ceil((As-8)/2.285/wdel);
wn=kaiser(N+1,beta);
ws=(wp+wc)/2/pi;
b=fir1(N,ws,wn);
figure
(2);
freqz(b,1);
%(此前为低通滤波器设计阶段)一一接下来为去除噪声信号的程序一一x=fftfilt(b,y);
X=fft(x,n);
figure(3);
subplot(2,2,1);plot(f,abs(y_zp(1:
n/2)));
title('滤波前信号的频谱图’);
xlabel('频率Hz');
ylabel('频率幅值');
subplot(2,2,2);plot(f,abs(X(1:
n/2)));
title('滤波后信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
subplot(2,2,3);plot(y);
title('滤波前信号的时域波形')
xlabel('时间轴')
ylabel('幅值A')subplot(2,2,4);plot(x);
title('滤波后信号的时域波形')
xlabel('时间轴')
ylabel('幅值A')
%sound(x,fs,bits)%回放滤波后的音频
wavwrite(x,fs,bits,sname);
end
用类似的方法可以将信号P_n2-P_n8进行去噪。
四、思考题
(1)有什么方法可以将“小星星-中”的音乐升高和降低一个八度,用MATLAB实现你的方
法。
MATLAB程序:
音乐电子记谱小星星_中');
L=length(x);
N=L/32;
x1=x(1:
N);
fx1=fft(x1);
f=(0:
N/2-1)*fs/N;
plot(f,abs(fx1(1:
N/2))/max(abs(fx1)))
grid
axis([0,4000,0,1])
sound(x,fs,bits);
x_a=resample(x,1,2);%升高八度
%sound(x_a,fs,bits);
x_b=resample(x,2,1);%降低八度
%sound(x_b,fs,bits);
⑵禾U用MATLAB去噪过后的P_n1到P_n8合成乐曲“小星星”,用sound函数播放合成乐音,即可听到钢琴演奏曲。
[do,fs,bits]=wavread('D:
\P1');
[re,fs,bits]=wavread('D:
\P2');
[mi,fs,bits]=wavread('D:
\P3');
[fa,fs,bits]=wavread('D:
\P4');
[so,fs,bits]=wavread('D:
\P5');
[la,fs,bits]=wavread('D:
\P6');
[xi,fs,bits]=wavread('D:
\P7');
[do1,fs,bits]=wavread('D:
\P8');
y=[do;do;so;so;la;la;so;fa;fa;mi;mi;re;re;do1];
sound(y,fs,bits)