%fftshift这个地方有错误
clear all;
t=0:01:50;
yp=sin(2pi2t);
yq=sin(2pi20125t);
y=yp+yq;
Y1=fft(y,512);
Y2=fft(y,4096);
Y1=fftshift(Y1);
Y2=fftshift(Y2);
c1=[0:255]/512;
c2=[0:2047]/409;
subplot(2,1,1);plot(c1,abs(Y1(257:512)));
axis([12,22,-30,300]);
title('512点FFT的频谱');grid on;
subplot(2,1,2);plot(c2,abs(Y2(2049:4096)));
axis([12,22,-30,300]);
title('4096点FFT的频谱');grid on;
1、这段代码首先时生成一个离散信号x3,这个离散信号由两个x1,x2合成而来。
2、其次,分别对x1、x2、x3用快速傅立叶算法做512点的离散时间傅立叶变换,X1,X2,X3就是对应x1,x2,x3三个信号的频谱系数。
3、频谱系数一般情况下都是复数,通常用模长和相位分开表示。其中模长用abs函数求,相角用angle函数求,所以plot(f,angle(X3));只是求X3的相角并把他画出来。
mag1=abs(X1);
mag2=abs(X2);
mag3=abs(X3);
这里是分别求幅度。画频谱一般是要把幅度谱和相位谱这两个一起画出。
4、 plot(f(1:N/2),mag3(1:N/2)); 这几句是什么意思? fft求出的结果是对称的双边谱,我们只看一半的话就是看单片谱了。不过一般是取 0~N/2-1 ,取1:N/2的话也行,不过自己要明白有啥区别,有啥区别了?自行翻书了解DFT的物理意义。
5、可能涉及到的知识:频率分辨率、归一化频率与模拟频率和采样频率之间的关系、DFT的物理意义自己去翻书啊。
示波器应该能生成数据文件吧,把数据文件import进matlab就可以了
第二个问题很简单,其实所谓连续波形也只是离散点的包络而已,你上面那个程序就可以,只需要把subplot(223);plot(f(1:N/2),X3(1:N/2),'o')这句话中最后的那个‘o'去掉就可以了
% Add an echo with half the amplitude and 02 second later
加上02秒的回声,即延时
s2 = s1 + 05[zeros(1,20) s1(1:108)];
c = cceps(s2);
CCEPS(X) returns the complex cepstrum of the real sequence X
该函数产生倒谱
其它很简单了
[y,fs,bits]=wavread('E:\MATLA\work\hnistwav');
sound(y,fs,bits); %回放该音频
Y=fft(y,4096); %进行傅立叶变换
subplot(2,1,1);
plot(y);
title('声音信号的波形');
subplot(2,1,2)
plot(abs(Y));
title('声音信号的频谱');
以上就是关于急需一个关于 不同傅里叶变换长度的频谱分析能力 的MATLAB程序,希望大家帮帮忙,十分感谢!!全部的内容,包括:急需一个关于 不同傅里叶变换长度的频谱分析能力 的MATLAB程序,希望大家帮帮忙,十分感谢!!、关于matlab编写的程序,求频谱的。、用Matlab对实验波形进行频谱分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)