Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-07-18, 04:08   #1
xiaolobster
初级会员
 
注册日期: 2008-07-18
年龄: 47
帖子: 3
声望力: 0
xiaolobster 正向着好的方向发展
默认 [求助] 傅立叶变换中的位相信息

在谈傅立叶变换时,大家关注的往往是其幅度谱,那么位相谱的作用呢?

查阅了一些资料,说位相谱表示为信号的个频率成分的初始位相。那么我在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处为零,但发现位相值不为零,而且曲线很不规则。这是为什么?


请各位大侠指教,小女子先谢过了。
xiaolobster 当前离线   回复时引用此帖
旧 2008-07-18, 20:36   #2
songzy41
普通会员
 
注册日期: 2008-04-05
年龄: 83
帖子: 37
声望力: 18
songzy41 正向着好的方向发展
默认

采样频率是1000Hz,FFT后的频率分辨率df=1000/512=1.953Hz,所以在FFT变换后的谱线中没有哪一条谱线代表50Hz和120Hz的。所以当然找不到频率为50和120处的初始相角为零。
songzy41 当前离线   回复时引用此帖
旧 2008-07-19, 00:02   #3
xiaolobster
初级会员
 
注册日期: 2008-07-18
年龄: 47
帖子: 3
声望力: 0
xiaolobster 正向着好的方向发展
默认

引用:
作者: songzy41 查看帖子
采样频率是1000Hz,FFT后的频率分辨率df=1000/512=1.953Hz,所以在FFT变换后的谱线中没有哪一条谱线代表50Hz和120Hz的。所以当然找不到频率为50和120处的初始相角为零。
谢谢解答.我还有疑问:

如果找你所说,FFT变换后没有哪条谱线对应50Hz和120Hz,那其他频率所对应的位相值的含义是什么呢?另外fft(x,n)的含义是,如果n小于x的长度,计算时自动解取n长度的数据。所以,我觉得参加运算的数据范围有所缩小,但是频率分辨率为1000/601=1.66Hz。
xiaolobster 当前离线   回复时引用此帖
旧 2008-07-19, 20:25   #4
songzy41
普通会员
 
注册日期: 2008-04-05
年龄: 83
帖子: 37
声望力: 18
songzy41 正向着好的方向发展
默认

1,在信号中只有50Hz和120Hz的分量,其它频率的幅值或不存在、或由泄漏造成,但没有具体的意义,它们的相位也没有具体的意义;
2,可把n=500进行FFT变换,这时df=2,都有具体的谱线代表50Hz和120Hz的分量,也可计算出它们的初始相角;
3,如果还用n=601点来计算,则要用校正法来计算50Hz和120Hz分量的初始相角。
songzy41 当前离线   回复时引用此帖
旧 2008-07-22, 04:43   #5
xiaolobster
初级会员
 
注册日期: 2008-07-18
年龄: 47
帖子: 3
声望力: 0
xiaolobster 正向着好的方向发展
默认

引用:
作者: songzy41 查看帖子
1,在信号中只有50Hz和120Hz的分量,其它频率的幅值或不存在、或由泄漏造成,但没有具体的意义,它们的相位也没有具体的意义;
2,可把n=500进行FFT变换,这时df=2,都有具体的谱线代表50Hz和120Hz的分量,也可计算出它们的初始相角;
3,如果还用n=601点来计算,则要用校正法...
谢谢.我按照你的方法试了一下,果然是对的.但是还是有些问题存在的.

在输入信号中,我给出了几个初位相,然后再用FFT反求出位相.我发现,当输入的正弦信号的系数为正时,由angle算出的位相再加上90才与原来的初位相相同;如果输入正弦信号的系数是负的,由angle算出的位相再-90度,才与初始位相相同。知道这是为什么吗?那么如果我不知道输入信号系数的正负时,我该怎样处理这个问题呢?
xiaolobster 当前离线   回复时引用此帖
旧 2008-07-22, 20:24   #6
songzy41
普通会员
 
注册日期: 2008-04-05
年龄: 83
帖子: 37
声望力: 18
songzy41 正向着好的方向发展
默认

引用:
作者: xiaolobster 查看帖子
谢谢.我按照你的方法试了一下,果然是对的.但是还是有些问题存在的.

在输入信号中,我给出了几个初位相,然后再用FFT反求出位相.我发现,当输入的正弦信号的系数为正时,由angle算出的位相再加上90才与原来的初位相相同;如果输入正弦信号的系数是负的,由angle算出的位相再-90度,才与初始位相相同。知道这是为什么吗?那么如果我不知道输入信号系数的正负时,我该怎样处理这个问题呢?
用angle求出的相位是针对cos信号的,和sin信号相差90度。
songzy41 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]怎么用matlab求质心 未注册 MATLAB论坛 3 2009-02-12 10:46
[求助]关于希尔伯特变换处理信号的一些源程序 lishidang MATLAB论坛 1 2008-10-29 21:53
[求助]小弟请各位帮帮忙 lilijun0012 MATLAB论坛 1 2008-10-28 12:41
GUI中回调函数中 eval 使用的问题 handsomelufeng MATLAB论坛 0 2008-10-16 20:58
数组的比较 xiaolinxianju MATLAB论坛 1 2008-06-19 22:49


所有时间均为北京时间。现在的时间是 01:32


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.