📄 radarsim.m
字号:
ylabel('环境噪声系数(dB)');
legend('ATMO','GAL','MANMADE','OVERALL');
elseif viewx=='dx'
rows=size(grDis,1);
grATMO2=grATMO2*ones(rows,1);
grGAL2=grGAL2*ones(rows,1);
grMANMADE2=grMANMADE2*ones(rows,1);
grNa2=grNa2*ones(rows,1);
semilogx(grDis,grATMO2,'--xm',grDis,grGAL2,'-.*c',grDis,grMANMADE2,':oG',grDis,grNa2,'-b.');
% semilogx(grDis,grATMO2,'--xb',grDis,grGAL2,'-.*R',grDis,grMANMADE2,':oG',grDis,grNa2,'-+k');
xlabel('距离(km)');
ylabel('环境噪声系数(dB)');%%%dyn:因子-系数
legend('ATMO','GAL','MANMADE','OVERALL');
end
case 4 % 环境噪声曲线(Pa)。
grATMO=CData.grATMO;
grGAL=CData.grGAL;
grMANMADE=CData.grMANMADE;
grNa=CData.grNa;
if viewx=='fx'
% rows=size(grFreq,1);
% grNa=grNa*ones(rows,1);
semilogx(grFreq,grATMO,'--xm',grFreq,grGAL,'-.*c',grFreq,grMANMADE,':oG',grFreq,grNa,'-b.');
% semilogx(grFreq,grATMO,'--xb',grFreq,grGAL,'-.*R',grFreq,grMANMADE,':oG',grFreq,grNa,'-+k');
xlabel('频率(MHz)');
ylabel('功率谱密度(dB W/Hz)');
text(grFreq(2),grNa(2),'\leftarrow—环境噪声密度');
legend('ATMO','GAL','MANMADE','OVERALL');
elseif viewx=='dx'
rows=size(grDis,1);
grATMO=grATMO*ones(rows,1);
grGAL=grGAL*ones(rows,1);
grMANMADE=grMANMADE*ones(rows,1);
grNa=grNa*ones(rows,1);
semilogx(grDis,grATMO,'--xm',grDis,grGAL,'-.*c',grDis,grMANMADE,':oG',grDis,grNa,'-b.');
% semilogx(grDis,grATMO,'--xb',grDis,grGAL,'-.*R',grDis,grMANMADE,':oG',grDis,grNa,'-+k');
xlabel('距离(km)');
ylabel('功率谱密度(dB W/Hz)');
text(grDis(2),grNa(2),'\leftarrow—环境噪声密度');
legend('ATMO','GAL','MANMADE','OVERALL');
end
case 5 % 地波场强曲线。
grEr=CData.grEr;
% fn=floor((FMAX-FMIN)/FSTEP)+1;
% dn=floor((DMAX-DMIN)/DSTEP)+1;—
% axes(handles.axesEr);
% siFreq=log10(siFreq);grDis=log10(grDis);
% x=linspace(min(siFreq),max(siFreq),fn);
% y=linspace(min(grDis),max(grDis),dn);
% [X,Y]=meshgrid(x,y);
% Z=griddata(siFreq,grDis,grEr,X,Y,'cubic');
% mesh(X,Y,Z);
if viewx=='fx'
semilogx(grFreq,grEr,'-+');
xlabel('频率(MHz)');
ylabel('场强(dB uV/m)');
elseif viewx=='dx'
semilogx(grDis,grEr,'-+');
xlabel('距离(km)');
ylabel('场强(dB uV/m)');
end
case 6 % 地波衰减曲线。
grBTL=CData.grBTL;
if viewx=='fx'
semilogx(grFreq,grBTL,'-+');
xlabel('频率(MHz)');
ylabel('衰减(dB)');
elseif viewx=='dx'
semilogx(grDis,grBTL,'-+');
xlabel('距离(km)');
ylabel('衰减(dB)');
end
case 7 % 回波功率曲线。
grPr=CData.grPr;
if viewx=='fx'
semilogx(grFreq,grPr,'-+r');
xlabel('频率(MHz)');
ylabel('功率谱 (dBW)');
% text(grFreq(2),grPr(2),'\leftarrow—回波谱');
% legend('回波谱密度');
elseif viewx=='dx'
semilogx(grDis,grPr,'-+r');
xlabel('距离(km)');
ylabel('功率谱 (dBW)');
% text(grDis(2),grPr(2),'\leftarrow—回波谱');
% legend('回波谱密度');
end
case 8 % 海杂波功率曲线。
grPs=CData.grPs;
if viewx=='fx'
semilogx(grFreq,grPs,'-dc');
xlabel('频率(MHz)');
ylabel('功率谱密度(dB W/Hz)');
text(grFreq(2),grPs(2),'\leftarrow—海杂波谱密度');
% legend('海杂波谱密度');
elseif viewx=='dx'
semilogx(grDis,grPs,'-dc');
xlabel('距离(km)');
ylabel('功率谱密度(dBW/Hz)');
text(grDis(2),grPs(2),'\leftarrow—海杂波谱密度');
% legend('海杂波谱密度');
end
case 9 % 信噪(干)比曲线。
% grSNR=CData.grSNR;
grSCR=CData.grSCR;
if viewx=='fx'
semilogx(grFreq,grSCR,'-.k');
xlabel('频率(MHz)');
ylabel('信噪比(dB)');
text(grFreq(2),grSCR(2),'\leftarrow—信噪比');
% legend('信噪比');
% semilogx(grFreq,grSNR,'-',grFreq,grSCR,'--');
elseif viewx=='dx'
semilogx(grDis,grSCR,'-.k');
xlabel('距离(km)');
ylabel('信噪比(dB)');
text(grDis(2),grSCR(2),'\leftarrow—信噪比');
% legend('信噪比');
% semilogx(grDis,grSNR,'-',grDis,grSCR,'--');
end
end
% --- Executes on button press in grResultOutput.
function grResultOutput_Callback(hObject, eventdata, handles)
% hObject handle Ti grResultOutput (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Input Variables
Mparam=evalin('base','Mparam');
Eparam=evalin('base','Eparam');
CData=evalin('base','CData');
FMIN = Mparam.FMin; % The minimum frequency in MHz.
FMAX = Mparam.FMax; % The maximum frequency in MHz.
FSTEP = Mparam.FStep; % The frequency step.
DMIN = Mparam.dmin; % The minimum range in kilometres.
DMAX = Mparam.dmax; % The maximum range in kilometres.
DSTEP = Mparam.dstep; % The range step. See LOGLIN for further explanation.
viewx=Eparam.viewx;
selc=Eparam.selc;
if viewx=='fx'
DMAX=DMIN;
elseif viewx=='dx'
FMAX=FMIN;
end
% fn=floor((FMAX-FMIN)/FSTEP)+1;
% dn=floor((DMAX-DMIN)/DSTEP)+1;
set(handles.grSelViewY,'Value',1);
set(handles.grSelViewY,'String','(无)');
fafalse=3;
format short g;
for level=1:selc
switch level
case 1 % 海浪散射截面计算。
if selc==1
set(handles.grSiCalc,'ForeGroundColor',[1,0,0]);
%set(handles.grSiCalc,'Value',1);
siFreq = Mparam.siFreq;
siU = Mparam.siU;
siUD = Mparam.siUD;
sigemadB=SigmaCalc(siFreq,siU,siUD);
fafalse=0;
CData.sigemadB=sigemadB;
set(handles.grSiCalc,'ForeGroundColor',[0,0,0]);
end
case 2 % 环境噪声计算。
if selc==2|selc==6
set(handles.grPaCalc,'ForeGroundColor',[1,0,0]);
season = Mparam.season;
lat = Mparam.lat;
lon = Mparam.lon;
bw = Mparam.bw;
time = Mparam.time;
[grFreq,grATMO,grGAL,grMANMADE,grNa]=noise(FMIN,FSTEP,FMAX,season,lat,lon,-bw,time);
grDis=DMIN:DSTEP:DMAX;
grDis=grDis';
fafalse=1;
CData.grFreq=grFreq;
CData.grATMO=grATMO;
CData.grGAL=grGAL;
CData.grMANMADE=grMANMADE;
CData.grNa=grNa;
CData.grDis=grDis;
set(handles.grPaCalc,'ForeGroundColor',[0,0,0]);
end
case 3 % 地波场强/衰减计算。
set(handles.grErCalc,'ForeGroundColor',[1,0,0]);
ANS = Mparam.ans; % The refractivity of the troposphere at the surface of the earth in N-units.
HSCALE = Mparam.hscale; % The scale height of the troposphere in kilometres.
EPSLON = Mparam.epslon; % The relative permittivity of the surface of the earth.
SIGMA = Mparam.sigma; % The conductivity of the surface of the earth in S/m.
HRR = Mparam.hrr; % The receiver height in metres.
HTT = Mparam.htt; % The transmitter height in metres.
U = Mparam.u; %The wind speed in m/s.
[grFreq,grDis,grEr,grBTL]=grwave(FMIN,FSTEP,FMAX,DMIN,DSTEP,DMAX,ANS,HSCALE,EPSLON,SIGMA,HRR,HTT,U);
CData.grFreq=grFreq;
CData.grDis=grDis;
CData.grEr=grEr;
CData.grBTL=grBTL;
set(handles.grErCalc,'ForeGroundColor',[0,0,0]);
% viewy=get(handles.grSelViewY,'String')
% set(handles.grSelViewY,'String',{viewy,'地波场强曲线'});
case 4 % 回波功率计算。
set(handles.grPrCalc,'ForeGroundColor',[1,0,0]);
PrSigma = Mparam.PrSigma; % 雷达目标散射面积。
Ls = Mparam.Ls; % 雷达系统损失。
Po = Mparam.Po; % 发射功率。
Pt = Mparam.Pt; % 峰值发射功率。
Gamma = Mparam.Gamma; % 发射信号占空比。
Do = Mparam.Do; % 天线增益。
Dt = Mparam.Dt; % 发射天线方向性系数。
Dr = Mparam.Dr; % 接收天线方向性系数。
grPr=[];
grPr1=[];
Er4=[];
Lamda2=9e4*grFreq.^-2;
rows=size(grFreq,1);
progressbar; % 调用自制的进度条
for N=1:rows
Er4(N)=(10^(grEr(N)/20))^4;
grPr1(N)=Er4(N)*Pt*Gamma*Dt*Dr*Lamda2(N)*PrSigma*10^-27/(57600*pi^3*Po^2*Do^2*Ls);
grPr(N)=10*log10(grPr1(N));
progressbar(N/rows); % 更新进度条
end
grPr=grPr';
grPr=roundn(grPr,-2);
CData.grPr=grPr;
set(handles.grPrCalc,'ForeGroundColor',[0,0,0]);
% viewy=get(handles.grSelViewY,'String')
% set(handles.grSelViewY,'String',{viewy,'回波功率曲线'});
case 5 % 海杂波功率谱计算。
set(handles.grPsCalc,'ForeGroundColor',[1,0,0]);
UD = Mparam.UD; % 风向。
DeltaR = Mparam.DeltaR; % 距离分辨率。
ThetaB = Mparam.ThetaB; % 角度分辨率。
OmgB = Mparam.OmgB; % 多普勒频率。
grPs=[];
grPs1=[];
progressbar; % 调用自制的进度条
if viewx=='fx'
for N=1:rows %dyn横轴为频率
sigema=SigmaCalcA(grFreq(N),U,UD,OmgB);
grPs1(N)=Er4(N)*Pt*Gamma*Dt*Dr*Lamda2(N)*grDis(1)*10^3*DeltaR*ThetaB*sigema*10^-27/(57600*pi^3*Po^2*Do^2*Ls);
CData.grPs1(N)=grPs1(N);
grPs(N)=10*log10(grPs1(N));
progressbar(N/rows); % 更新进度条
end
else if viewx == 'dx'
sigema=SigmaCalcA(grFreq(1),U,UD,OmgB);
disp(sigema);
for N=1:rows; %dyn横轴为距离
% grPs(N)=Er4(N)*grPr(N)*Gamma*Dt*Dr*Lamda2(N)*grDis(N)*10^3*DeltaR*ThetaB*sigema*10^-27/(57600*pi^3*Po^2*Do^2*Ls);
grPs1(N)=Er4(N)*Pt*Gamma*Dt*Dr*Lamda2(1)*grDis(N)*10^3*DeltaR*ThetaB*sigema*10^-27/(57600*pi^3*Po^2*Do^2*Ls);
CData.grPs1(N)=grPs1(N);
grPs(N)=10*log10(grPs1(N));
progressbar(N/rows); % 更新进度条
end
end
end
% sigema=0.000001; %dyn
grPs=grPs';
CData.grPs(N)=grPs(N);
grPs=roundn(grPs,-2);
CData.grPs=grPs;
set(handles.grPsCalc,'ForeGroundColor',[0,0,0]);
case 6 % 信噪(干)比计算。
set(handles.grSNRCalc,'ForeGroundColor',[1,0,0]);
Ti = Mparam.Ti; % 雷达信号相参处理时间。
grNoise=[];
grNoise1=[];
progressbar; % 调用自制的进度条
for N=1:rows
if viewx=='fx'
grNoise1(N)=10^(grNa(N)/10)+grPs1(N);
elseif viewx=='dx'
grNoise1(N)=10^(grNa/10)+grPs1(N);
end
grNoise1(N)=10*log10(grNoise1(N));
progressbar(N/rows); % 更新进度条
end
grNoise1=grNoise1';
CData.grNoise1=grNoise1;
% grNoise=roundn(grNoise,-2);
% grSNR=grPr-(grNa-10*log10(Ti)).*ones(rows,1);
% grSCR=grPr-grPs+10*log10(Ti).*ones(rows,1);
% grSNR=roundn(grSNR,-2);
grSCR=grPr-grNoise1+10*log10(Ti).*ones(rows,1);
grSCR=roundn(grSCR,-2);
% CData.grSNR=grSNR;
CData.grSCR=grSCR;
set(handles.grSNRCalc,'ForeGroundColor',[0,0,0]);
end
end
switch selc
case 1
set(handles.grSelViewY,'String',{'选择输出曲线...','海面散射系数曲线'});
case 2
set(handles.grSelViewY,'String',{'选择输出曲线...','环境噪声曲线(Fa)','环境噪声曲线(Pa)'});
case 3
set(handles.grSelViewY,'String',{'选择输出曲线...','地波场强曲线','地波衰减曲线'});
case 4
set(handles.grSelViewY,'String',{'选择输出曲线...','地波场强曲线','地波衰减曲线','回波功率曲线'});
case 5
set(handles.grSelViewY,'String',{'选择输出曲线...','地波场强曲线','地波衰减曲线','回波功率曲线','海杂波功率曲线'});
case 6
set(handles.grSelViewY,'String',{'选择输出曲线...','环境噪声曲线(Fa)','环境噪声曲线(Pa)','地波场强曲线','地波衰减曲线','回波功率曲线','海杂波功率曲线','回波信噪比曲线'});
end
Eparam.fafalse=fafalse;
assignin('base','Eparam',Eparam);
assignin('base','CData',CData);
% --- Executes on button press in grGraph.
function grGraph_Callback(hObject, eventdata, handles)
% hObject handle to grGraph (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Eparam=evalin('base','Eparam');
set(handles.axesEr,'Visible','on');
% 关闭ActiveX控件。
if isfield(handles,'spreadsheet') && ishandle(handles.spreadsheet)
delete(handles.spreadsheet);
end
Eparam.graph=0;
assignin('base','Eparam',Eparam);
% --- Executes on button press in grTable.
function grTable_Callback(hObject, eventdata, handles)
% hObject handle to grTable (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -