try__try 发表于 2012-3-27 17:03

相位谱!!对不对啊?

fs=1024;
N=1024;
n=0:N-1;
t=n/fs;
x=sin(2*pi*50*t+pi/6);
y=fft(x,N);%进行fft变换
mag=abs(y)*2/N;%求幅值
f=n*fs/length(y);%进行对应的频率转换
subplot(211);
plot(f(1:N/2),mag(1:N/2));%做频谱图
title('幅值-频率曲线图')
grid on
Pyy=;
for i=1:N/2
Pyy(i)=angle(y(i)); %计算相位
Pyy(i)=Pyy(i)*180/pi; %换算为角度
end;
subplot(212);
plot(f(1:N/2),Pyy(1:N/2));    %显示相位图
title('相位-频率曲线图');
grid on
这个画出来的是不是50hz 对应的是pi/6;
但是我貌似画出来 50hz对应的不是pi/6;是-50度!!



李清志 发表于 2012-3-27 20:04

回复 1 # try__try 的帖子

是不是n=0:N-1的问题啊?是不是造成了fs大小的相移啊?我改成n=1:N出来是56.9度。

try__try 发表于 2012-3-28 10:57

回复 2 # 李清志 的帖子

这样 和pi/6 也差很远吧!!是不是我理解错了!!50hz对应的 不是pi/6?

wangheqi 发表于 2012-5-3 16:04

回复 3 # try__try 的帖子

一般的fft变换中对应的都是cos,你把程序里面的sin换成cos试试。这俩一般的差别是90度。

hcharlie 发表于 2012-5-4 10:25

本帖最后由 hcharlie 于 2012-5-4 10:30 编辑

回复 1 # try__try 的帖子

1)应该是整-60度,我用自编程序(也是0~N-1)计算误差极小,可以忽略。你再检查检查。
2)你计算的是整数周期,频谱上除主频外,其余频率振幅都等于0,计算相位可以只计算50这一点,其余点的相位杂乱没有意义。
页: [1]
查看完整版本: 相位谱!!对不对啊?