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

📄 radarsim.m

📁 高频地波雷达完整仿真matlab程序,可以实现地波传播模块、目标回波功率模块等6个模块的仿真
💻 M
📖 第 1 页 / 共 5 页
字号:
            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 + -