![]() |
[求助] 傅立叶变换中的位相信息
在谈傅立叶变换时,大家关注的往往是其幅度谱,那么位相谱的作用呢?
查阅了一些资料,说位相谱表示为信号的个频率成分的初始位相。那么我在matlab做了一个计算,代码如下: t = 0:0.001:0.6; x = sin(2*pi*50*t)+sin(2*pi*120*t); %y = x + 2*randn(size(t)); y=x; figure; plot(1000*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise') xlabel('time (milliseconds)') Y = fft(y,512); Pyy = Y.* conj(Y) / 512; phase=angle(Y)*180./pi; f = 1000*(0:256)/512; figure; plot(f,Pyy(1:257)); figure; plot(f,phase(1:257)); title('Frequency content of y'); xlabel('frequency (Hz)'); 这是matlab帮助文件中的一个例子,我稍加改动,增加了计算计算傅立叶变换后计算位相谱的语句及相应的作图。 从理论上讲,信号由两个初位相为零的正弦函数组成,那么画出的位相谱和频率的曲线至少在频率为50和120处为零,但发现位相值不为零,而且曲线很不规则。这是为什么? 请各位大侠指教,小女子先谢过了。 |
采样频率是1000Hz,FFT后的频率分辨率df=1000/512=1.953Hz,所以在FFT变换后的谱线中没有哪一条谱线代表50Hz和120Hz的。所以当然找不到频率为50和120处的初始相角为零。
|
[QUOTE=songzy41;13947]采样频率是1000Hz,FFT后的频率分辨率df=1000/512=1.953Hz,所以在FFT变换后的谱线中没有哪一条谱线代表50Hz和120Hz的。所以当然找不到频率为50和120处的初始相角为零。[/QUOTE]
谢谢解答.我还有疑问: 如果找你所说,FFT变换后没有哪条谱线对应50Hz和120Hz,那其他频率所对应的位相值的含义是什么呢?另外fft(x,n)的含义是,如果n小于x的长度,计算时自动解取n长度的数据。所以,我觉得参加运算的数据范围有所缩小,但是频率分辨率为1000/601=1.66Hz。 |
1,在信号中只有50Hz和120Hz的分量,其它频率的幅值或不存在、或由泄漏造成,但没有具体的意义,它们的相位也没有具体的意义;
2,可把n=500进行FFT变换,这时df=2,都有具体的谱线代表50Hz和120Hz的分量,也可计算出它们的初始相角; 3,如果还用n=601点来计算,则要用校正法来计算50Hz和120Hz分量的初始相角。 |
[QUOTE=songzy41;13966]1,在信号中只有50Hz和120Hz的分量,其它频率的幅值或不存在、或由泄漏造成,但没有具体的意义,它们的相位也没有具体的意义;
2,可把n=500进行FFT变换,这时df=2,都有具体的谱线代表50Hz和120Hz的分量,也可计算出它们的初始相角; 3,如果还用n=601点来计算,则要用校正法...[/QUOTE] 谢谢.我按照你的方法试了一下,果然是对的.但是还是有些问题存在的. [COLOR="SeaGreen"]在输入信号中,我给出了几个初位相,然后再用FFT反求出位相.我发现,当输入的正弦信号的系数为正时,由angle算出的位相再加上90才与原来的初位相相同;如果输入正弦信号的系数是负的,由angle算出的位相再-90度,才与初始位相相同。知道这是为什么吗?那么如果我不知道输入信号系数的正负时,我该怎样处理这个问题呢?[/COLOR] |
[QUOTE=xiaolobster;14034]谢谢.我按照你的方法试了一下,果然是对的.但是还是有些问题存在的.
在输入信号中,我给出了几个初位相,然后再用FFT反求出位相.我发现,当输入的正弦信号的系数为正时,由angle算出的位相再加上90才与原来的初位相相同;如果输入正弦信号的系数是负的,由angle算出的位相再-90度,才与初始位相相同。知道这是为什么吗?那么如果我不知道输入信号系数的正负时,我该怎样处理这个问题呢?[/QUOTE] 用angle求出的相位是针对cos信号的,和sin信号相差90度。 |
所有时间均为北京时间。现在的时间是 12:37。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.