针对单频正弦波在以下两种情况下做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('过采样时信噪比值与采样频率之间的关系');
不知道你这个问题是否已经解决, 如果还没有解决的话:求A的特征值及特征向量。
A=[-29,6,18;20,5,12;-8,8,5];
[V,D]=eig(A)