matlab fft 功率谱,matlab实现功率谱估计,关于FFT点数选取到底什么标准?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我想分开1500 和1500.015hz两个谱线,fs=1e4;现在根据数字信号处理(胡广书)P133页讲的 ,物理分辨率F=fs/N(F=0.015),而信号长度T=1/fs*N 所以信号至少1/F 就是66.67s吧?那么根据计算分辨率(个人理解为频率轴,最小单位刻度)F2=fs/nfft,则nfft取6.667e5 ,那么问题来了

我按照这两个参数取,分不开啊,如果单纯提高信号长度,也是分不开的,但是提高NFFT点数,就可以分开了,如nfft=7e6; 不是说物理分辨率才是决定能不能分开频谱的因素吗,当然信号长度太小也不行,但现在感觉,信号长度高了,nfft点数不满足也不能分开啊,那到底在信号长度满足什么条件下,nfft用什么公式计算的点数,可以分开呢?这个标准到底在哪?nfft增加不只是减少栅栏效应吗?

附程序

%采样频率10e3,,1500 1500.1 1500.015

clear all;close all; clc;

fs=10e3;%%采样频率10KHz

F=0.015;%1500.015分辨出来

% N=2e6;%F=fs/N 决定信号长度,而非真正样本

T=70;%信号长度 决定能分辨最小的能力 66.67就够了

f1=1500;

f2=1500.1;

f3=1500.015;

n=0:1/fs:(T-1/fs);

SNR=10;%设信噪比

%%%产生信号%%%%

fl=1000;%设置截止频率

fh=2000;

Wn=[fl fh]/(fs/2);

[b,a]=butter(10,Wn,'bandpass');%%生成10阶巴特沃夫滤波器滤波器

xn=sin(2*pi*f1*n)+sin(2*pi*f2*n)+sin(2*pi*f3*n);

xn_add_n=awgn(xn,SNR,'measured');

output_xn=filter(b,a,xn_add_n);

NFFT=7e5%%决定每两个谱线间的距离 NFFT=FS/△fmin

% 6.67e5;%%决定样本值,并作fft

window=boxcar(length(output_xn));

[Pxx,f]=periodogram(output_xn,window,NFFT,fs);

P=10*log(Pxx);

% subplot(3,1,1);

plot(f,P);

xlim([1499.9 1500.9]);

title('信号50s')

xlabel('f/Hz');

ylabel('Amplitude/dB');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值