MATLAB fft及ifft的使用

本文介绍了如何在MATLAB中使用FFT和IFFT对离散信号进行分析,包括它们在信号处理中的作用,以及混叠现象的解释和抗混叠滤波器的应用。作者通过示例展示了从信号生成、傅里叶变换到反变换的过程并绘制了相关图形。
摘要由CSDN通过智能技术生成

看到古月居大佬写的一篇博客,受此激发,用MATLAB写下我对fft和ifft用法的理解。

计算机只能处理有限长度的离散数据序列,所以只有DFS可以通过计算机进行计算
FFT只是加速 DFT 运算的一种快速算法, 在信号理论上没有新的贡献 。其计算的结果和本质内容仍然是离散傅里叶变换 (DFT)。

% 熟悉FFT和IFFT的使用
% 参考 https://www.guyuehome.com/35495
clc; clear; close all
N = 1000;                   % 信号总采样点数
fs = 100;                   % 采样率
t = (0: 1: N-1) / fs;       % 时间点
f1 = 10; f2 = 60;           % 信号频率          
y = 3 + 2*cos(2*pi*f1*t) + 0.5*cos(2*pi*f2*t);
% f2=60Hz频率在频谱图上显示在40Hz处,因为其超过了奈奎斯特采样频率,采样时出现混叠
% 参考CSDN 混叠(aliasing)和抗混叠滤波器
%% 傅里叶变换
Y = fft(y, N);
Y2 = abs(Y(1: N/2+1)) * 2/N;  % 取半谱
Y2(1) = Y2(1) / 2;
Y2(end) = Y2(end) / 2;        % 第1个和第N/2+1个点没有对称,故不用除以2
f_l = (0: 1: N/2) * fs/N;     % 频率点
%% 傅里叶反变换
yi = ifft(Y, N);              % ifft输入为复数,输出为实数

%% 绘图
figure(1)
subplot(211)
plot(t, y, 'b');               % 绘制原始波形图
xlabel('时间/s'); ylabel('幅度');
subplot(212)                    
plot(t, yi, 'b');              % 绘制傅里叶反变换得到的波形图
xlabel('时间/s'); ylabel('幅度');

figure(2)
plot(f_l, Y2, 'r'); grid on
xlabel('频率/Hz'); ylabel('幅度');

参考:

matlab:快速傅里叶(反)变换 FFT&IFFT - 古月居

混叠(aliasing)和抗混叠滤波器_CircuitInBrain的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值