我看书上和网上大多fft都是对某一个特定的解析函数而言的。我这边的数据,是7.96s内采集的200个杂乱无章的数据,需要对这些数据进行fft变换。
数据如下(保存为shuju.m的文件,第一列为时间,第二列为信号):
%数据
Data = ...
[0 600
0.04 548.333
0.08 676.667
0.12 590
0.16 670
0.2 595
0.24 628.333
0.28 628.333
0.32 726.667
0.36 680
0.4 661.667
0.44 641.667
0.48 613.333
0.52 755
0.56 685
0.6 618.333
0.64 680
0.68 746.667
0.72 820
0.76 720
0.8 660
0.84 731.667
0.88 690
0.92 603.333
0.96 710
1 716.667
1.04 773.333
1.08 623.333
1.12 740
1.16 720
1.2 601.667
1.24 736.667
1.28 648.333
1.32 696.667
1.36 596.667
1.4 711.667
1.44 745
1.48 588.333
1.52 725
1.56 685
1.6 741.667
1.64 618.333
1.68 731.667
1.72 625
1.76 635
1.8 738.333
1.84 640
1.88 760
1.92 696.667
1.96 736.667
2 558.333
2.04 696.667
2.08 853.333
2.12 593.333
2.16 588.333
2.2 686.667
2.24 760
2.28 621.667
2.32 638.333
2.36 706.667
2.4 648.333
2.44 620
2.48 720
2.52 603.333
2.56 611.667
2.6 705
2.64 686.667
2.68 638.333
2.72 746.667
2.76 705
2.8 755
2.84 716.667
2.88 708.333
2.92 786.667
2.96 763.333
3 691.667
3.04 841.667
3.08 756.667
3.12 738.333
3.16 758.333
3.2 763.333
3.24 678.333
3.28 796.667
3.32 770
3.36 731.667
3.4 605
3.44 711.667
3.48 686.667
3.52 695
3.56 621.667
3.6 733.333
3.64 713.333
3.68 750
3.72 591.667
3.76 695
3.8 685
3.84 746.667
3.88 581.667
3.92 716.667
3.96 788.333
4 628.333
4.04 756.667
4.08 563.333
4.12 630
4.16 675
4.2 615
4.24 758.333
4.28 590
4.32 688.333
4.36 620
4.4 646.667
4.44 611.667
4.48 615
4.52 711.667
4.56 678.333
4.6 786.667
4.64 780
4.68 785
4.72 663.333
4.76 661.667
4.8 745
4.84 691.667
4.88 605
4.92 723.333
4.96 683.333
5 668.333
5.04 766.667
5.08 746.667
5.12 670
5.16 690
5.2 728.333
5.24 765
5.28 698.333
5.32 705
5.36 688.333
5.4 770
5.44 575
5.48 685
5.52 730
5.56 596.667
5.6 645
5.64 621.667
5.68 645
5.72 681.667
5.76 661.667
5.8 728.333
5.84 815
5.88 681.667
5.92 683.333
5.96 730
6 651.667
6.04 743.333
6.08 648.333
6.12 610
6.16 713.333
6.2 770
6.24 746.667
6.28 575
6.32 611.667
6.36 711.667
6.4 711.667
6.44 580
6.48 716.667
6.52 598.333
6.56 746.667
6.6 631.667
6.64 680
6.68 685
6.72 845
6.76 555
6.8 590
6.84 663.333
6.88 653.333
6.92 806.667
6.96 628.333
7 763.333
7.04 686.667
7.08 738.333
7.12 833.333
7.16 620
7.2 630
7.24 680
7.28 675
7.32 603.333
7.36 703.333
7.4 803.333
7.44 685
7.48 850
7.52 638.333
7.56 711.667
7.6 691.667
7.64 580
7.68 660
7.72 688.333
7.76 775
7.8 576.667
7.84 681.667
7.88 728.333
7.92 705
7.96 768.333];
然后对这些数据进行快速傅里叶变换:
clear all
clc
shuju;
t=Data(:,1);y=Data(:,2);
figure;
subplot(2,1,1);plot(t,y)
title('长度')
xlabel('时间(s)')
ylabel('长度(mm)')
Fs=25;L=200;
N = 2^nextpow2(L); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0
Y = fft(y,N)/N*2; %除以N乘以2才是真实幅值,N越大,幅值精度越高
f = Fs/N*(0:1:N-1); %频率
A = abs(Y); %幅值
subplot(2,1,2);
plot(f(1:N/2),A(1:N/2)); %函数fft返回值的数据结构具有对称性,因此我们只取前一半
title('幅值频谱')
xlabel('频率(Hz)')
ylabel('幅值')
最后得到的图是这样的:
11.png (25.94 KB, 下载次数: 7)
fft
2018-6-14 20:09 上传
没有得到的正确的幅值-频率图,请教大佬应该怎么办???