声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2815|回复: 15

[声学基础] FFT结果不理想是怎么回事呢

[复制链接]
发表于 2016-11-28 18:09 | 显示全部楼层 |阅读模式

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

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

x
请问大家,FFT变换后,想求得信号频率,但是结果峰值并不明显,第一个峰值是直流量,是数据的问题还是我写的代码有问题?数据第一、二列是时间,第三列是气压值
clear;
fid=fopen('2016-05-30-10-24-08.txt');
c=textscan(fid,'%s%s%f');
%链接两个字符串
d=strcat(c{1,1},'/',(c{1,2}));
%将时间字符串转为数字
ymd=datenum(d);
%验证转化的时间是否正确
r=datestr(ymd,'dd-mmm-yyyy HH:MM:SS')
subplot(2,2,1)
plot(ymd,c{1,3});
datetick('x','mm-dd/HH');
xlabel('time');
ylabel('f(t)');

%傅里叶变换
fs=1;
L=length(ymd);
N=length(c{1,3});
n=0:L-1;
t=ymd;
dat=c{1,3}-mean(c{1,3});
tp=[ymd dat];
save tp.mat;
Y=fft(dat,N);
mag=abs(Y);%求幅值
%相位
P=angle(Y);
%频率
f=(0:N-1)*fs/N;
%求峰值,得到幅度最大值及下标
[C,Q]=max(mag(1:N/2)*2/N);
fm=f(Q);
subplot(2,2,2);
plot(f(1:N/2),mag(1:N/2)*2/N);
set(gca, 'Xlim',[0 0.001]);
xlabel('frequence/Hz');
ylabel('amplitude');
%title('f=(0:N-1)*fs/L  fs=1Hz 2016-05-25');
title('fs=1Hz 2016-05-25');

subplot(2,2,3)
plot(f(1:N/2),P(1:N/2));
xlabel('frequence/Hz');
ylabel('phase');
%set(gca, 'XTick',[-3.14,0,3.14] );
2016_05_30.png

2016-05-30-10-24-08.txt

2.41 MB, 下载次数: 1

回复
分享到:

使用道具 举报

 楼主| 发表于 2016-11-29 07:53 | 显示全部楼层
哪位大神帮我能看下
发表于 2016-11-29 08:20 | 显示全部楼层
改一下坐标轴上下限的值 试试会不会好一些
 楼主| 发表于 2016-11-29 10:23 | 显示全部楼层
sovereign 发表于 2016-11-29 08:20
改一下坐标轴上下限的值 试试会不会好一些

第一个峰值是直流分量,没有意义,我想得到信号的频率,但是看图中振幅非常小,您能帮我看下我的代码是不是没问题吧?

点评

你频率范围也太小了  详情 回复 发表于 2016-11-29 13:32
发表于 2016-11-29 13:32 | 显示全部楼层
xiujuan507 发表于 2016-11-29 10:23
第一个峰值是直流分量,没有意义,我想得到信号的频率,但是看图中振幅非常小,您能帮我看下我的代码是不 ...

你频率范围也太小了
 楼主| 发表于 2016-11-29 14:50 | 显示全部楼层
sovereign 发表于 2016-11-29 13:32
你频率范围也太小了

这个信号频率就是很低啊,10的-3次方以下,我的代码没有错吧,大神
发表于 2016-11-29 16:09 | 显示全部楼层
加窗过滤吧
 楼主| 发表于 2016-11-29 17:11 | 显示全部楼层

过滤后的效果能是什么样子的呢?我做出来的很不光滑

点评

难道还需要插值吗?  详情 回复 发表于 2016-11-30 08:31
发表于 2016-11-30 08:31 | 显示全部楼层
xiujuan507 发表于 2016-11-29 17:11
过滤后的效果能是什么样子的呢?我做出来的很不光滑

难道还需要插值吗?
发表于 2016-11-30 09:24 | 显示全部楼层
敷衍会致命 发表于 2016-11-30 08:31
难道还需要插值吗?

窗函数用来平滑的
发表于 2016-11-30 13:25 | 显示全部楼层
貌似代码没什么问题  加入窗函数之后  再看看结果吧  估计差别不大
 楼主| 发表于 2016-11-30 18:43 | 显示全部楼层
think2015 发表于 2016-11-30 13:25
貌似代码没什么问题  加入窗函数之后  再看看结果吧  估计差别不大

多谢,第一个波峰是直流分量,没什么意义,其它波峰的幅值较小,请问加窗后直流分量能去掉吗?

点评

够呛 应该去不掉 去直流的话 i1=i-mean(i) 试试吧  详情 回复 发表于 2016-12-1 08:16
 楼主| 发表于 2016-11-30 18:45 | 显示全部楼层
xiujuan507 发表于 2016-11-30 18:43
多谢,第一个波峰是直流分量,没什么意义,其它波峰的幅值较小,请问加窗后直流分量能去掉吗?

因为我想得到信号的频率,但是傅里叶变换后,除了第一个直流分量的频率,其它的都不是很明显?不知道这是为什么呢?
发表于 2016-12-1 08:16 | 显示全部楼层
xiujuan507 发表于 2016-11-30 18:43
多谢,第一个波峰是直流分量,没什么意义,其它波峰的幅值较小,请问加窗后直流分量能去掉吗?

够呛  应该去不掉  去直流的话 i1=i-mean(i)  试试吧
 楼主| 发表于 2016-12-1 11:34 | 显示全部楼层
think2015 发表于 2016-12-1 08:16
够呛  应该去不掉  去直流的话 i1=i-mean(i)  试试吧

这个图就是已经减去平均值了

点评

那就加窗试试吧  详情 回复 发表于 2016-12-1 13:04
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-16 07:01 , Processed in 0.070148 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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