声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 982|回复: 1

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

[复制链接]
发表于 2009-2-27 10:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
ax,bx是两个信号,是以采样频率200k赫兹采样得到的,信号频率是50k赫兹,采样点个数为200,通过下面的程序得到的频谱图中最大谱线却不是在50k赫兹处得到。不知道程序哪错了?麻烦帮忙运行一下看看
ax=[516 575 638 709 780 859 948 1032 1129 1220 1319 1423 1518 1634 1729 1849 1954 2066 2163 2279 2376 2488 2591 2688 2788 2876 2970 3061 3143 3213 3289 3363 3426 3478 3535 3576 3623 3651 3674 3697 3707 3719 3718 3705 3697 3673 3654 3617 3572 3528 3475 3416 3354 3278 3205 3132 3045 2960 2861 2769 2676 2570 2474 2370 2262 2157 2040 1935 1826 1717 1617 1511 1407 1302 1206 1111 1013 935 851 769 699 629 564 500 455 406 372 341 307 289 277 271 268 281 297 316 345 374 418 467 519 570 643 713 786 862 944 1032 1128 1223 1318 1422 1528 1627 1736 1846 1955 2060 2164 2275 2381 2485 2585 2689 2784 2882 2970 3062 3141 3221 3289 3362 3426 3479 3529 3583 3623 3648 3677 3698 3710 3716 3718 3709 3701 3680 3649 3618 3574 3526 3475 3417 3349 3280 3207 3128 3046 2957 2861 2773 2669 2569 2465 2367 2255 2154 2039 1930 1824 1722 1617 1503 1402 1302 1204 1111 1021 935 850 771 693 626 566 507 453 408 372 343 308 288 279 274 271 282 288 314 346 380 415 462 ];
bx=[463 420 423 518 697 901 1045 1072 1014 970 1029 1199 1429 1629 1743 1792 1798 1819 1896 2028 2173 2317 2428 2509 2561 2586 2607 2646 2723 2842 2976 3089 3129 3121 3075 3046 3065 3119 3189 3241 3232 3180 3112 3057 3068 3130 3176 3133 3006 2859 2758 2727 2756 2773 2725 2588 2408 2248 2164 2142 2144 2092 1995 1858 1711 1590 1489 1406 1335 1262 1172 1062 946 850 772 725 679 628 552 464 387 309 242 190 177 190 227 240 207 149 111 82 94 144 218 314 357 355 329 336 407 537 674 741 745 743 810 955 1118 1241 1284 1278 1296 1408 1620 1860 2024 2065 2008 1956 1993 2150 2367 2578 2713 2749 2711 2670 2685 2770 2909 3065 3177 3222 3190 3132 3081 3075 3115 3187 3236 3266 3242 3188 3129 3072 3058 3035 3018 2979 2904 2802 2710 2664 2659 2629 2553 2415 2244 2122 2065 2036 1992 1896 1739 1569 1441 1383 1368 1342 1245 1081 918 825 792 786 749 660 532 405 325 309 330 353 336 271 182 112 87 120 160 183 182 173 183 233 290 357 409 430 ];
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)))
回复
分享到:

使用道具 举报

发表于 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([0 1e4])
subplot(2,1,2); stem(f,abs(B(1:N/2+1))); xlim([0 1e4])
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 11:41 , Processed in 0.056623 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表