一维信号的频谱分析(FFT等)

时间:2013-08-30 10:31:28

标签: matlab signals signal-processing fft spectrum

我有两个信号:噪声输入信号和滤波后的OutputSignal。 噪声滤波器已通过卡尔曼滤波器实现。

请点击下面的链接查看信号!

正如我所看到的,信号有两个主要的频率:首先是大波浪,周期约为75个单位,小噪声周期为4-5个单位。实施的滤波器仅降低小波长的噪声。

对于演示,我想要可视化两个信号的光谱,以显示滤波器对不同波长的影响。

我尝试使用Matlab Fourier-Function'fft'但结果并不代表两个频率。我也尝试过MatlabTool'sptool'而没有令人信服的结果。来自sooeet的在线工具'傅里叶计算器'给出了不同的结果,但不是我所期望的。我尝试了所有这些工具,但频谱总是看起来完全随机和嘈杂。

我希望看到的是由低频和高频组成的频谱(如链接图中所示),但所有测试的算法/工具看起来完全不同:

我在下面的链接图片中概述了我的期望。

the two signals and my expectation of the spectrum

也许有人知道一种可以计算这样频率的工具。

信号的值为:

   -0.0823
   -0.2204
   -0.0970
   -0.1723
   -0.5056
   -0.2664
   -0.4280
   -0.2442
   -0.2904
   -0.6514
   -0.7039
   -0.6013
   -0.5876
   -0.6501
   -0.8850
   -0.6061
   -0.7922
   -0.7860
   -0.7300
   -0.9097
   -0.6734
   -0.2516
   -0.6025
   -0.0040
   -0.3505
   -0.0618
   -0.2220
   -0.1041
   -0.0215
    0.0490
    0.0018
    0.0878
   -0.2293
    0.2410
    0.0657
    0.3257
    0.0826
    0.3924
    0.3064
    0.3345
    0.7688
    1.0730
    0.2063
    0.7171
    0.3272
    0.4987
    0.4019
    0.5663
    0.6382
    0.5370
    0.4147
    0.6068
    0.2181
    0.2454
    0.2029
    0.1753
    0.0018
    0.0644
    0.1498
   -0.0313
   -0.0415
   -0.1254
    0.2691
    0.3785
    0.0608
    0.2413
    0.2164
    0.2247
    0.0968
    0.1985
    0.2755
    0.1995
    0.3376
    0.1872
    0.1262
   -0.0419
   -0.2308
    0.0048
    0.0579
   -0.0625
   -0.1756
    0.0075
   -0.0790
   -0.2651
   -0.0291
   -0.1313
   -0.2738
   -0.4048
   -0.3443
   -0.3889
   -0.6654
   -0.4471
   -0.4641
   -0.3966
   -0.4480
   -0.0957
   -0.1514
   -0.5184
   -0.2632
   -0.3455
   -0.5005
   -0.2175
   -0.2515
   -0.2996
   -0.1989
   -0.3179
    0.1894
    0.0282
   -0.3516
   -0.0274
   -0.2997
    0.2925
    0.3074
    0.2470
    0.1185
    0.2817
    0.1456
    0.2326
    0.1424
    0.3457
    0.3262
    0.2793
    0.3235
    0.1701
    0.2401
    0.2372
    0.0883
    0.1992
    0.2818
    0.0423
    0.6161
    0.4469
    0.5074
    0.5558
    0.6857
    0.6317
    0.4676
    0.3587
    0.4891
    0.2760
    0.3660
    0.3490
    0.1351
    0.1628
    0.2769
    0.1409
    0.1632
    0.1190
    0.5887
    0.1945
    0.0592
    0.0377
    0.2261
   -0.2178
    0.0442
   -0.4583
   -0.5077
   -0.4960
   -0.0434
   -0.3791
   -0.3672
   -0.4118
   -0.5115
   -0.3916
   -0.3545
   -0.2559
   -0.3569
   -0.3129
   -0.3004
   -0.2316
   -0.3691
   -0.3324
   -0.2454
   -0.2001
   -0.2204
   -0.2280
   -0.3068
   -0.2990
    0.1794
   -0.1716
   -0.0941
    0.2398
    0.1337
    0.0755
    0.2363
    0.0564
    0.1874
    0.3280
    0.1725
    0.4464
    0.1402
   -0.0018
    0.2718
    0.2061
    0.1836
    0.1328
    0.0092
    0.0355
    0.1673
    0.1444
    0.1378
    0.1587
    0.2226
    0.2634
    0.0417
   -0.0195
    0.0539
    0.3441
    0.1436
    0.5122
    0.3686
    0.3828
    0.3396
    0.3270
    0.4811
    0.2049
    0.2682
    0.3395
    0.3420
    0.3748
    0.3716
    0.3894
   -0.1382
   -0.1493
   -0.0868
   -0.1573
   -0.1433
   -0.2175
   -0.1783
   -0.0486
   -0.2032
   -0.2025
   -0.4589
   -0.7354
   -0.3886
   -0.0840
   -0.4575
   -0.3431
   -0.5350
   -0.5113
   -0.2056
   -0.4737
    0.0260
   -0.5121
   -0.1551
   -0.4069
   -0.3807
   -0.3347
   -0.3512
   -0.3180
   -0.8291
   -0.7202
   -0.5020
    0.1250
   -0.0141
    0.0628
   -0.1551
    0.2211
    0.2363
    0.1585
    0.1450
    0.2387
    0.2360
    0.1590
    0.4279
    0.3582
    0.5718
    0.5606
    0.6549
    0.6370
    0.4914
    0.5626
    0.4162
    0.4844
    0.3744
    0.2757
    0.2870
    0.0700
    0.1728
    0.1208
    0.2915
    0.1573
    0.0115
    0.0417
    0.1508
   -0.0295
   -0.0418
   -0.0973
    0.0187
   -0.2198
   -0.1375
   -0.1966
   -0.1350
   -0.1431
    0.3301
    0.5742
    0.4036
    0.2187
    0.3555
    0.2794
    0.3918
    0.3747
    0.4528
    0.4688
    0.4248
    0.3225
    0.6267
    0.1959
    0.1700
    0.3745
    0.3708
    0.3530
    0.3271
    0.0849
    0.1610
    0.2170
    0.0304
    0.3133
    0.0956
    0.0871
   -0.0735
    0.0496
   -0.0564
   -0.0361
    0.0938
    0.0518
   -0.1462
   -0.6120
   -0.3321
   -0.2617
   -0.3187
    0.0405
    0.0438
   -0.2559
    0.2186
   -0.0834
    0.3523
    0.2136
    0.4076
    0.2963
    0.5153
    0.4901
    0.3855
    0.5180
    0.4889

   -0.0268
   -0.0662
   -0.0602
   -0.0847
   -0.2213
   -0.2482
   -0.3227
   -0.3156
   -0.3219
   -0.4480
   -0.5627
   -0.6124
   -0.6395
   -0.6753
   -0.7778
   -0.7565
   -0.7962
   -0.8198
   -0.8138
   -0.8659
   -0.8218
   -0.6378
   -0.6112
   -0.3874
   -0.3333
   -0.1998
   -0.1578
   -0.0941
   -0.0246
    0.0454
    0.0755
    0.1197
    0.0375
    0.1270
    0.1332
    0.2221
    0.2039
    0.2902
    0.3242
    0.3550
    0.5231
    0.7548
    0.6308
    0.6958
    0.6060
    0.5869
    0.5351
    0.5484
    0.5831
    0.5749
    0.5249
    0.5505
    0.4376
    0.3578
    0.2832
    0.2192
    0.1146
    0.0597
    0.0534
   -0.0064
   -0.0509
   -0.1083
   -0.0115
    0.1088
    0.0970
    0.1489
    0.1807
    0.2068
    0.1813
    0.1937
    0.2286
    0.2286
    0.2741
    0.2566
    0.2194
    0.1309
   -0.0040
   -0.0271
   -0.0218
   -0.0543
   -0.1150
   -0.0961
   -0.1063
   -0.1751
   -0.1453
   -0.1529
   -0.2054
   -0.2896
   -0.3319
   -0.3759
   -0.5006
   -0.5188
   -0.5316
   -0.5122
   -0.5092
   -0.3820
   -0.2980
   -0.3590
   -0.3223
   -0.3224
   -0.3773
   -0.3245
   -0.2942
   -0.2880
   -0.2500
   -0.2625
   -0.1002
   -0.0292
   -0.1092
   -0.0669
   -0.1300
    0.0205
    0.1430
    0.2139
    0.2185
    0.2708
    0.2591
    0.2736
    0.2492
    0.2958
    0.3231
    0.3251
    0.3385
    0.2935
    0.2796
    0.2668
    0.2052
    0.1949
    0.2167
    0.1533
    0.3012
    0.3617
    0.4280
    0.4936
    0.5856
    0.6342
    0.6096
    0.5463
    0.5367
    0.4539
    0.4183
    0.3855
    0.2880
    0.2231
    0.2155
    0.1680
    0.1426
    0.1122
    0.2541
    0.2347
    0.1727
    0.1168
    0.1395
    0.0078
   -0.0041
   -0.1813
   -0.3335
   -0.4413
   -0.3603
   -0.4008
   -0.4218
   -0.4472
   -0.4956
   -0.4873
   -0.4626
   -0.4051
   -0.3918
   -0.3656
   -0.3405
   -0.2976
   -0.3122
   -0.3131
   -0.2851
   -0.2484
   -0.2280
   -0.2167
   -0.2371
   -0.2526
   -0.1016
   -0.1038
   -0.0833
    0.0442
    0.1048
    0.1265
    0.1926
    0.1771
    0.2037
    0.2684
    0.2614
    0.3449
    0.3014
    0.2131
    0.2344
    0.2284
    0.2151
    0.1868
    0.1221
    0.0809
    0.0961
    0.1030
    0.1082
    0.1207
    0.1535
    0.1938
    0.1489
    0.0910
    0.0706
    0.1558
    0.1558
    0.2816
    0.3306
    0.3702
    0.3822
    0.3829
    0.4324
    0.3734
    0.3448
    0.3454
    0.3462
    0.3577
    0.3653
    0.3768
    0.2040
    0.0633
   -0.0221
   -0.1069
   -0.1611
   -0.2210
   -0.2466
   -0.2142
   -0.2347
   -0.2457
   -0.3381
   -0.5021
   -0.5065
   -0.3966
   -0.4315
   -0.4168
   -0.4681
   -0.4982
   -0.4138
   -0.4362
   -0.2818
   -0.3443
   -0.2742
   -0.3065
   -0.3255
   -0.3261
   -0.3326
   -0.3268
   -0.4980
   -0.5957
   -0.5933
   -0.3700
   -0.2374
   -0.1086
   -0.0872
    0.0515
    0.1593
    0.2087
    0.2329
    0.2751
    0.2993
    0.2844
    0.3584
    0.3879
    0.4785
    0.5406
    0.6151
    0.6605
    0.6387
    0.6388
    0.5833
    0.5589
    0.5000
    0.4188
    0.3596
    0.2412
    0.1871
    0.1327
    0.1549
    0.1326
    0.0696
    0.0347
    0.0497
    0.0046
   -0.0317
   -0.0752
   -0.0654
   -0.1352
   -0.1585
   -0.1927
   -0.1942
   -0.1939
   -0.0276
    0.1899
    0.3003
    0.3163
    0.3672
    0.3736
    0.4100
    0.4267
    0.4610
    0.4884
    0.4900
    0.4514
    0.5218
    0.4271
    0.3402
    0.3418
    0.3438
    0.3409
    0.3309
    0.2409
    0.1972
    0.1853
    0.1156
    0.1612
    0.1267
    0.0991
    0.0249
    0.0117
   -0.0307
   -0.0533
   -0.0223
   -0.0085
   -0.0633
   -0.2651
   -0.3250
   -0.3407
   -0.3652
   -0.2546
   -0.1607
   -0.1880
   -0.0476
   -0.0409
    0.1103
    0.1784
    0.2922
    0.3365
    0.4381
    0.5014
    0.5063
    0.5467
    0.5613

