grassing 发表于 2009-3-2 15:46

求教-fft的模值最大点

ax_200=;
bx_200=;
ax1=ax_200-mean(ax_200);
bx1=bx_200-mean(bx_200);
F=200;
figure(19)
subplot(211),plot(n,ax1)
subplot(212),plot(n,bx1)
fft_a=fft(ax1);
fft_b=fft(bx1);
fs1=F*100;
f=(0:N/2)*fs1/N;
A=fft_a(1:N/2+1)/N*2;
B=fft_b(1:N/2+1)/N*2;
=max(abs(A));
=max(abs(B));
A_max=A(index_a1);
B_max=B(index_b1);

上面程序中求得的A_max和B_max得到的应该是两个信号ax_200和bx_200的频谱模值最大的那一个。
那么这两个复数表示的是什么意思呢?
是不是包含了这个信号的幅度和相位信息?

grassing 发表于 2009-3-2 22:09

回复 楼主 grassing 的帖子

n=1:1:1N;
x=x-mean(x);
temp1=fft(x);
fft_x=temp1(1:N/2+1)*2/N;
fs1=(0:N/2)*fs/N;
=max(abs(temp1));
agle=angle(3)*180/pi;%3表示频率对应谱线是第三条
modl=abs(temp1(no1));

这里假设f是信号频率,已知
关键是,我通过这个式子modl=abs(temp1(no1)),能否说modl就是这个信号的幅度?
如果能的话,那我是否根据agle和modl就可以确定这个信号具体的公式为
x=modl×sin(2×pi×f×n/N+agle)?

songzy41 发表于 2009-3-4 18:04

从你上程序来看,max1就是信号的幅值了,而初始相角应为
agle=angle(temp1(3))*180/pi;%3表示频率对应谱线是第三条
这个信号具体的公式为
x=max1×sin(2×pi×f×(n-1)/fs+agle)

grassing 发表于 2009-3-4 22:12

回复 板凳 songzy41 的帖子

t=1:1:200;
N=200;%信号点个数
pi=3.1415926;
f=200e3;%信号频率
fs=20e6;%采样频率
jiao1=0.0292*180/pi;
jiao2=2*0.0292*180/pi;
ax=0.6338*sin(2*pi*f/N*t+jiao1);
bx=0.6338*0.6338*sin(2*pi*f/N*t+jiao2);

ax=ax-mean(ax);
temp=fft(ax);
fft_ax=temp(1:N/2+1)*2/N;
=max(abs(fft_ax(1:N/2+1)));

bx=bx-mean(bx);
temp1=fft(bx);
fft_bx=temp1(1:N/2+1)*2/N;
=max(abs(fft_bx(1:N/2+1)));

f1=(0:N/2)*fs/N;
figure(1)
stem(f1,abs(temp(1:N/2+1)),'bo'),xlim()
figure(2)
stem(f1,abs(temp1(1:N/2+1)),'ro'),xlim()

上面程序画出来的谱线却不是在200KHz处?
(晕,不会传图片)

songzy41 发表于 2009-3-5 06:37

楼主在信号设置上有错误,应改为:
ax=0.6338*sin(2*pi*f/fs*t+jiao1);
bx=0.6338*0.6338*sin(2*pi*f/fs*t+jiao2);

grassing 发表于 2009-3-9 09:01

回复 5楼 songzy41 的帖子

喔 嘿嘿 谢谢
这样就对了
页: [1]
查看完整版本: 求教-fft的模值最大点