Detection_Analysize_R_pd.m
上传用户:shencti
上传日期:2016-08-16
资源大小:16k
文件大小:5k
- %%检测程序
- function [snr,acq_flag,Correl_Peak_location]=Detection_Analysize_R_pd(Bandwidth,fd,f0,SNR,sigma_n,code_cycle,times_estimate,inputcode,T_interp,T,fd_estimate,Ts,fi,N,A1,B,M,fs,IntervalOfFreq,Code_native_fft_conj,dot_insert,delay_time,coef,coef_mod,EmulateIndex);
- acq_flag=0;
- for timeofestimate=1:times_estimate %搜索37个频点开始
- fd_estimate=fd_estimate+(-1)^timeofestimate*(timeofestimate-1)*IntervalOfFreq; %估计多普勒频率
- fd_estimate = 1000;
- %%%%唐检测参数复位
- tong_k=B;
- tong_k_last=0;
- timeOfdetection=1;
-
- while(tong_k~=0&&tong_k~=A1)
- for timesOfaccumu=1:M %加入M次非相干积累
- EmulateIndex=EmulateIndex+1;
- %%%%产生中频信号
- [signal,signal_noise]=SignalGenerator(EmulateIndex,inputcode,fs,Ts,fi,delay_time,fd,SNR,Bandwidth,code_cycle,sigma_n,f0,N);
- % figure(1)
- % plot(abs(fft(signal)));
- IF_signal(1:N)=signal(1:N);
- IF_signal_noise(1:N)=signal_noise(1:N);
- % figure(21);
- % plot(IF_signal);
- % figure(22);
- % plot(IF_signal_noise);
- %%%%进行下变频
- [NCO_I_Quanti,NCO_Q_Quanti]=Nco_gen(Ts,fi,fd_estimate,N); %NCO产生
- Rece_Signal_Quan_down_I = IF_signal(1:N).* NCO_I_Quanti;
- Rece_Signal_Quan_down_Q = IF_signal(1:N).* NCO_Q_Quanti;
- Rece_Signal_Quan_down_I_noise=IF_signal_noise.*NCO_I_Quanti;
- Rece_Signal_Quan_down_Q_noise=IF_signal_noise.*NCO_Q_Quanti;
-
-
- %%%%经过低通滤波器,截止频率为1.023MHz
- [signal_I,signal_Q,signal_I_noise,signal_Q_noise]=LP_filter(N,M,code_cycle,fs,Rece_Signal_Quan_down_I,Rece_Signal_Quan_down_Q,Rece_Signal_Quan_down_I_noise,Rece_Signal_Quan_down_Q_noise,EmulateIndex); %进过低通滤波器
- % figure(2)
- % plot(abs(fft(signal_I)));
- % %%%%采用线性内插
- for index_new=1:dot_insert
- index_previous=floor((index_new-1)*T_interp/Ts)+1; %产生内插抽取所需的原序列索引值
- Rece_Signal_down_I_1(index_new)=signal_I(index_previous)+round(((signal_I(index_previous+1)-signal_I(index_previous)))*mod(((index_new-1)*coef),coef_mod)/coef_mod);
- Rece_Signal_down_Q_1(index_new)=signal_Q(index_previous)+round(((signal_Q(index_previous+1)-signal_Q(index_previous)))*mod(((index_new-1)*coef),coef_mod)/coef_mod);
- Signal_Input(index_new)=Rece_Signal_down_I_1(index_new)-sqrt(-1)*Rece_Signal_down_Q_1(index_new);
- end%%内插完成
- signal_fft=fft(Signal_Input,dot_insert);
- %%%%与本地伪码进行相关
- Z_spectrom=signal_fft.*Code_native_fft_conj;
- Z_last=ifft(Z_spectrom);
- Z_last_abs=abs(Z_last);
- Z_last_square=Z_last_abs.^2;
- Z_last_square_M(((timesOfaccumu-1)*dot_insert+1):(timesOfaccumu*dot_insert)) = Z_last_square;
- end %非相干积累完毕
- Z= reshape(Z_last_square_M(1:M*dot_insert),dot_insert,M); % 生成(4096*M)阶的矩阵
- Z_r = Z'; % 将(4096*5)阶的矩阵转置为(M*4096)阶的矩阵
- Result_Sum(timeOfdetection,:) = sum(Z_r,1); % 进行M次非相参积累
- Correl_Peak = max(Result_Sum(timeOfdetection,:)); %检测峰值
- Correl_Peak_location(timeofestimate,timeOfdetection) = find(Result_Sum(timeOfdetection,:) == Correl_Peak,1,'first'); % 结果为(Detection_Times*1)维矩阵,查找第一个最大值
- snr(timeofestimate,timeOfdetection) =Correl_Peak/mean(Result_Sum(timeOfdetection,:)); %计算峰均比,作为门限判决
- %%%门限判决
- switch tong_k
- case 1
- if(tong_k_last~=2)
- if (snr(timeofestimate,timeOfdetection)>4.5)
- tong_k=tong_k+1;
- else
- tong_k=tong_k-1;
- end
- elseif (snr(timeofestimate,timeOfdetection) >4.5&&abs(Correl_Peak_location(timeofestimate,timeOfdetection)-Correl_Peak_location(timeofestimate,1))<=4) % 门限范围4.5dB~6.5dB,每0.1dB步进
- tong_k_last=tong_k;
- tong_k=tong_k+1;
- else
- tong_k_last=tong_k;
- tong_k=tong_k-1;
- end
- otherwise
- tong_k_last=tong_k;
- if (snr(timeofestimate,timeOfdetection) >4.5&&abs(Correl_Peak_location(timeofestimate,timeOfdetection)-Correl_Peak_location(timeofestimate,1))<=4) % 门限范围4.5dB~6.5dB,每0.1dB步进
- tong_k=tong_k+1;
- else
- tong_k=tong_k-1;
- end
- end
- if(tong_k==5)
- disp('信号存在')
- acq_flag=1;
- break;
- else if(tong_k==0)
- disp('信号不存在')
- end;
- end;
- timeOfdetection=timeOfdetection+1;
- end
- % if acq_flag==1
- % break;
- % end;
- end %搜索37个频点完毕