在设计中,当采样率为192KHZ时。需要对被采样信号频率分辨率达到1HZ,按照FFT运算后,采样点数需要达到192K个才能有1HZ的精度,但FFT运算的数据量最好的是2的次方。例外,FFT计算时会有数据上限要求、以及数据量过大会增加计算时间,不利于系统设计。那么如果采取补零、以及过采样的方法是否可以提高系统分辨率呢?下面采用MATLAB进行补零效果的验证,后期再进行FPGA实际采样。
fs=48000; %采样率
n1=0:1:47999; %1秒钟采集48000个点
y1=sin(2*pi*5760*n1/fs); %生成5760HZ信号
s1=sin(2*pi*5759*n1/fs); %生成5759HZ信号
figure(1);
subplot(4,1,1);
plot(n1,y1);
title('原始时域信号');
subplot(4,1,2);
plot(abs(fft(y1)));
title('原始频域信号');
n2=0:1:1499; %只取1500个有效数据
y2=sin(2*pi*5760*n2/fs);
s2=sin(2*pi*5759*n2/fs);
subplot(4,1,3);
plot(n2,y2);
title('截取时域信号');
subplot(4,1,4);
plot(abs(fft(y2)));
title('截取频域信号');
n3=0:1:46499; %补46500个零
y3=n3-n3;
figure(2);
subplot(4,1,1);
plot(n3,y3);
title('补零时域信号');
y4=[y2,y3];
s4=[s2,y3];
subplot(4,1,2);
plot(n1,y4);
title('截取后补零时域信号');
subplot(4,1,3);
plot(abs(fft(y4)));
title('截取后补零频域信号');
subplot(4,1,4);
plot(abs(fft(s4)));