grassing 发表于 2009-2-27 10:30

有人帮忙看一下为什么我得到的谱线不对呢?

ax,bx是两个信号,是以采样频率200k赫兹采样得到的,信号频率是50k赫兹,采样点个数为200,通过下面的程序得到的频谱图中最大谱线却不是在50k赫兹处得到。不知道程序哪错了?麻烦帮忙运行一下看看
ax=;
bx=;
figure(1)
n=1:1:200;
subplot(211),plot(n,ax)
subplot(212),plot(n,bx)
pi=3.1415926;
fft_a=fft(ax,256);
fft_b=fft(bx,256);
fs=200000;
N=200;
f=(0:N/2)*fs/N;
A=fft_a(1:N/2+1)/N*2;
B=fft_b(1:N/2+1)/N*2;
figure(2)
subplot(2,1,1)
stem(f,abs(A(1:N/2+1)))
subplot(2,1,2)
stem(f,abs(B(1:N/2+1)))

songzy41 发表于 2009-2-27 12:03

本帖最后由 wdhd 于 2016-9-14 10:24 编辑

原帖由 grassing 于 2009-2-27 10:30 发表
ax,bx是两个信号,是以采样频率200k赫兹采样得到的,信号频率是50k赫兹,采样点个数为200,通过下面的程序得到的频谱图中最大谱线却不是在50k赫兹处得到。不知道程序哪错了?麻烦帮忙运行一下看看

好象数据和楼主所述不同。如果采样频率200k赫兹,信号频率是50k赫兹,则信号每个周期是4个样点,200个样点应有信号50个周期。但从程序执行看200个样点只信号2个周期。对应采样频率200k赫兹,200个样点有信号2个周期,这时信号频率应为2kHz。
楼主程序中的错误主要是FFT以256点进行,而余下计算按N=200进行,所以不符。以下给的程序中省略了数据。
n=1:1:200;
ax1=ax-mean(ax);
bx1=bx-mean(bx);
subplot(211),plot(n,ax1)
subplot(212),plot(n,bx1)
fft_a=fft(ax1);
fft_b=fft(bx1);
fs=200000;
N=200;
f=(0:N/2)*fs/N;
A=fft_a(1:N/2+1)/N*2;
B=fft_b(1:N/2+1)/N*2;
figure(2)
subplot(2,1,1); stem(f,abs(A(1:N/2+1))); xlim()
subplot(2,1,2); stem(f,abs(B(1:N/2+1))); xlim()
页: [1]
查看完整版本: 有人帮忙看一下为什么我得到的谱线不对呢?