作者flybow (yyyyyyyy)
看板Electronics
标题Re: [问题] 讯号的频率成分...?
时间Mon Apr 2 03:03:02 2007
※ 引述《invalid (everlasting)》之铭言:
: 基本上finite sampling的FFT总是会遇到spectrum leakage的问题
: 要记得,取"300"个点进行FFT分析
: 代表的是你"已经假设"你的讯号每300个samples就会重覆一次
: 除非你的X[0]=X[300],不然一定会有不连续点
: 不连续点会使你的频谱失真
: 而失真的程度跟你取点的多寡是相反的
: 也跟你的的time slot有关
: 一般的解决办法除了多抓一些sample
: 就是用windowing function
: 有很多windowing function可以使用
: 每一种有不同的特性,端看你想要知道的东西是什麽
: 不过你的信号不是周期讯号
: 能量应该是连续分布在低频的区域
: 应该也没办法"完全"的列出每个频率的比例吧..
: ※ 引述《flybow (yyyyyyyy)》之铭言:
: : 请问各位电机通讯,还有程式的高手
: : 我有一个暂态讯号.x=exp(-0.5t)-exp(-t) t=linspace(0,20,300)
: : 我做了FFT(x,300)...我要怎要才能从这300个点内,完全的分出每个频率占多少的
: : 比例
: : Y = fft(x,300);%无论t怎样改动,Y的值不变
: : Pyy= Y.* conj(Y) / 300;
: : f=1000*(0:150)/300; %???
: : figure(2);plot(f,Pyy(1:151))
: : title('Frequency content of y')
: : xlabel('frequency (Hz)')
: : 我用这段程式来看,只能大略看出来,却无法详细的得到确切数据...
: : 我想要的答案比如说...
: : 0.1HZ 占讯号比例 75%
: : 20 HZ 0.5%
: : 的这种数据.....
: : 请各位帮帮我,我该怎麽求?
: : 我现在正在做声波的散射的理论分析,过去都是使用简单的单频波,我这次使用的
: : 则是多频率的暂态讯号..所以有这个问题在.....
: : 请问各位了...
: : 或者可以用FFT的这300个点,看出频率的组成吗?
clear
t=linspace(0,20,300);
xx=(t(2)-t(1))*10;
L=(t(2)-t(1))*15;
move=L-xx;
delt=t(2)-t(1);
f=0.000001:0.1:50;
%由图得知,输入讯号为低频,50Hz以後我就不考虑了,只取
0~50Hz的结果,也考虑各频率所占讯号能量的比重
%由0.000001开始是因为,bessely(n,a)在a=0时会发散
m1=1./((1+2*i*2*pi*f).*(1+i*2*pi*f)); %exp(-0.5t)-exp(-t)之FT
m=abs(m1); %各频率的讯号值大小,表示振幅响应,亦即傅立叶振幅
total=sum(m); %大小总和
weight=m./total; %比重
============================================================================
这是我想到的,不过还蛮烂的,也不精准.....如同板友所说,
讯号确实是连续分布
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.123.66.51
1F:→ Maddulin:和连续不连续没有太大关系, 以DFT 近似 FT的time-domain 04/02 11:12
2F:→ Maddulin:讯号本来就是连讯的, 问题在於你的time-domain 取样 04/02 11:21
3F:→ Maddulin:window, 20s, sampling rate 1/15, 造成alias太大 04/02 11:22
4F:→ Maddulin:你要用fft前,你应该先分析这些问题吧 04/02 11:25