matlab - FFT后幅度错误[Matlab]
问题描述
我需要找到信号的频率和幅度。我的信号是这样的(Number of Samples= 9500
在500Hz
):
我为 FFT 尝试了以下代码(在此处找到):
Fs=500;
L=numel(pitch);
Y=fft(pitch);
f = Fs*(0:(L/2))/L;
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
figure
plot(f,P1)
但这并不准确。如果我从峰值计算振幅amplitude=9.3
,看起来是正确的。
为什么 FFT 给出的结果不准确,如何使用 FFT 或任何其他方法找到正确的结果(频率 + 幅度)?我有几个信号通常很嘈杂,因此无法找到峰值。
解决方案
推荐阅读
- html - 如何在 vba 上访问网络上的表格中的数据?
- batch-file - 我的变量不能正常工作......但理论上它们应该......(批处理文件)
- jsonpath - JsonPath:过滤后获取父元素
- google-chrome - 在未跨步骤共享的云构建步骤中安装 google-chrome(使用卷)
- c++ - gcc 对 abs 函数的奇怪行为
- typescript - PowerBi-Javascript 报告嵌入集群详细信息 403 错误
- android - 添加firebase-auth插件时cordova android构建失败
- getter-setter - Getter 和 Setter 的使用
- php - 对学说查询生成器的误解
- php - 在 Symfony 3.4 中使用这样的服务是否正确?