www.gusucode.com > GPS仿真Matlab编程源码程序 > GPS仿真Matlab编程源码程序/caponttlv.m
clc clear close all a2=-5; %%45 a3=5; %%25 a4=15; %%15 a8=25; %%55 a9=35; NN=4; TT=3; b=exp(-1i*pi*[0:NN-1]'*sin(a2*pi/180)); % 2 c=exp(-1i*pi*[0:NN-1]'*sin(a3*pi/180)); % 3 d=exp(-1i*pi*[0:NN-1]'*sin(a4*pi/180)); % 4 h=exp(-1i*pi*[0:NN-1]'*sin(a8*pi/180)); % 8 g=exp(-1i*pi*[0:NN-1]'*sin(a9*pi/180)); Ab=kron(eye(TT),b); Ac=kron(eye(TT),c); Ad=kron(eye(TT),d); Ah=kron(eye(TT),h); Ag=kron(eye(TT),g); fs=6e6; dtt=977e-9; dt=1/fs; input_file_name_real = 'e:\realsin.dat'; %色散多径 input_file_name_img = 'c:\imagsin.dat'; output_file_name_real1 = 'E:\data_real_mmse1_s1.dat';%有色散干扰的第一组数据 output_file_name_real2 = 'E:\data_real_mmse2_s1.dat'; output_file_name_real3 = 'E:\data_real_mmse3_s1.dat'; output_file_name_real4 = 'E:\data_real_mmse4_s1.dat'; output_file_name_real5 = 'E:\data_real_mmse5_s1.dat'; output_file_name_real6 = 'E:\data_real_mmse6_s1.dat'; output_file_name_real7 = 'E:\data_real_mmse7_s1.dat'; output_file_name_real8 = 'E:\data_real_mmse8_s1.dat'; read_fid_real = fopen( input_file_name_real, 'r'); read_fid_img = fopen( input_file_name_img, 'r'); % write the data to file write_fid_real1 = fopen(output_file_name_real1, 'w' ); write_fid_real2 = fopen(output_file_name_real2, 'w' ); write_fid_real3 = fopen(output_file_name_real3, 'w' ); write_fid_real4 = fopen(output_file_name_real4, 'w' ); write_fid_real5 = fopen(output_file_name_real5, 'w' ); write_fid_real6 = fopen(output_file_name_real6, 'w' ); write_fid_real7 = fopen(output_file_name_real7, 'w' ); write_fid_real8 = fopen(output_file_name_real8, 'w' ); M = NN*TT; count = fs*0.01; datalength=count; input_buffer_real = zeros(1, count); input_buffer_img = zeros(1, count); %%--------自适应---------- num =30; BlockNo=num; RR=zeros(NN*TT,NN*TT); rgps=[1 1-dt/dtt 1-2*dt/dtt].'; Rsdao=[0 -1/dtt -2/dtt ].'; ggsb=kron(rgps,b); ggsc=kron(rgps,c); ggsd=kron(rgps,d); ggsh=kron(rgps,h); ggsg=kron(rgps,g); while (BlockNo~=0) for i=1:M [input_buffer_real, count] = fread(read_fid_real, count, 'single'); [input_buffer_img, count] = fread(read_fid_img, count, 'single'); Real_channel(i,:) = input_buffer_real.'; Img_channel(i,:) = input_buffer_img.'; end Data_channel = Real_channel + 1i*Img_channel; if BlockNo == num RR=Data_channel(:,1:400)*Data_channel(:,1:400)'/400; % % niR=inv(RR); wmmseb=RR\ggsb; wmmsec=RR\ggsc; wmmsed=RR\ggsd; wmmseh=RR\ggsh; wmmseg=RR\ggsg; end gmmseb=wmmseb'*Ab; gmmsec=wmmsec'*Ac; gmmsed=wmmsed'*Ad; gmmseh=wmmseh'*Ah; gmmseg=wmmseh'*Ag; Ym1 = wmmseb'*Data_channel; Ym2 = wmmsec'*Data_channel; Ym3 = wmmsed'*Data_channel; Ym4 = wmmseh'*Data_channel; Ym5 = wmmseg'*Data_channel; ytongtaibmmse=fft(Ym1,datalength); htongtaibmmse=fft(gmmseb,datalength); Ymmse1=ifft(exp(log(ytongtaibmmse)-log(htongtaibmmse)),datalength); ytongtaicmmse=fft(Ym2,datalength); htongtaicmmse=fft(gmmsec,datalength); Ymmse2=ifft(exp(log(ytongtaicmmse)-log(htongtaicmmse)),datalength); ytongtaidmmse=fft(Ym3,datalength); htongtaidmmse=fft(gmmsed,datalength); Ymmse3=ifft(exp(log(ytongtaidmmse)-log(htongtaidmmse)),datalength); ytongtaihmmse=fft(Ym4,datalength); htongtaihmmse=fft(gmmseh,datalength); Ymmse4=ifft(exp(log(ytongtaihmmse)-log(htongtaihmmse)),datalength); ytongtaihjmmse=fft(Ym5,datalength); htongtaih6mmse=fft(gmmseg,datalength); Ymmse4j=ifft(exp(log(ytongtaihjmmse)-log(htongtaih6mmse)),datalength); % ytongtaihjmmse=fft(Ym4j,datalength); % htongtaih6mmse=fft(gmmseh6,datalength); % Ymmse4j=ifft(exp(log(ytongtaihjmmse)-log(htongtaih6mmse)),datalength); % output_buffer_real5 = real(Ymmse1); output_buffer_real5 =output_buffer_real5.*1e4; % output_buffer_real6 = real(Ymmse2); output_buffer_real6 =output_buffer_real6.*1e4; % output_buffer_real7 = real(Ymmse3); output_buffer_real7 =output_buffer_real7.*1e4; % output_buffer_real8 = real(Ymmse4); output_buffer_real8 =output_buffer_real8.*1e4; % output_buffer_real8j = real(Ymmse4j); output_buffer_real8j =output_buffer_real8j.*1e4; [write_count_real1] = fwrite(write_fid_real1, output_buffer_real5, 'int8'); [write_count_real2] = fwrite(write_fid_real2, output_buffer_real6, 'int8'); [write_count_real3] = fwrite(write_fid_real3, output_buffer_real7, 'int8'); [write_count_real4] = fwrite(write_fid_real4, output_buffer_real8, 'int8'); [write_count_real5] = fwrite(write_fid_real5, output_buffer_real8j, 'int8'); BlockNo=BlockNo-1 end