Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-03-10, 22:49   #1
bryan1897
初级会员
 
注册日期: 2010-03-10
帖子: 3
声望力: 0
bryan1897 正向着好的方向发展
默认 急求!关于MATLAB中FFT后的相位问题

针对一个普通的正弦信号使用FFT计算其整周期采样信号的幅值相位。标准情况下50Hz时,相频图形没有问题。但是由于我做这个的目的是考虑频率波动情况下,采样频率设置大小对信号幅值、相位的影响,所以我把信号频率改为49.8Hz,其他诸如采样频率等都没变,结果做出来的相频图形显示相位都成负的了,这是程序的问题,还是说本来就该如此?(主要我想0.2Hz的偏差不至于使相位都成负的了吧)~~希望高手解答,附件里是2个相频图。

程序如下:
clc;
clear;
A1=1; %频率F1信号的幅度
F1=49.8; %信号1频率(Hz)
Fs=3200; %采样频率(Hz)
P1=0; %信号1相位(度)
N=64; %采样点数
t=[0:1/Fs:N/Fs]; %采样时刻
%信号
S=A1*sin(2*pi*F1*t+pi*P1/180);
%显示原始信号
subplot(411);plot(S);
title('原始信号时域图');

Y = fft(S,N); %做FFT变换
Ayy = (abs(Y)); %取模
subplot(412);stem(Ayy(1:N)); %显示原始的FFT模值结果
title('FFT 模值');
Ayy=Ayy/(N/2); %换算成实际的幅度
Ayy(1)=Ayy(1)/2;
F=([1:N]-1)*Fs/N; %换算成实际的频率值,Fn=(n-1)*Fs/N
subplot(413);stem(F(1:N/2),Ayy(1:N/2)); %显示换算后的FFT模值结果
title('幅度-频率曲线图');
Pyy=[1:N/2];
for i=1:N/2
Pyy(i)=angle(Y(i)); %计算相位
Pyy(i)=Pyy(i)*180/pi; %换算为角度
end;
subplot(414);stem(F(1:N/2),Pyy(1:N/2)); %显示相位图
title('相位-频率曲线图');
上传的图像
文件类型: jpg 49.8HZ.JPG (72.0 KB, 14 次查看)
文件类型: jpg 50HZ.JPG (72.2 KB, 10 次查看)
bryan1897 当前离线   回复时引用此帖
旧 2010-03-11, 10:10   #2
_l_
初级会员
 
注册日期: 2009-11-29
年龄: 35
帖子: 12
声望力: 16
_l_ 正向着好的方向发展
默认 回复: 急求!关于MATLAB中FFT后的相位问题

程序计算的结果没错,但频率分辨力是50Hz,直接来分析49.8Hz的信号,这方法有问题,不能得到正确的结果
_l_ 当前离线   回复时引用此帖
旧 2010-03-11, 10:24   #3
bryan1897
初级会员
 
注册日期: 2010-03-10
帖子: 3
声望力: 0
bryan1897 正向着好的方向发展
默认 回复: 急求!关于MATLAB中FFT后的相位问题

引用:
作者: _l_ 查看帖子
程序计算的结果没错,但频率分辨力是50Hz,直接来分析49.8Hz的信号,这方法有问题,不能得到正确的结果
谢谢你的回复~那么频率分辨率就是50Hz,就没法针对频率小的偏差进行计算了吗?我目的主要是在有小的频率偏差情况下,验证采样点越多,幅值、相位的计算就越接近实际值。还有其他办法吗?
bryan1897 当前离线   回复时引用此帖
回复


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

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



所有时间均为北京时间。现在的时间是 15:24


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