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

0-0.90361810.4166667-0.90361810.8333333-0.90361811.25-1.136811.666667-1.136812.083333... 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
第一列是横坐标时间,第二列是纵坐标数值,如何傅里叶变换?时间和数值没有函数关系
展开
falao84
推荐于2017-12-16 · TA获得超过753个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:202万
展开全部

我把你的数据保存到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)));%柱状图,计算每种频率占总能量的百分比。
不知道这样对不对
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式