⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmsprocess.m

📁 gps“可用性”matlab代码 Matlab Algorithm Availability Simulation Tool
💻 M
字号:
function [satdata,igpdata,wrs2satdata] = wmsprocess(alm_param, satdata,...                            wrsdata, igpdata, wrs2satdata, gpsudrefun,...                            geoudrefun, givefun, wrstrpfun, wrsgpscnmpfun,...                            wrsgeocnmpfun, outputs, time, tstart, tstep,...                            trise, inv_igp_mask, truth_data, dual_freq)                            %*************************************************************************%*     Copyright c 2007 The board of trustees of the Leland Stanford     *%*                      Junior University. All rights reserved.          *%*     This script file may be distributed and used freely, provided     *%*     this copyright notice is always kept with it.                     *%*                                                                       *%*     Questions and comments should be directed to Todd Walter at:      *%*     twalter@stanford.edu                                              *%*************************************************************************%%function [satdata,igpdata,wrs2satdata] = wmsprocess(alm_param, satdata,...%                            wrsdata, igpdata, wrs2satdata, gpsudrefun,...%                            geoudrefun, givefun, wrstrpfun, wrsgpscnmpfun,...%                            wrsgeocnmpfun, outputs, time, tstart, tstep,...%                            trise)% WMS Processingglobal MOPS_SIN_WRSMASK CONST_H_IONOglobal COL_SAT_PRN COL_SAT_XYZ COL_USR_XYZ COL_USR_LL COL_SAT_SIG2CP ...        COL_SAT_UDREI COL_USR_EHAT COL_USR_NHAT COL_USR_UHAT  COL_IGP_LL ...        COL_IGP_UPMGIVEI COL_U2S_UID COL_U2S_PRN COL_U2S_LOSXYZ COL_U2S_GXYZB ...        COL_U2S_LOSENU COL_U2S_GENUB COL_U2S_EL COL_U2S_AZ COL_U2S_SIG2TRP ...        COL_U2S_SIG2L1MP COL_U2S_SIG2L2MP COL_U2S_IPPLL COL_U2S_IPPXYZ ...        COL_U2S_TTRACK0 COL_U2S_IVPP COL_U2S_MAX COL_U2S_INITNAN global UDRE_SIG2_WRECLKglobal CNMP_TL1 CNMP_TL2 CNMP_TL3global MOPS_MAX_GPSPRN MOPS_MIN_GEOPRNglobal TRUTH_FLAG CONST_R_E CONST_R_IONO;nsat = size(satdata,1);nwrs = size(wrsdata,1);nlos = nsat*nwrs;sgps=find(satdata(:,COL_SAT_PRN) <= MOPS_MAX_GPSPRN);sgeo=find(satdata(:,COL_SAT_PRN) >= MOPS_MIN_GEOPRN);ngeo=length(sgeo);% initialize some values to NaNwrs2satdata(:,COL_U2S_INITNAN) = NaN;if TRUTH_FLAG  abv_mask=sub2ind([nsat nwrs], truth_data(:,3), truth_data(:,2));  wrs2satdata(abv_mask,COL_U2S_EL) = truth_data(:,7);  wrs2satdata(abv_mask,COL_U2S_AZ) = truth_data(:,6);  wrs2satdata(abv_mask,COL_U2S_GENUB) = ...                   [-cos(wrs2satdata(abv_mask,COL_U2S_EL)).*...                    sin(wrs2satdata(abv_mask,COL_U2S_AZ)) ...                    -cos(wrs2satdata(abv_mask,COL_U2S_EL)).*...                    cos(wrs2satdata(abv_mask,COL_U2S_AZ)) ...                    -sin(wrs2satdata(abv_mask,COL_U2S_EL)) ones(size(abv_mask))];  wrs2satdata(abv_mask,COL_U2S_GXYZB) = ...      find_los_enub(wrs2satdata(:,COL_U2S_GENUB),...                  [wrsdata(:,COL_USR_EHAT(1)) wrsdata(:,COL_USR_NHAT(1)) ...                   wrsdata(:,COL_USR_UHAT(1))], ...                  [wrsdata(:,COL_USR_EHAT(2)) wrsdata(:,COL_USR_NHAT(2)) ...                   wrsdata(:,COL_USR_UHAT(2))], ...                  [wrsdata(:,COL_USR_EHAT(3)) wrsdata(:,COL_USR_NHAT(3)) ...                   wrsdata(:,COL_USR_UHAT(3))], abv_mask);  wrs2satdata(abv_mask,COL_U2S_IPPLL) = find_ll_ipp(wrsdata(:,COL_USR_LL),...                                  wrs2satdata(:,COL_U2S_EL),...                                  wrs2satdata(:,COL_U2S_AZ), abv_mask);  wrs2satdata(abv_mask,COL_U2S_IPPXYZ) = ...          llh2xyz([wrs2satdata(abv_mask,COL_U2S_IPPLL),...                  repmat(CONST_H_IONO,length(abv_mask),1)]);  obliquity2 = 1./(sqrt(1-(CONST_R_E * cos( truth_data(:,7) ) / (CONST_R_IONO)).^2));  wrs2satdata(abv_mask,COL_U2S_IVPP) = truth_data(:,8) ./ obliquity2;else  % form los data from wrs to satellites  wrs2satdata(:,COL_U2S_GXYZB) = find_los_xyzb(wrsdata(:,COL_USR_XYZ), ...                                              satdata(:,COL_SAT_XYZ));  wrs2satdata(:,COL_U2S_GENUB) = find_los_enub(wrs2satdata(:,COL_U2S_GXYZB),...     wrsdata(:,COL_USR_EHAT),wrsdata(:,COL_USR_NHAT),wrsdata(:,COL_USR_UHAT));  abv_mask = find(-wrs2satdata(:,COL_U2S_GENUB(3)) >= MOPS_SIN_WRSMASK);  if(~isempty(abv_mask)),    [wrs2satdata(abv_mask,COL_U2S_EL),wrs2satdata(abv_mask,COL_U2S_AZ)] = ...          find_elaz(wrs2satdata(abv_mask,COL_U2S_LOSENU));    wrs2satdata(abv_mask,COL_U2S_IPPLL) = find_ll_ipp(wrsdata(:,COL_USR_LL),...                                  wrs2satdata(:,COL_U2S_EL),...                                  wrs2satdata(:,COL_U2S_AZ), abv_mask);    wrs2satdata(abv_mask,COL_U2S_IPPXYZ) = ...          llh2xyz([wrs2satdata(abv_mask,COL_U2S_IPPLL),...                  repmat(CONST_H_IONO,length(abv_mask),1)]);  endendel = wrs2satdata(:,COL_U2S_EL);% tropowrs2satdata(:,COL_U2S_SIG2TRP) = feval(wrstrpfun,el);% Calculate cnmp, udre and give if isempty(CNMP_TL3)    CNMP_TL3 = 12000;endfor i=1:length(abv_mask)    idx=find(trise(abv_mask(i),:)<=time);    if ~isempty(idx)        wrs2satdata(abv_mask(i),COL_U2S_TTRACK0)=max(trise(abv_mask(i),idx));    else    % los is has been visible since tstart-CNMP_TL3        wrs2satdata(abv_mask(i),COL_U2S_TTRACK0)=tstart-CNMP_TL3;    endendttrack = time-wrs2satdata(:,COL_U2S_TTRACK0) + 1; gps=find(wrs2satdata(:,COL_U2S_PRN) <= MOPS_MAX_GPSPRN);geo=find(wrs2satdata(:,COL_U2S_PRN) >= MOPS_MIN_GEOPRN);% cnmpif ~isempty(wrsgpscnmpfun)%  wrs2satdata(gps,COL_U2S_SIG2L1MP) = feval('af_cnmpl1add',ttrack(gps),el(gps));%  wrs2satdata(gps,COL_U2S_SIG2L2MP) = feval(wrsgpscnmpfun,ttrack(gps),el(gps));  wrs2satdata(gps,COL_U2S_SIG2L1MP) = feval(wrsgpscnmpfun,ttrack(gps),el(gps));  wrs2satdata(gps,COL_U2S_SIG2L2MP) = wrs2satdata(gps,COL_U2S_SIG2L1MP);  endif ~isempty(wrsgeocnmpfun)  wrs2satdata(geo,COL_U2S_SIG2L1MP) = feval(wrsgeocnmpfun,ttrack(geo),el(geo));  wrs2satdata(geo,COL_U2S_SIG2L2MP) = wrs2satdata(geo,COL_U2S_SIG2L1MP);end% udresatdata(sgps,:) = feval(gpsudrefun, satdata(sgps,:), wrsdata, ...                        wrs2satdata(gps,:), 1);% giveif(~dual_freq)    igpdata = feval(givefun, time, igpdata, wrsdata, satdata(sgps,:), ...                    wrs2satdata(gps,:), truth_data);    % GEO udre    sig2_uive = repmat(NaN,nlos,1);    %interpolate the UPM GIVEIs to the GEO LOSs    wrs2satdata(geo,COL_U2S_SIG2L2MP)=grid2uive(wrs2satdata(geo,COL_U2S_IPPLL), ...                                                igpdata(:,COL_IGP_LL), ...                                                inv_igp_mask, ...                                                igpdata(:,COL_IGP_UPMGIVEI));endsatdata(sgeo,:) = feval(geoudrefun, satdata(sgeo,:), wrsdata, ...                        wrs2satdata(geo,:), 1, dual_freq);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -