www.gusucode.com > GPS仿真Matlab编程源码程序 > GPS仿真Matlab编程源码程序/test_gpsArray_final_stap_hpp.m
% *** lanruru 2009.9.23 clc; clear all; close all; fs=6e6; N=fs*0.01; tic for i=1:6 % fid=fopen('D:\1112界面7\sv1.dat'); statusy2=fseek(fid,2*N*(i-1),-1); % cof or "0" %%% 0 改为 -1 %%%%%% dat1y2=fread(fid,N,'uint16=>single'); % inf: end of the file ; 卫星2 fclose(fid) fid=fopen('D:\1112界面7\sv1.dat'); statusy1=fseek(fid,2*N*(i-1)+2,-1); %%% 0 改为 -1 %%%%%% dat1y1=fread(fid,N,'uint16=>single'); fclose(fid) fid=fopen('D:\1112界面7\sv1.dat'); status=fseek(fid,2*N*(i-1)+4,-1);%%% 0 改为 -1 %%%%%% dat1=fread(fid,N,'uint16=>single'); fclose(fid) guiyiDat1=(dat1-mean(dat1))/sqrt(var(dat1)); guiyiDat1y1= (dat1y1-mean(dat1y1))/sqrt(var(dat1y1)); guiyiDat1y2= (dat1y2-mean(dat1y2))/sqrt(var(dat1y2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fid=fopen('D:\1112界面7\sv6.dat'); statusy2=fseek(fid,2*N*(i-1),-1) ; % cof or "0"%%% 0 改为 -1 %%%%%% dat6y2=fread(fid,N,'uint16=>single'); % inf: end of the file ; 卫星3 fclose(fid) fid=fopen('D:\1112界面7\sv6.dat'); statusy1=fseek(fid,2*N*(i-1)+2,-1);%%% 0 改为 -1 %%%%%% dat6y1=fread(fid,N,'uint16=>single'); fclose(fid) fid=fopen('D:\1112界面7\sv6.dat'); status=fseek(fid,2*N*(i-1)+4,-1);%%% 0 改为 -1 %%%%%% dat6=fread(fid,N,'uint16=>single'); fclose(fid) guiyiDat6=(dat6-mean(dat6))/sqrt(var(dat6)); guiyiDat6y1= (dat6y1-mean(dat6y1))/sqrt(var(dat6y1)); guiyiDat6y2= (dat6y2-mean(dat6y2))/sqrt(var(dat6y2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fid=fopen('D:\1112界面7\sv14.dat'); statusy2=fseek(fid,2*N*(i-1),-1) ; % cof or "0"%%% 0 改为 -1 %%%%%% dat14y2=fread(fid,N,'uint16=>single'); % inf: end of the file ; 卫星3 fclose(fid) fid=fopen('D:\1112界面7\sv14.dat'); statusy1=fseek(fid,2*N*(i-1)+2,-1);%%% 0 改为 -1 %%%%%% dat14y1=fread(fid,N,'uint16=>single'); fclose(fid) fid=fopen('D:\1112界面7\sv14.dat'); status=fseek(fid,2*N*(i-1)+4,-1);%%% 0 改为 -1 %%%%%% dat14=fread(fid,N,'uint16=>single'); fclose(fid) guiyiDat14=(dat14-mean(dat14))/sqrt(var(dat14)); guiyiDat14y1= (dat14y1-mean(dat14y1))/sqrt(var(dat14y1)); guiyiDat14y2= (dat14y2-mean(dat14y2))/sqrt(var(dat14y2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fid=fopen('D:\1112界面7\sv22.dat'); statusy2=fseek(fid,2*N*(i-1),-1) % cof or "0" dat20y2=fread(fid,N,'uint16=>single'); % inf: end of the file ; 卫星4 fclose(fid) fid=fopen('D:\1112界面7\sv22.dat'); statusy1=fseek(fid,2*N*(i-1)+2,-1); dat20y1=fread(fid,N,'uint16=>single'); fclose(fid) fid=fopen('D:\1112界面7\sv22.dat'); status=fseek(fid,2*N*(i-1)+4,-1); dat20=fread(fid,N,'uint16=>single'); fclose(fid) guiyiDat20=(dat20-mean(dat20))/sqrt(var(dat20)); guiyiDat20y1= (dat20y1-mean(dat20y1))/sqrt(var(dat20y1)); guiyiDat20y2= (dat20y2-mean(dat20y2))/sqrt(var(dat20y2)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fid=fopen('D:\1112界面7\sv25.dat'); statusy2=fseek(fid,2*N*(i-1),-1); % cof or "0" dat25y2=fread(fid,N,'uint16=>single'); % 卫星8 fclose(fid) fid=fopen('D:\1112界面7\sv25.dat'); statusy1=fseek(fid,2*N*(i-1)+2,-1);%延迟信号 dat25y1=fread(fid,N,'uint16=>single'); fclose(fid) fid=fopen('D:\1112界面7\sv25.dat'); status=fseek(fid,2*N*(i-1)+4,-1);%延迟信号 dat25=fread(fid,N,'uint16=>single'); fclose(fid) guiyiDat25=(dat25-mean(dat25))/sqrt(var(dat25)); guiyiDat25y1= (dat25y1-mean(dat25y1))/sqrt(var(dat25y1)); guiyiDat25y2= (dat25y2-mean(dat25y2))/sqrt(var(dat25y2)); fc3=4.309e6; dt=1/fs; t=(0:N-1)*dt; s_jam3y2=exp(1i*2*pi*fc3*t)';% sin(2*pi*fc3*t)'; guiyiJam3y2=(s_jam3y2-mean(s_jam3y2))/sqrt(var(s_jam3y2)); %%%j1的延迟 t=(1:N)*dt; s_jam3y1=exp(1i*2*pi*fc3*t)'; guiyiJam3y1=(s_jam3y1-mean(s_jam3y1))/sqrt(var(s_jam3y1)); %%%j1的延迟 t=(2:N+1)*dt; s_jam3=exp(1i*2*pi*fc3*t)'; guiyiJam3=(s_jam3-mean(s_jam3))/sqrt(var(s_jam3)); %色散多径 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MM=4; %天线数 TT=3; %抽头数 fs=6e6; %采样率 Ndian=fs*0.01; %采样点数 20ms长度 f0=4.309e6; %中频 fdelt=2e6; %频偏 带宽 thetaj=-50/180*pi; %直射干扰角度 -10度 thetajmp=-30/180*pi; %干扰多径角度 -50度 色散多径方向变化否????? d=0.5; %阵元间距 lambda=0.1904; %波长 L1波段 tao=1/fs;%200e-9; %时延 omiga=2*pi*f0; %中心角频率 deltomega=2*pi*fdelt; %角频率偏移 % taoi= lambda/2*sin(thetaj)/3e8; %天线间延迟时间 delaymp=150e-9; %多径时延 alpha=0.68; %多径衰减系数 p=1e-4; D =[0:1:MM-1]; aj=exp(-1i*pi*D*sin(thetaj)).'; ajmp=exp(-1i*pi*D*sin(thetajmp)).'; %%%%%%%%%% 色散多径产生 %%%%%%%%% taoT=[0 tao 2*tao; -tao 0 tao; -2*tao -tao 0]; rT=sinc(deltomega.*taoT./2).*exp(1i.*omiga.*taoT); taot=[delaymp delaymp+tao delaymp+2*tao; delaymp-tao delaymp delaymp+tao; delaymp-2*tao delaymp-tao delaymp]; rmp=sinc(deltomega.*taot./2).*exp(1i.*omiga.*taot); taot2=[delaymp delaymp-tao delaymp-2*tao; delaymp+tao delaymp delaymp-tao; delaymp+2*tao delaymp+tao delaymp]; rmp2=sinc(deltomega.*taot2./2).*exp(1i.*omiga.*taot2); for i=1:TT for j=1:TT rtao(:,:,i,j)=p*[aj ajmp]*[rT(i,j) alpha*conj(rmp2(i,j));conj(alpha)*rmp(i,j) abs(alpha^2)*rT(i,j)]*[aj ajmp]';%归一化后再乘p end end R_TT=[rtao(:,:,1,1) rtao(:,:,1,2) rtao(:,:,1,3); rtao(:,:,2,1) rtao(:,:,2,2) rtao(:,:,2,3); rtao(:,:,3,1) rtao(:,:,3,2) rtao(:,:,3,3)]; R0=rtao(:,:,1,1); RL=[rtao(:,:,1,1) rtao(:,:,1,2); rtao(:,:,2,1) rtao(:,:,2,2)]; Rvec=[rtao(:,:,1,2) rtao(:,:,1,3)]; % Bvec=p*Rvec/RL; RLinv=inv(RL); Bvec=p*Rvec*RLinv; Wvec=[eye(MM) -Bvec(:,1:MM) -Bvec(:,MM+1:2*MM)]; C=Wvec*R_TT*Wvec'; A0=cholsky(C,MM); disjammer=zeros(MM,Ndian); randn('state',0); disnoise=randn(MM,Ndian+TT-1); uu=disnoise(:,1:TT-1); uu=reshape(uu,MM*(TT-1),1); %初始化 ssss=cholsky(RL,MM*(TT-1)); disjammer0=ssss*uu; % read_fid_real = fopen( 'e:\disjammer0.dat', 'w'); % [cou] = fwrite(read_fid_real, real(disjammer0.'), 'double'); % [cou] = fwrite(read_fid_real, imag(disjammer0.'), 'double'); % fclose(read_fid_real); for kk=1:TT-1 disjammer(:,kk)=disjammer0((kk-1)*MM+1:(kk-1)*MM+MM); end %迭代产生 for i=TT:Ndian+TT-1 disjammer(:,i)=Bvec*[disjammer(:,i-1);disjammer(:,i-2)]+A0*disnoise(:,i); end sjammer=[disjammer(:,3:Ndian+2);disjammer(:,2:Ndian+1);disjammer(:,1:Ndian)]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%色散多径产生 完 % 构成阵列数据 % snr=-20; % dB % jnr1=20; % As=10^(snr/20); % 以噪声为参考,设为1 % Aj1=10^(jnr1/20); snr=-20; jnr1=20; jnrm=10; An=sqrt(p/10^(jnrm/10)); As=An*sqrt(10^(snr/10)); Aj1=An*sqrt(10^(jnr1/10)); ss1=[As*guiyiDat1';As*guiyiDat1y1';As*guiyiDat1y2']; ss14=[As*guiyiDat14';As*guiyiDat14y1';As*guiyiDat14y2']; ss20=[As*guiyiDat20';As*guiyiDat20y1';As*guiyiDat20y2']; ss25=[As*guiyiDat25';As*guiyiDat25y1';As*guiyiDat25y2']; ss6=[As*guiyiDat6';As*guiyiDat6y1';As*guiyiDat6y2']; ssj3=[Aj1*guiyiJam3';Aj1*guiyiJam3y1';Aj1*guiyiJam3y2']; a2=-5; a3=22; a4=33; a8=10; a66=-20; adj3=-70; b=exp(-1i*pi*[0:MM-1]'*sin(a2*pi/180)); c=exp(-1i*pi*[0:MM-1]'*sin(a3*pi/180)); d=exp(-1i*pi*[0:MM-1]'*sin(a4*pi/180)); h=exp(-1i*pi*[0:MM-1]'*sin(a8*pi/180)); h6=exp(-1i*pi*[0:MM-1]'*sin(a66*pi/180)); doa_J3=exp(-1i*pi*[0:MM-1]'*sin(adj3*pi/180)); % 干扰3 Ab=kron(eye(3),b); Ac=kron(eye(3),c); Ad=kron(eye(3),d); Ah=kron(eye(3),h); Ah6=kron(eye(3),h6); Aj3=kron(eye(3),doa_J3); randn('state',100);%111 s1 101 s2 Noise=An/sqrt(2)*randn(MM*TT,N)+1i*An/sqrt(2)*randn(MM*TT,N); x=Ab*ss1+Ac*ss14+Ad*ss20+Ah*ss25+Ah6*ss6+Noise+sjammer+Aj3*ssj3; fid=fopen('E:\realD4_snr20_s7.dat','a'); count=fwrite(fid,real(x.'),'single'); fclose(fid) fid=fopen('E:\imagD4_snr20_s7.dat','a'); count=fwrite(fid,imag(x.'),'single'); fclose(fid) num end toc