提前致谢!

4 个答案:

答案 0 :(得分:0)

如果你有MATLAB的信号处理工具箱,或者你正在使用免费的MATLAB克隆Octave,你可以省去很多悲伤并使用periodogram函数 - 这会照顾所有使用FFT产生功率谱(窗口,FFT,幅度计算等)的令人讨厌的细节 - 它甚至会为你做绘图。

答案 1 :(得分:0)

计算光谱的典型函数是信号处理工具箱中的pwelch。典型用法是:

[PSD_x, F] = pwelch(x, hann(nfft), nfft/2, nfft, fsample);
loglog(F, PSD_x)

这为您提供了真实PSD的统计正确的估计,标准FFT无法为您提供。它的工作原理是将您的数据x划分为多个长度为nfft的窗口,应用适当的window function,然后通过适当的缩放计算所有窗口的FFT的平均值。由于这些窗口的末端通常接近于零,因此通常使用半重叠窗口(这是第三个参数nfft/2),以便所有数据的使用或多或少相等。输出中的单位是每赫兹的幅度平方,因此如果x是电压,则单位为V^2/Hz。在某些领域,更常见的是绘制线性光谱密度,它只是PSD的平方根,在这种情况下是V/sqrt(Hz)

选择nfft的正确值是一门艺术,但可以使用以下公式来理解:如果平均数为navg,则数据的总时间为{{ 1}},其中t_total = t_window * (navg + 1) / 2 ~= navg * t_window / 2是单个傅立叶窗口的时间,t_window。获得的频率分辨率nfft = t_window * fsample只是窗口长度的倒数:df

