如何用matlab实现对离散数据的快速傅里叶变换
我有一组电压数据,共200000个,这些数据之间的时间间隔为0.0000000005s,如何对其进行fft运算?是不是就是简单的y=fft(x)?根据这些数据是否可以说取...
我有一组电压数据,共200000个,这些数据之间的时间间隔为0.0000000005s,如何对其进行fft运算?是不是就是简单的y=fft(x)?
根据这些数据是否可以说取样频率是2000000000Hz,而取样点数为200000?
在网上查了好多资料都是给出数据的函数表达式,然后用给定的取样频率和取样点数来进行取点然后进行fft运算,很少有这样直接提供离散数据要求直接进行快速傅立叶变换的,求大神帮助啊。。求别给help fft什么的这样的答案了,要是help里面的例子我能看懂也就不来这里提问了。。
我自己写的代码是这样的,但是这肯定不对。。因为这个电压信号的频率大约在35KHz左右,而幅值也应该在8000左右。。
a=load('uapp.txt');%数据都储存在这样一个txt文档里
x=a(:,2);%文档第一列是时间数据,第二列才是电压数据
y=fft(x);
mag=abs(y)*2/200000;%看例子里面都是这么写的。。
fs=(0:199999)*2000000000/200000;
plot(fs,mag)
运行代码出来的图像是这样的。。只有直流部分和一个频率大的不行的部分。。 展开
根据这些数据是否可以说取样频率是2000000000Hz,而取样点数为200000?
在网上查了好多资料都是给出数据的函数表达式,然后用给定的取样频率和取样点数来进行取点然后进行fft运算,很少有这样直接提供离散数据要求直接进行快速傅立叶变换的,求大神帮助啊。。求别给help fft什么的这样的答案了,要是help里面的例子我能看懂也就不来这里提问了。。
我自己写的代码是这样的,但是这肯定不对。。因为这个电压信号的频率大约在35KHz左右,而幅值也应该在8000左右。。
a=load('uapp.txt');%数据都储存在这样一个txt文档里
x=a(:,2);%文档第一列是时间数据,第二列才是电压数据
y=fft(x);
mag=abs(y)*2/200000;%看例子里面都是这么写的。。
fs=(0:199999)*2000000000/200000;
plot(fs,mag)
运行代码出来的图像是这样的。。只有直流部分和一个频率大的不行的部分。。 展开
4个回答
展开全部
1、双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。
2、在命令行窗口中输入:x=0:2:22;y=2*exp(x).*sin(x);创建了12个原始数据点。
3、在命令行窗口中输入:xi=0:0.1:22;创建要进行插值的数据的横坐标。
4、在命令行窗口中输入:yi=spline(x,y,xi);使用函数spline(x,y,xi);可以获得对原始数据的三次样条插值的y轴坐标。
5、在命令行窗口中输入:plot(x,y,'o',xi,yi);在图像中绘制原始数据点和三次样条插值的数据点图示。
6、在命令行窗口中输入:title('三次样条插值');xlabel('x');ylabel('y');给绘制的图示添加标题和坐标轴的标签。
7、最后查看绘制的原始数据点图和三次样条插值图示,注意标题、横坐标、纵坐标等。
展开全部
那是因为FFT的结果数值之间差异很大,所以在图上显示不出来,可以只显示部分区间的数值,就是限定坐标值范围。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问你最后解决了这个问题了吗??我现在也遇到同样的问题,想问下需要在matlab里面先找到拟合的函数,在傅里叶变换吗??还是直接用fft就行了??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询