测试信号实验报告.docx
《测试信号实验报告.docx》由会员分享,可在线阅读,更多相关《测试信号实验报告.docx(13页珍藏版)》请在冰点文库上搜索。
测试信号实验报告
测试信号实验报告
实验一
一实验目的
1.在理论学习的基础上,通过本次试验,加深对快速傅里叶变换的理解,熟悉FFT算法及其程序的编写。
2.应用FFT对信号进行频谱分析。
3.了解应用FFT进行信号频谱分析过程中可能出现的问题,以便今后能在实际中应用FFT。
二实验内容
1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图
2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选
3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱
4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序
三实验原理
在各种信号序列中,有限长序列占有重要地位。
对有限长序列,可以利用离散傅里叶变换(DFT)进行分析。
DFT不但可以很好地反映序列的频谱特性,而且易于用快速算法(FFT)在计算机上实现。
有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列傅里叶变换的等距采样,因此可以用于序列的谱分析。
FFT是DFT的一种快速算法,它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。
常用的FFT是以2为基数的,其长度N。
它的效率高,程序简单,使用方便。
当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。
在MATLAB中,可用函数FFT来实现,其调用格式为
y=FFT(x)或y=FFT(x,N)
y=FFT(x)为利用FFT算法计算矢量的离散傅里叶变换,当x为矩阵时,y为矩阵x每一列的FFT。
当x的长度为2的整数次方时,则FFT函数采用基2的算法,否则采用稍慢的混合基算法。
y=FFT(x,N)采用N点FFT。
当x的长度小于N时,FFT函数在x的尾部补零,以构成N点数据;当x的长度大于N>时,FFT会截断序列x。
四试验程序
%***************1.正弦波****************%
fs=100;%设定采样频率
N=128;
n=0:
N-1;
t=n/fs;
f0=10;
x=sin(2*pi*f0*t);
figure
(1);
subplot(231);
plot(t,x);
xlabel('t');
ylabel('y');
title('正弦信号y=2*pi*10t时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=(0:
length(y)-1)'*fs/length(y);
figure
(1);
subplot(232);
plot(f,mag);
axis([0,100,0,80]);
xlabel('频率(Hz)');
ylabel('幅值');
title('正弦信号y=2*pi*10t幅频谱图N=128');
grid;
sq=abs(y);
figure
(1);
subplot(233);
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('正弦信号y=2*pi*10t均方根谱');
grid;
power=sq.^2;
figure
(1);
subplot(234);
plot(f,power);
xlabel('频率(Hz)');
ylabel('功率谱');
title('正弦信号y=2*pi*10t功率谱');
grid;
ln=log(sq);
figure
(1);
subplot(235);
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('正弦信号y=2*pi*10t对数谱');
grid;
xifft=ifft(y);
magx=real(xifft);
ti=[0:
length(xifft)-1]/fs;
figure
(1);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的正弦信号波形');
grid;
%****************2.矩形波****************%
fs=10;%设定采样频率
t=-5:
0.1:
5;
x=rectpuls(t,2);
x=x(1:
99);
figure
(2);
subplot(231);
plot(t(1:
99),x);%作矩形波的时域波形
xlabel('t');
ylabel('y');
title('矩形波时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x);%进行fft变换
mag=abs(y);%求幅值
f=(0:
length(y)-1)'*fs/length(y);%进行对应的频率转换
figure
(2);
subplot(232);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('矩形波幅频谱图');
grid;
%求均方根谱
sq=abs(y);
figure
(2);
subplot(233);
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('矩形波均方根谱');
grid;
%求功率谱
power=sq.^2;
figure
(2);
subplot(234);
plot(f,power);
xlabel('频率(Hz)');
ylabel('功率谱');
title('矩形波功率谱');
grid;
%求对数谱
ln=log(sq);
figure
(2);
subplot(235);
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('矩形波对数谱');
grid;
%用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:
length(xifft)-1]/fs;
figure
(2);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的矩形波波形');
grid;
%****************3.白噪声****************%
fs=10;%设定采样频率
t=-5:
0.1:
5;
x=zeros(1,100);
x(50)=100000;
figure(3);
subplot(231);
plot(t(1:
100),x);%作白噪声的时域波形
xlabel('t');
ylabel('y');
title('白噪声时域波形');
grid;
%进行FFT变换并做频谱图
y=fft(x);%进行fft变换
mag=abs(y);%求幅值
f=(0:
length(y)-1)'*fs/length(y);%进行对应的频率转换
figure(3);
subplot(232);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('白噪声幅频谱图');
grid;
%求均方根谱
sq=abs(y);
figure(3);
subplot(233);
plot(f,sq);
xlabel('频率(Hz)');
ylabel('均方根谱');
title('白噪声均方根谱');
grid;
%求功率谱
power=sq.^2;
figure(3);
subplot(234);
plot(f,power);
xlabel('频率(Hz)');
ylabel('功率谱');
title('白噪声功率谱');
grid;
%求对数谱
ln=log(sq);
figure(3);
subplot(235);
plot(f,ln);
xlabel('频率(Hz)');
ylabel('对数谱');
title('白噪声对数谱');
grid;
%用IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:
length(xifft)-1]/fs;
figure(3);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('通过IFFT转换的白噪声波形');
grid;
五实验结果图
正弦信号频谱图
图1正弦信号的时域波形图2正弦信号的幅频谱图图3正弦信号的均方根谱
图4正弦信号的功率谱图5正弦信号的对数谱图6用IFFT转换的正弦信号波形
矩形波
图1矩形波的时域波形图2矩形波的幅频谱图图3矩形波的均方根谱
图4矩形波的功率谱图5矩形波的对数谱图6用IFFT转换的矩形波波形
白噪声
图1白噪声的时域波形图2白噪声的幅频谱图图3白噪声的均方根谱
图4白噪声的功率谱图5白噪声的对数谱图6用IFFT转换的白噪声波形
六实验感想
通过这一次Matlab的实验,让我对Matlab在系统设计与处理系统中的应用有了一定的了解,使我意识到实践是非常重要的,也让我我对FFT与IFFT有了进一步的理解,并了解到正弦波,矩形波和白噪声的各种图谱。
通过改变三个程序的采样频率,输入波形的种类(正弦波,矩形,白噪声),频率,数据长度等等数据,输出了要求的不同图形,可以更直观的知道FFT算法的实用性,也对其算法进行了验证。
而自从快速傅里叶变换(FFT)出现以后,频谱分析技术便很快的发展起来,而且越来越贴近我们的生活生产,如医疗器械,无线电通信等等,但是我们并未对频谱分析技术的研究达到最高的层次,未来发展具有很广阔的的空间。
对于我们测控技术与仪器专业来说,对信号的处理和分析在今后的学习,生活甚至是工作中都占有很重要的一部分,所以,在以后的学习中,我们更应该加强这一方面的专业知识,拓宽我们的视野,为以后的更好的生活工作努力。
实验二利用冲激响应不变法设计巴特沃斯高通数字滤波器
一、实验目的
1、掌握不同函数对傅里叶变换程序的编写。
2、联系Matlab编程。
3、熟悉巴特沃斯高通数字滤波器。
二、实验内容
1、利用Matlab软件显示巴特沃斯数字滤波器的图谱。
2、分析图谱,并从图中得到相关数据。
三、实验原理
设计IIR高通数字滤波器时,有两种方法。
一是先设计一个原型低通模拟滤波器,然后通过模拟滤波器的频率变化,转换成高通模拟滤波器。
另一种方法是先设计一个低通模拟原型,然后得到低通数字滤波器,再经频率变化,转换成高通数字滤波器。
四、试验程序
Fs=5000;%抽样频率
wp=2000*2/Fs;
ws=1500*2/Fs;
Rp=1;%通带波纹
Rs=20;%阻带衰减
Nn=128;%滤波器的序列点数
[N,Wn]=buttord(wp,ws,Rp,Rs);%计算滤波器的阶次和截止频率Wn为滤波器的幅度响应下降至0.707处的频率n为阶次
[b,a]=butter(N,Wn,'high');%设计截止频率为Wn的n阶高通巴特沃斯数字滤波器
b,a为滤波器系统函数表达式中的系数
high表示滤波器为高通滤波器
freqz(b,a,Nn,Fs)%数字滤波器的频率响应
五、实验结果图
六、实验心得
通过这次实验,使我更加熟练使用Matlab软件,也让我对巴特沃斯高通数字滤波器有了进一步的了解.它还使我明白了做事要仔细认真,一个不经意间,可能实验结果就出不来。
数字滤波器具有精度高、稳定性好、灵活性强、可预见性好的特点。