使用这些方程,您可以找到3个重要属性之间的关系:平均数df = 1 / t_window,您通常希望在10到50之间,频率分辨率navg,这应该是按照问题的典型频率进行操作,并df确定您可用或应衡量的数据总量。如果你知道这3个属性中的2个,那么第三个属性就会出现。

答案 2 :(得分:0)

您可以以使过滤器效果更清晰的方式显示数据。

尝试以下备选方案:

Nt = length(signal1); % same as for signal2
Nf=2^nextpow2(Nt);
f = [0:Nf/2]/Nf;
spec1 = fft(signal1,Nf);
spec2 = fft(signal2,Nf);

(1)log / abs组合:

figure
semilogy(f,abs(spec1(1:Nf/2+1)))
hold on
semilogy(f,abs(spec2(1:Nf/2+1)),'g')
axis tight

(2)比例:

figure
plot(f,abs(spec2(1:Nf/2+1))./abs(spec1(1:Nf/2+1)))
axis tight

结果如下图所示:

enter image description here

请注意,周期为75和5时间单位的信号应分别显示为~0.013和0.2个频率单位。

答案 3 :(得分:0)

这些图像显示了原始信号和卡尔曼滤波信号的FFT计算光谱。由于OP没有给出采样率,因此FFT的任意采样率为5486 Hz。

两个信号都有75 Hz的显着峰值(尽管这些峰值的实际频率取决于采样率),卡尔曼滤波信号的噪声基底也低于预期值。

FFT spectrum of raw signal - linear amplitude FFT spectrum of Kalman filtered signal - linear amplitude

下面的分贝图显示了类似的功能。

FFT spectrum of raw signal - log amplitude FFT spectrum of Kalman filtered signal - log amplitude

使用Sooeet.com FFT

完成FFT计算和图表