|
楼主 |
发表于 2011-7-31 19:02
|
显示全部楼层
x1=3*sin(2*pi*25*t+pi/6);
x2=3*sin(2*pi*25*t+pi/2+pi/6);
y1=6*sin(2*pi*25*t-pi);
y2=6*sin(2*pi*25*t+pi/2-pi);
x=i*x1+x2;
y=i*y1+y2;
r1=fft(x,N);
r2=fft(y,N);
我在上面发的是这四个信号,而我编程序时是用的一下4个信号,x1=3*sin(2*pi*25*t);
x2=3*cos(2*pi*25*t);
y1=6*sin(2*pi*25*t-pi);
y2=6*cos(2*pi*25*t-pi);
x=i*x1+x2;
y=i*y1+y2;
r1=fft(x,N);
r2=fft(y,N);
这样的四个信号构成复数,进行FFT时,能把幅频图和相频图都能正确的输出来,在这里我取得采样频率是100HZ,采样点数是128,变换后是有两个幅频图和相频图,这两个图都反映了这两个复数的幅值和相位,我把图附在下面,老师您看一下,但是我如果改变信号频率,也就是不能满足信号频率是采样频率的整数倍时,幅频图和相频图就不正确了,我不知道这种思想正确不?还有就是正确的话,麻烦老师能帮我校正一下,也就是当不是整周期采样时也能反映幅值和相位。谢谢老师了。下面是我仿真的完整程序,图在附件里。
function pinlv()
clf
fs=100;
N=128;
n=0:N;
t=n/fs;
x1=3*sin(2*pi*25*t);
x2=3*cos(2*pi*25*t);
y1=6*sin(2*pi*25*t+pi);
y2=6*cos(2*pi*25*t+pi);
x=i*x1+x2;
y=i*y1+y2;
q=fft(x,N)
z=fft(y,N);
mag1=abs(q)
mag2=abs(z)
deg1=angle(q)*180/pi
deg2=angle(z)*180/pi;
f1=(0:length(q)-1)'*fs/length(q);
f2=(0:length(z)-1)'*fs/length(z);
subplot(2,2,1),plot(f1,mag1/N);
subplot(2,2,2),plot(f2,mag2/N);
subplot(2,2,3),plot(f1,deg1);grid
subplot(2,2,4),plot(f2,deg2);grid
|
|