matlab:求傅里叶变换

关于自己学习傅里叶变换的一点总结,本人一开始编这块代码极其痛苦,故有此一篇;不详细讲原理,只说怎么编代码,以一个实际例子进行讲解。

1、例题:假设现有两个频率分别为20Hz、25Hz的cos函数叠加,要求选取合适的采样频率,进行离散采样,求其频谱图(即傅里叶变换)。

思路:1、首先根据奈奎斯特采样定理,采样频率应该大于信号最高频率的2倍,不然会出现频谱混叠,这里选择采样频率fs为100Hz;

2、然后考虑采样点数N的选取,由题目可知两个信号的频率相差为5Hz,要想频谱图上能够区分开两个信号的频点,则需要频谱图的频率分辨率Δf小于5Hz,而频率分辨率\Delta f=\frac{f_{s}}{N},故N需大于20;

为便于理解,此处我们分别选取N=10,20,40,进行仿真,代码如下

clc
clear
close all
% 定义参数
f1 = 20; % 第一个余弦函数频率为20 Hz
f2 = 25; % 第二个余弦函数频率为25 Hz
fs = 100; % 采样频率为100 Hz

% 生成时间向量
t = 0:1/fs:1-1/fs;

figure;
i = 0;
for N = [10,20,40]
    i = i + 1;
    n = 1:N;
    x = cos(2*pi*f1*t) + cos(2*pi*f2*t);

    % 进行离散傅里叶变换
    X = fft(x(1:N));

    % 计算频谱横坐标
    f = (0:N-1) * (fs/N);% (fs/N)为:频率分辨率
    
    subplot(3,1,i);
    stem(f, abs(X), 'filled');
    title(['N = ' num2str(N)]);
    xlabel('Frequency (Hz)');
    ylabel('Magnitude');
end
2、仿真结果

可见,当采样点数少于10(即频率分辨率大于5Hz)时,发生了频谱混叠的现象

3、个人觉得难理解的地方:

“横轴相邻两点的间隔”即为“频率分辨率”,且总点数即为采样点数N

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值