如何用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)
运行代码出来的图像是这样的。。只有直流部分和一个频率大的不行的部分。。
展开
 我来答
电子数码小百科NW
2020-02-15 · TA获得超过6489个赞
知道答主
回答量:15
采纳率:0%
帮助的人:3762
展开全部

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、最后查看绘制的原始数据点图和三次样条插值图示,注意标题、横坐标、纵坐标等。

chouchouNUDT
推荐于2017-12-15 · TA获得超过1706个赞
知道小有建树答主
回答量:2954
采纳率:50%
帮助的人:1040万
展开全部
那是因为FFT的结果数值之间差异很大,所以在图上显示不出来,可以只显示部分区间的数值,就是限定坐标值范围。
追问

非常感谢!按限定坐标值范围之后确实出现了比较符合要求的图形

但是还有一个问题就是它的幅值问题,我用matlab自带曲线拟合软件拟合出来的图形的表达式是这样的:x=325.2*sin((2.821e+05)*t-2.303)+8337*sin((2.22e+05)*t-1)-287.3*sin((2.867e+05)*t-2.489),按理说图形幅值应该是8000左右,但是图形上看来只有不到6000,这是怎么回事呢?

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科
2020-12-18 · TA获得超过5.9万个赞
知道大有可为答主
回答量:25.3万
采纳率:88%
帮助的人:1.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自大慈岩雪白的梧桐
2018-10-16
知道答主
回答量:2
采纳率:0%
帮助的人:1565
展开全部
请问你最后解决了这个问题了吗??我现在也遇到同样的问题,想问下需要在matlab里面先找到拟合的函数,在傅里叶变换吗??还是直接用fft就行了??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式