信号与系统实验报告.docx

上传人:b****3 文档编号:24792694 上传时间:2023-06-01 格式:DOCX 页数:18 大小:336.69KB
下载 相关 举报
信号与系统实验报告.docx_第1页
第1页 / 共18页
信号与系统实验报告.docx_第2页
第2页 / 共18页
信号与系统实验报告.docx_第3页
第3页 / 共18页
信号与系统实验报告.docx_第4页
第4页 / 共18页
信号与系统实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

信号与系统实验报告.docx

《信号与系统实验报告.docx》由会员分享,可在线阅读,更多相关《信号与系统实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

信号与系统实验报告.docx

信号与系统实验报告

信号与系统

实验教程

(实验报告)

班级:

自动化一班

姓名:

韩晓晖

学号:

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)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1