matlab - MATLAB FFT 绘图
问题描述
如何绘制 FFT 图的 x 轴?我的幅度下降了,但是 x 轴让我很难过。另外,我的幅度也反映了。我将如何防止这种情况发生?
解决方案
N
具有采样频率的离散时间信号的点 DFTfs
给出频率0
, 1/fs
, ..., (N-1)/fs
。要将零频率放在图的中心,您可以将fftshift
其应用于 DFT 结果,然后将频率定义( -N/2:N/2-1 )/N*fs
为N
偶数或奇数(这利用了 DFT 的周期性)( -(N-1)/2:(N-1)/2 )/N*fs
。N
例子
由两个不同频率和幅度的正弦波形成的信号。
N = 400;
fs = 1000; % Hz
fc1 = 120; % Hz
fc2 = 260; % Hz
y = sin(2*pi*fc1*(0:N-1)/fs) + .5*sin(2*pi*fc2*(0:N-1)/fs); % example signal
Y = fft(y);
if ~mod(N,2) % even
f_axis = ( -N/2:N/2-1 )/N*fs;
else % odd
f_axis = ( -(N-1)/2:(N-1)/2 )/N*fs;
end
plot(f_axis, fftshift(abs(Y)));
grid
推荐阅读
- java - 在 TimeoutMainSubscriber 的情况下将 Reactor Context 复制到 MDC
- sql - FTS 无法按预期处理带有点的电子邮件
- c# - CORS 错误仅适用于一个控制器
- sql - 如何删除 Ignite 的 SQL 表中的批量行
- c# - 如何处理 Npgsql 中的 text[] 数组字段类型?
- appium - 如何在 appium for chrome android 中实现点击操作
- typo3 - Typoscript 9.5 渲染文件对象,如 Contentelement
- c++ - 由于方法重载,C++ 移动语义和代码重复
- javascript - 为什么这个异步函数没有等待
- javascript - 将对象数组分解为用于数据库存储的单独变量(React、express、sql server)