信号与系统
实验教程
(实验报告)
班级: 自动化一班
姓名: 韩晓晖
学号: 20134317
西南交通大学信息科学与技术学院
二〇##年五月二十日
实验一 连续时间信号的采样
一、 实验目的
进一步加深对采样定理和连续信号傅立叶变换的理解。
二、 实验步骤
1.复习采样定理和采样信号的频谱
如果采样频率大于有限带宽信号带宽的两倍,即
则该信号可以由它的采样值重构。否则就会在中产生混叠。该有限带宽模拟信号的被称为奈奎斯特频率。
必须注意,在被采样以后,表示的最高模拟频率为Hz(或)。
采样信号的频谱为原信号频谱以采样频率为周期的周期延托:
2.熟悉如何用MATLAB语言实现模拟信号表示
严格地说,除了用符号处理工具箱(Symbolics)外,不可能用MATLAB来分析模拟信号。然而如果用时间增量足够小的很密的网格对采样,就可得到一根平滑的曲线和足够长的最大时间来显示所有的模态。这样就可以进行近似分析。令是栅网的间隔且,则
(2)
可以用一个数组来仿真一个模拟信号。不要混淆采样周期和栅网间隔,因为后者是MATLAB中严格地用来表示模拟信号的。类似地,付利叶变换关系也可根据(2)近似为:
(3)
现在,如果(也就是)是有限长度的。则公式(3)与离散付利叶变换关系相似,因而可以用同样的方式以MATLAB来实现,以便分析采样现象。
三、 实验内容
1. 通过例1熟悉用MATLAB语言实现描绘连续信号的频谱的过程,并在MATLAB语言环境中验证例1的结果;
例1 令,求出并绘制其傅立叶变换。
解:根据傅立叶变换公式有
(4)
因为是一个实偶信号,所以它的傅立叶变换是一个实偶函数。为了用数值方法估计,必须先把用一个栅格序列来近似。
利用,注意可以用一个在(或等效地[-5,5]毫秒)之间的有限长度信号来近似。
类似地从式(4),,当。由此选:
用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)]; %频率从-Wmax to Wmax
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('连续时间傅立叶变换')
图1 例1中的曲线
图1给出了和。注意为了减少计算量,这里只在弧度/秒(等效地[0,2]kHz)范围内计算了,然后将它复制到中去以便于绘图。所画出的的图与公式(3)相符。
2. 仿照例2用MATLAB语言实现对连续信号的采样;并验证采样定理。
a.以样本/秒采样得到。求并画出。
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('离散信号');hold on
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');hold off
subplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
b.以样本/秒采样得到。求并画出。
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('离散信号');hold on
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');hold off
subplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
a.以样本/秒采样得到。求并画出
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('离散信号');hold on
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');hold off
subplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
b.以样本/秒采样得到。求并画出。
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('离散信号');hold on
stem(n*Ts*1000,x);gtext('Ts=0.2毫秒');hold off
subplot(2,1,2);
plot(w/pi,X);
xlabel('以pi为单位的频率');
ylabel('X1(w)');
title('离散时间傅立叶变换');
四、 思考题:
1.通过实验说明信号的时域与频域成反比的关系。
由图可知,当时域扩大为原来的2倍时,频域变为原来的1/2,当时域变为原来的1/2时,频域扩大到原来的2倍。因此信号的时域与频域成反比。
2.分别求出奈奎斯特采样间隔,并与例1信号的奈奎斯特采样间隔比较。
例1中的奈奎斯特采样间隔:。由例一中的公式计算可知和的奈奎斯特采样频率分别为8000样本/秒和2000样本/秒,采样间隔分别为,分别为例1中奈奎斯特采样间隔的倍和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程序:
[m,fs]=wavread('D:\音乐电子记谱\小星星_高');
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])
[m,fs]=wavread('D:\音乐电子记谱\小星星_低');
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])
(2) 乐音文件P_n1到P_n8是真实钢琴弹奏时录制的C大调八个音节,利用MATLAB分析它们的时频特征,确定钢琴弹奏乐音的包络、幅度。这八个音节含有噪声,试给出去噪的方案,并设计相应的系统。下图为去噪前的P_n1频谱图:
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*(0: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程序:
[x,fs,bits]=wavread('D:\音乐电子记谱\小星星_中');
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);
(2) 利用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)
信号与系统实验课程实验报告20xx20xx学年第一学期实验名称专业学生姓名班级学号指导教师指导单位日期信号与系统实验一实验目的1了…
实验三线性系统的频域分析一实验目的1掌握傅立叶级数FT学会分析连续时间周期信号的频谱及MATLAB实现2掌握傅立叶变换Fjw了解傅…
重庆大学学生实验报告实验课程名称信号与系统双语开课实验室DS1407学院光电年级12级专业班电科02班学生姓名艾渝学号开课时间二学…
信号与系统B硬件实验报告姓名学号20xx0312920xx实验项目三连续系统的幅频特性一实验项目名称连续系统的幅频特性测量二实验目…
信号与系统实验报告实验名称信号的卷积实验时间周一第68节实验日期20xx1215姓名吕葛梁学号13081119姓名沈俊学号1308…
信号与系统实验心得体会为期四周的信号与系统测试实验结束了,细细品味起来每一次在顺利完成实验任务的同时,又都伴随着开心与愉快的心情,…
信号与系统实践分析班级:电子11姓名:王氏准考证号:05491122XXXX《信号与系统》实践分析信号与系统是电子信息类学生重要的…
实验一连续时间信号的频域分析一实验目的1掌握连续时间周期信号的傅里叶级数的物理意义和分析方法2观察截短傅里叶级数产生的Gibbs现…
信号与系统试验报告第1页实验一熟悉MATLAB环境和基本信号的产生与运算一实验目的1熟悉MATLAB的运行环境及基本操作命令2掌握…
重庆大学学生实验报告实验课程名称信号与系统双语开课实验室DS1407学院光电年级12级专业班电科02班学生姓名艾渝学号开课时间二学…
信号与系统实验总结论文本学期共有4次信号与系统实验,分别是:信号的分类与观察、非正弦周期信号的频谱分析、信号的抽样与恢复(PAM)…