origin fft 频谱分析tools怎样进行波形分析

查看: 4016|回复: 9|关注: 0
Matlab进行fft后,怎么显示多个周期频谱波形呢?
谁知道对离散非周期信号,进行fft后,怎么显示多个周期频谱波形呢?
比如一个离散的三角波,512点fft后,plot输出只是一个周期,怎么能显示多个周期呢?
自己顶上去
:victory: :victory:
matlab只会显示一个周期的频谱结果,要有周期显示,自己扩充吧,不过没有必要哈
那很多书中matlab的多周期频谱都是自己画出来的?
在时域上插零,然后fft,理论上就是频域上就应该是周期延拓了
插值后的延拓在显示上只是会使显示的周期变小,但是显示的还是一个周期中的波形
自己顶上去啊
呵呵,没有从论坛获得结论,但是还是要把结果回馈论坛。
对取完fft的函数,再取一个函数重复显示就行
Xk=fft(xn,512)
Yk=[abs(Xk),abs(Xk)]
之后在对Yk进行输出图形,就行显示多个波形了
关注者: 25
扩充输出函数即可.
站长推荐 /2
Powered by为什么用matlab里的FFT对一个记录下来的波形(列向量)进行分析,采样频率不同,经过FFT后的最大幅值对应的频率值不同.
▆▆▆兕▆▆▆
FFT是把信号从时域变为频域,变换本身不改变信号信息(忽略计算误差),你所说的情况应该是由于采样频率不同而产生.采样频率的选取要符合采样定理,才能避免这种情况,就是采样频率要大于原信号最高频率的二倍以上.
为您推荐:
其他类似问题
扫描下载二维码Matlab仿真波形转到Word以及FFT波形处理_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Matlab仿真波形转到Word以及FFT波形处理
上传于||文档简介
&&M​a​t​l​a​b​仿​真​波​形​转​到​W​o​r​d​以​及​F​F​T​波​形​处​理
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩7页未读,继续阅读
你可能喜欢查看: 4268|回复: 9|关注: 0
用FFT与IFFT实现时域波形复原的数量级为什么差了很多
小女最近在做用fft与ifft实现波形复原的东西,大致思路是这样子的。
(1)先对一个时域波形进行fft变换到频域
(2)事先推导了一个频域内的传递函数,在频域内进行转换
(3)将转换后的数据进行ifft变换回到时域,查看时域内的波形
但是遇到了问题,就是回到时域内的波形数量级很大为10^24。虽然通过传递函数变化后时域内的波形已经和原来的波形不同。但是数量级上也不会差这么多吧?
该问题困惑了我很久,且百思不得其解。望各位同行帮忙看一下吧,若能有一点启发和帮助,实在感激不尽呢。。。
%清空所有变量
&&%先关闭所有图片
%从文件中Z的数值
fniz=input('输入数据文件名:','s');
fidz=fopen(fniz,'r');
Z=fscanf(fidz,'%f',inf);
stadusz=fclose(fidz);
a=input('请输入a/mm:');
b=input('请输入b/mm:');
fs=input('请输入采样频率1/m:');
L=a+b;
N=length(Z);
%得到fft参数,与Z长度N最近的2的次方
N1=2^nextpow2(N);& &
N2=2^nextpow2(N)/2;
if abs(N1-N)&abs(N2-N)
& & nfft=N2;
else
& & nfft=N1;
end
W=fft(Z,nfft);& & %傅里叶变换
mag=abs(W);
magr=mag/(nfft/2);& &%换算成实际幅度
magr(1)=magr(1)/2;
f=(0:nfft-1)*fs/& &%换算成实际的频率值
figure(1)
subplot(211)
loglog(f(1:nfft/2),magr(1:nfft/2));& &%显示换算后的FFT模值结果
xlabel('频率/Hz');ylabel('振幅');
title('弦测数据:幅度-频率曲线图')
grid on
ff=2*pi*f;&&%将频率转化成角频率
h=1-a*(cos(ff*b)+sin(ff*b)*i)/L-b*(cos(ff*a)-sin(ff*a)*i)/L;
h=h';
YY(1)=W(1); %这个第一项h=0,不知道如何处理。
for tt=2:nfft
& & YY(tt)=W(tt)/h(tt);
end
YY(isinf(YY)==1) = 0;
YY=YY';
xt=(0:1/fs:(nfft-1)/fs);
zz=ifft(YY,nfft);
subplot(212)
plot(xt,real(zz))
复制代码其中a=300,b=900,采样频率fs=200;z是我要处理的数据文件,为一列数据,大致为2000行。
关注者: 6
把问题化解下
你的意思是a不等于ifft(fft(a))??
qsj8362234 发表于
把问题化解下
你的意思是a不等于ifft(fft(a))??
确切地说是ifft(fft(a)/h)。h=1-a*(cos(ff*b)+sin(ff*b)*i)/L-b*(cos(ff*a)-sin(ff*a)*i)/L;
关注者: 181
|此回复为最佳答案
h相当于一个响应函数,但是h有些数值可能为0,有些数值可能接近于0。LZ在程序中只对h为0的那些数值做了处理,对于接近0的没有做处理,所以在除h后使数值YY变得很大,但它又不是inf,所以LZ没有处理。经IFFT后就反映出来了。
songzy41 发表于
h相当于一个响应函数,但是h有些数值可能为0,有些数值可能接近于0。LZ在程序中只对h为0的那些数值做了处理 ...
你说的有道理,请问,h是一些复数,如何将h设一个下限值呢?
关注者: 181
因为不了解LZ具体情况,只能随意假设一些值,例如设
h(find(abs(h)&0.1))=0.1
这样使1/h最大为10。
songzy41 发表于
因为不了解LZ具体情况,只能随意假设一些值,例如设
h(find(abs(h)
谢谢版主,我尝试下。请问版主有没有类似于ifft(fft(a)/h)的例子可以让我参考下的,我在想是不是fft后除以h的过程中变量频率没有对应上啊。。
关注者: 181
很抱歉没有ifft(fft(a)/h)的例子。LZ实际上可以把h和1/h单独画出图以仔细考察频率和幅值的关系。
如果是版主说的问题的话,你在频域里加个滤波器试试看。
我现在做的一个就是因为h的值太小,不过我的程序里面,经过除法以后加强了高频分量的噪声,加滤波器就能把这部分噪声去掉,所以出来的结果比较能够接受。
lz解决了吗
站长推荐 /2
Powered by

我要回帖

更多关于 origin fft 频谱分析 的文章

 

随机推荐