当前位置:编程学习 > Matlab >>

这个雷达天线方向图的程序 matlab运行不出来 说的26排有错

%天线方向图生成模块 function g1 = atenna_dg(mtime,ltime,arr,flag); %atenna_dg(1,.003,0,1) %mtime 搜索时总体时间 %ltime 搜索时雷达照射时间 %g1为输出的方向图 %arr 跟踪时天线的输入角度,输入应该为弧度 %flag = 1 跟踪; flag = 0 搜索 %输出g1.angle为天线所指的方向 %输出g1.data为天线的方向图 %sidelobe_gain 第一旁瓣增益 global Sdb booltrace boolseize Sdb = 40;%假设第一旁瓣增益为40dB,SdB≤50dB booltrace = 1;boolseize = 1;%假设为跟踪状态 g1.sidelobe_gain = -Sdb; %mtime = input('please input mtime\n'); %ltime = input('please input ltime\n'); %arr = input('please input arr\n'); %flag = input('please input flag\n'); r = 0.05*(Sdb-13.26); a = 10^(-r); if flag == 1 azimuth = arr; else initazimuth = -20*pi/180; %初始角度为20度 init = -initazimuth; temp = ceil(mtime/(3*ltime)); azimuth = initazimuth + temp*(2.5*pi/180); %雷达每帧转动2.5度 azimuth = mod(azimuth+init,17*2.5*pi/180)+initazimuth; end g1.angle = azimuth; thetab = 2.5*pi/180; k = 1.3916/sin(thetab/2); g1.k = k; theta0 = asin(pi/k); theta = -3.14:0.001:3.14; for i=1:length(theta); theta1 = theta(i) - azimuth; if theta1==0 g1.data(i) = 1; else if booltrace~=0|boolseize~=0 %搜索情况下天线方向图由正负2.5度处开始加权,防止虚假目标产生;跟踪截获情况下由天线零点处加权,因为需要比幅法测量方位跟踪误差 if abs(theta1)<=abs(theta0) g1.data(i) = abs(((1+cos(theta1))*sin(k*sin(theta1)))/(2*k*sin(theta1))); else g1.data(i) = a*abs(((1+cos(theta1))*sin(k*sin(theta1)))/(2*k*sin(theta1))); end else if abs(theta1)<=abs(thetab/2) g1.data(i) = abs(((1+cos(theta1))*sin(k*sin(theta1)))/(2*k*sin(theta1))); else g1.data(i) = a*abs(((1+cos(theta1))*sin(k*sin(theta1)))/(2*k*sin(theta1))); end end end end %theta = -3.14:0.001:3.14; %i=1:length(theta); plot(theta,10*log(g1.data));%天线方向图 xlabel('天线的指向角度(弧度)'); ylabel('天线的增益'); title('天线方向图');
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,