matlab知识14:fft,nextpow2,nfft,df=fs/nfft

1、nfft是什么意思?

答:

nfft是进行FFT时所使用的变换长度,可以理解为打算用多少个点的快速傅里叶变换。

nfft的作用是提高计算计算的效率,FFT算法对2的幂次长度运算速度最快。

nfft可以提高频率的分辨率,点数越多,频率轴上的间隔越小,分辨率越高。

不会改变原始信号本身:只是用来用来决定做频域分析时使用的点数,通常通过在末尾补零来实现。

2、nextpow2()是个啥?

 

3、fft()这是个啥?

下表面来讲解一下:y = fft(x, nfft);

对信号 x 做快速傅里叶变换(FFT),变换长度为 nfft,得到频域信号 y

x:输入信号 。要分析的 原始时域信号(一组数据,是一维向量)

nfft:表示你打算用多少个点来做傅里叶变换。

  • 如果 nfft > length(x),MATLAB 会自动在 x 后面补零;

  • 如果 nfft < length(x),MATLAB 会截断 x

  • 如果不写 nfft,默认是 nfft = length(x)

    nfft = 8;  % 表示我希望用 8 点来做 FFT
    
    x = [1, 2, 3, 4];      % 原始信号,长度为4
    nfft = 8;              % 我想用 8 点来做 FFT
    y = fft(x, nfft);      % 执行变换,x 会自动在后面补 4 个 0
    

  • 画做完FFT之后得到的频谱的方法:
fs = 1000;                        % 采样频率
f = (0:nfft-1)*(fs/nfft);         % 频率轴
plot(f, abs(y));                  % 幅值谱

4、为什么 df = fs / nfft; 得到是频率分辨率?

答:这段代码的意思是计算 频率分辨率,也叫频率间隔,单位是 Hz。

频率分辨率 df就是:在 FFT 结果里,相邻两个频率点之间相隔多少 Hz。

采样频率 fs是啥:

  • 表示每秒采集了多少个点。

  • 所以最高能分析的频率是 fs / 2(奈奎斯特定理:被采集信号的频率f是抽样信号频率的1/2)。

举个例子理解一下df:

例子1: 

例子1:
fs = 1000;     % 采样频率是1000Hz
nfft = 1000;   % 用1000点做FFT
那么 
df = fs / nfft = 1000 / 1000 = 1 Hz

说明:
在频域图里,你每一个点就是一个 1 Hz 的频率精度:

0 Hz, 1 Hz, 2 Hz, ..., 999 Hz

例子2:

例子2:
fs = 1000;
nfft = 2048;
df = 1000 / 2048 ≈ 0.488 Hz
说明频谱图分得更细,你能“看到”更细小的频率变化。

 总结:df = fs / nfft 是因为你总共用 nfft 个点去把 0 到 fs Hz 的频率范围切分,结果每一小段的宽度就是 df,这就是频率分辨率

5、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值