bryan1897
2010-03-10, 22:49
针对一个普通的正弦信号使用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('相位-频率曲线图');
程序如下:
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('相位-频率曲线图');