为了能够适应不同条件,本文生成的是频率范围在 0~4k 之
间变化,动态范围在 30~35dB 之间的随机信号。
fana=10^4;%analog freq 模拟频率
T=1/fana;%analog interval 模拟时间间隔
SignalLength=64;%信号长度
tana=(0:SignalLength-1)*T;
RealDynamicRange=0;
while(RealDynamicRange<=30||RealDynamicRange>=35)
while(RealDynamicRange<=30||RealDynamicRange>=35)
signal=randi([-300,300],1,SignalLength)/10;%raise
accuracy
idx=find(signal==0); % find all 0
signal(idx)=1; % set 0.1 to these indexes
RealDynamicRange=20*log10(max(abs(signal))/
min(abs(signal)));
end
%check freq range-------------------
NFFT=2^nextpow2(SignalLength);
ini_fft=fft(signal,NFFT)/NFFT*2;%show reality amplitude
f=fana/NFFT*(0:1:NFFT-1);
abs_ini_fft=abs(ini_fft);
%limit band below 4k
k_stop_freq=floor(4000*NFFT*T);
ini_fft(:,k_stop_freq:NFFT-k_stop_freq)=0;%lpf
inisignal=real(ifft(ini_fft)*NFFT/2);%get the input signal
RealDynamicRange=20*log10(max(abs(inisignal))/
min(abs(inisignal)));
end
%check freq range again
inisignal_fft=fft(inisignal,NFFT)/NFFT*2;%show reality
amplitude
abs_inisignal_fft=abs(inisignal_fft);
原始产生的随机信号,按照题目要求处理过之后的信号以及频谱如
下图所示: