MATLAB FFT变换后幅值不对

想询问一个matlab频率谱分析的问题就是我用matlab对一个直流信号加正弦信号的混合信号进行FFT但是后面频率对应是正确的,幅值会有一定的偏差,比如正弦幅值是3,但F... 想询问一个matlab 频率谱分析的问题
就是我用matlab对一个直流信号加正弦信号的混合信号进行FFT
但是后面频率对应是正确的,幅值会有一定的偏差,比如正弦幅值是3,但FFT后是2.8,
这是因为什么呢?
展开
 我来答
愚笨的小宝
2019-05-15
知道答主
回答量:1
采纳率:0%
帮助的人:748
展开全部
已经有网友解答在用matlab过程中使用FFT()函数求解信号频谱过程中,相应的幅值要做修正的问题,即参加FFT运算的点数为N时,最后幅值要除以N乘以2(直流分量时除以N即可),那么关于最后计算的结果为何比我们预期的要小,这个问题有两个方面原因,第一个原因是离散信号的点数,一般我们要求是2的幂指数例如L个,若不满足要求我们会补充零值,可以从能量守恒的角度考虑补充了信息点数使得信号长度增加,但因为是零值所以能量不变,但FFT()作用后我们频点数往往也是这个L,而且我们补充的零值是要参与其中计算的,所以这种能量不变却是频点数增加的做法,最后的结果比理论值小,这个是主要原因。第二个因素不是回答这个问题的,但往往初次使用matlab的FFT()函数会人为的设置参加的运算点数,这个点数设置的过大比如刚好比信号离散点数大了一倍,那么最后的频谱幅值刚好为理论的一半,特别要注意这个问题。
showtime_97
2014-07-11 · TA获得超过4785个赞
知道大有可为答主
回答量:1005
采纳率:90%
帮助的人:839万
展开全部
fft后的频域幅值不是信号在时域的幅值,俩相等才是不正常的。
追问
我知道不是的 是跟采样点数有个比例关系 但是这个比例关系也有误差啊
追答
假设原始信号的峰值为A,采样点数N,那么fft后的每个点(除了第一个点直流分量之外)的模值(幅值)就是A的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍。幅值的偏差要么是你点数与峰值相除小数点后边的精度问题,要么就是你的采样频率不够大,即采样的点数不够多,造成的精度问题,这问题很常见,通常都是加大采样频率,采样的点数越多越精确,千万别相信采样定理,只将采样频率增大一倍,实际中这样根本没法满足需求的精度,搞个5、6倍还差不多,越多越好,不过计算的时间可就增大了,所以你可以试试,满足你精度要求的采样频率到底多少合适。
我用3sin(300*pi*t);采样t=0:0.001:1;%设定信号时间为0到1秒,频率为1000HZ来计算,发现仍有许多t点的值,在峰值仍然达不到幅值3,所以这么多幅值累计的误差很可观,通过N/2倍计算幅值也是2.8左右,都是离散取点不能完全描述连续信号的问题,所以误差是难免的,除了增大点数别无他法。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
数码答疑

2014-07-11 · 解答日常生活中的数码问题
数码答疑
采纳数:8805 获赞数:18623

向TA提问 私信TA
展开全部
fft采样太小,改大些,比如fft256
追问
不知道 为什么 改大了还是有误差
追答
数字采洋不可能没有误差,取决于采样频率,采样误差和计算误差
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-03-13
展开全部
第一个和你的nfft的选取有关,如果nfft>采样数据N的话,会需要补零点,导致整体的幅值下降了;第二个就是和你设定的采样频率有关,理论上采样频率设置地越大,fft之后的幅值越接近时域的真实幅值,以上都已试过,欢迎提问!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式