采样频率和采样点数对信噪比的影响

针对单频正弦波在以下两种情况下做FFT:
1、采样频率不变,采样点数改变
2、采样时间不变,采样频率改变
是否都满足“采样点数每增大N倍,信号功率增大N^2倍,噪声功率增大N倍,信噪比增大3dB”这条定理?
对于情况2,在过采样条件下,继续增大采样频率,信噪比是否应该在某个范围内波动?以下是我对情况2的MATLAB仿真,请大家指点!

%% 根据不同的采样点数和采样率计算 FFT
function [f,amplitude] = func_fft_f(sampleRate,FFT_points)
    n = 0:FFT_points-1;
    
    t = 0:1/sampleRate:1-1/sampleRate;  % 采样时间序列(采样时间不变)
        
    f_All = n;        % 频率序列

    f0 = 2e3;
    % 构造混有噪声的周期信号并采样
    signal = sin(2*pi*f0*t) + 0.1 * randn(size(t));

    % 对信号进行快速Fourier变换,并求真实振幅
    amplitude_All = abs(fft(signal,FFT_points))*2/FFT_points;

    f = f_All(1:ceil(FFT_points/2));
    amplitude = amplitude_All(1:ceil(FFT_points/2));

end

%% 过采样:采样时间不变1s,改变采样频率
sampleRate_t = 0.125e3 : 1e3 : 2048e3 ;
npower_t = 0;

for i = 1:length(sampleRate_t)
    FFT_points_t = sampleRate_t(i);
    [f,amplitude] = func_fft_f(sampleRate_t(i),FFT_points_t);
    y = max(amplitude);
    sigpower = y^2;
    for j = length(amplitude)-10:length(amplitude)
        npower_t = npower_t + amplitude(j)^2;
    end
    npower_t = npower_t/10;
    snr_t_n(i) = sigpower/npower_t;
    snr_t(i) = 10*log10(sigpower/npower_t);
end

% snr_t         % 在终端显示信噪比
figure(5);
plot(sampleRate_t(1:length(sampleRate_t)),snr_t,'-o');              % 这里因为采样时间为1s,所以数值上采样点数和采样率相等
ylabel('信噪比/dB');xlabel('采样频率/Hz');title('过采样时信噪比(dB)与采样频率之间的关系');
figure(6);
plot(sampleRate_t(1:length(sampleRate_t)),snr_t_n,'-o');          
ylabel('信噪比');xlabel('采样频率/Hz');title('过采样时信噪比值与采样频率之间的关系');

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^