该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想分开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');