作业帮 > 数学 > 作业

matlab 傅里叶变换我想要对一组我测的数据进行傅里叶变换,已知测量的各个时间t以及对应时间的数据值x.比

来源:学生作业帮 编辑:拍题作业网作业帮 分类:数学作业 时间:2024/04/30 19:25:29
matlab 傅里叶变换我想要对一组我测的数据进行傅里叶变换,已知测量的各个时间t以及对应时间的数据值x.比
0 -0.9036181
0.4166667 -0.9036181
0.8333333 -0.9036181
1.25 -1.13681
1.666667 -1.13681
2.083333 -0.9036181
2.5 -0.6704264
2.916667 -0.4372346
3.333333 -0.2040428
3.75 -0.2040428
4.166667 -0.2040428
4.583333 -0.2040428
5 -0.2040428
5.416667 -0.2040428
5.833333 0.02914897
6.25 -0.2040428
6.666667 0.02914897
7.083333 0.4955325
7.5 0.7287243
7.916667 0.7287243
8.333333 0.7287243
8.75 0.2623408
9.166667 0.02914897
9.583333 -0.2040428
10 0.2623408
10.41667 0.7287243
10.83333 0.7287243
11.25 0.7287243
11.66667 0.7287243
12.08333 0.4955325
12.5 0.02914897
12.91667 0.02914897
13.33333 0.02914897
13.75 0.02914897
14.16667 -0.2040428
14.58333 -0.2040428
15 -0.4372346
15.41667 -0.4372346
15.83333 -0.4372346
16.25 0.02914897
16.66667 -0.6704264
17.08333 -0.6704264
17.5 -1.13681
17.91667 -1.13681
18.33333 -1.13681
18.75 -0.6704264
19.16667 -0.4372346
19.58333 -0.2040428
20 -0.6704264
第一列是横坐标时间,第二列是纵坐标数值,如何傅里叶变换?时间和数值没有函数关系
我把你的数据保存到data.txt,放到matlab工作目录里,然后打下面命令,或者保存成m文件 a=load('data.txt');%读数据 t=a(:,1)';%时间 x=a(:,2)';%数据 dt=t(2)-t(1);%用diff(t)看了下,你的采样时间间隔一样,就只算了一个差值 fs=1/dt;%傅里叶变换后的坐标轴的最大值就是采样频率fs,与dt是倒数关系 ax=abs(fft(x));%fft是matlab中傅里叶变换的命令,abs是求模,我画的是幅值谱 f=(0:length(t)-1)*fs/length(t);%频谱图横轴,总共49个点,最大值是fs,每个点就是fs/49 figure();%画在一起了 subplot(211);plot(t,x);%上:时域图 subplot(212);plot(f(1:25),ax(1:25));%下:频谱图%因为频谱图是对称的,所以画一半就可以了.纵轴是幅值,横轴是频率
再问: 非常感谢你的回答,在我的印象里,频谱图是显示各个百分数的住形状,比如3次谐波含量是35%。可是你分析出来的为什么是连续的图形呢?不太懂,请高手指教一二!
再答: 频谱图分析出来的横坐标是频率,单位Hz,纵坐标是幅值,也就是每种频率所占的量。画图时候选择了连续的图形,如果想看柱状图只要改命令就行了。但是比例我有点不清楚。难道是每种频率占总能量的比值,那就把幅值求和算百分比吧。 bar(f(1:25),ax(1:25)./sum(ax(1:25)));%柱状图,计算每种频率占总能量的百分比。 不知道这样对不对