简单分析FFT坐标轴的生成方式和幅值大小

  • 先看代码和图
    在这里插入图片描述
clc,clear,close all
Fs = 256; % 采样率 256Hz
N = 256; % 采样点数 256点
% 频率分辨率 delta_f = Fs/N = 1Hz
T = 1; % % 采样时间 T = N / Fs = 1s
t = linspace(0,T,N); 
% 第二种坐标生成方式,注意时间从0开始,所以最后一项要减去一个刻度
t1 = 0:1/Fs:(N-1)/Fs; 
f1 = linspace(0,Fs,N); % 频率有误差
f = (0:N-1)*Fs/N; % 生成频率值更准确
f_fftshift = linspace(-Fs/2,Fs/2,N);
s = 2+3*sin(2*30*pi*t)+sin(2*100*pi*t);   
plot(s)
grid 
title('原始信号')
figure
y = fft(s,N); 
subplot(411);
A = abs(y); % 幅度的模值
plot(f,A);
subplot(412);
A = abs(y); % 幅度的模值
plot(f(1:N/2),A(1:N/2));
subplot(413)
A1 = fftshift(A);
plot(f_fftshift,A1)
subplot(414)
A2 = A/(N/2);
plot(f(1:N/2),A2(1:N/2))
  • 要点一,采样率和点数的选择
    采样时间 T = N / Fs (点数 / 采样率 = (每秒采集点数)) ,采样率一定,增加采样点数可以增加采样时间
    频谱分辨率 Fn = Fs / N (采样率 / 点数),增加采样点数可以提高频率分辨率
    采样时间和频率分辨率成倒数关系,即增加采样时间可以提高频率分辨率
  • 要点二:坐标轴的生成
    • 坐标t的生成两种方式没有差异,直接使用刻度生成,注意时间从0开始,所以最后一项要减去一个刻度保持点数相同
    • 坐标f的生成两种方式有差异,尽量使用更精确的用数组生成,但我更喜欢linspace方式,因为可以一眼知道点数是多少,不怕出错
      在这里插入图片描述
  • 要点三,改进幅值,除以 N/2
  • 以下为改进的代码和图
    在这里插入图片描述
clc,clear,close all
Fs = 256; % 采样率 256Hz
N = 256; % 采样点数 256点
% 频率分辨率 delta_f = Fs/N = 1Hz
T = 1; % % 采样时间 T = N/Fs = 1s
t = linspace(0,T,N); 
f = (0:N-1)*Fs/N; 
f_fftshift = linspace(-Fs/2,Fs/2,N);
s = 2+3*sin(2*30*pi*t)+sin(2*100*pi*t);     
plot(t,s)
grid 
title('原始信号')
figure
y = fft(s,N); 
subplot(211);
A = abs(y)/(N/2); % 幅度的模值
plot(f(1:N/2),A(1:N/2));
grid on
subplot(212)
A1 = fftshift(A);
plot(f_fftshift,A1)
  • 还可以改变参数,继续观察频谱混叠的情况,(如果写了)下期见。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值