数学模型小作业(雷达方程的简化形式)

本文介绍了如何使用Easyx图形库编程实现雷达方程的简化形式,并通过用户交互输入参数,计算并动态展示雷达探测距离随发射机功率的变化规律,以图形化方式展示数据关系。
摘要由CSDN通过智能技术生成
//数学模型小作业(雷达方程的简化形式)
//题目描述:
//1.已知雷达方程(雷达的最大探测距离)的简化形式如下:
//2.Rmax=(Pt*G*Ae*σ/(4PI*4PI*Smin))^0.25;
//3.     Rmax-雷达最大作用距离(m).
//4.     Pt-发射机脉冲功率(W).
//5.     G-天线增益(>1).
//6.     Ae-天线有效口径面积(m^2).
//7.     σ-目标的雷达截面积(m^2).
//8.     Smin-最小可检测信号(W).
//题目要求:当增大发射机功率时,雷达探测距离随发射机功率的变化规律.
//程序编制要求:
//1.Pt,G,Ae,Smin交互读取.
//2.σ交互读取.
//3.计算雷达探测距离随发射机功率的变化规律.
//4.绘制雷达探测距离随发射机功率的变化曲线.
//--------------------------------------------------------------------------------------------------------------------
/*#include <graphics.h>//包含Easyx模拟TC的BGI绘图库头文件
#include <math.h>//包含数学运算头文件
#include <iostream.h>//
#define DD 40//宏定义标题边框距离
#define DW 10//宏定义宽度边框距离
#define DH 10//宏定义高度边框距离
#define DC 200//宏定义控件区域宽度
#define nx 10//宏定义x轴刻度数量
#define ny 10//宏定义y轴刻度数量
#define PI 3.1415926//宏定义圆周率
#define PA 0//宏定义发射机最低脉冲功率(kW)
#define PB 1000//宏定义发射机最高脉冲功率(kW)
#define c1 RGB(38,47,86)//宏定义辅助线颜色1
#define c2 RGB(38,47,86)//宏定义辅助线颜色2
#define c3 RGB(255,255,255)//宏定义文字及边框颜色
#define c4 RGB(255,0,0)//宏定义曲线颜色1(红色)
#define c5 RGB(0,255,0)//宏定义曲线颜色2(绿色)
#define c6 RGB(0,0,255)//宏定义曲线颜色3(蓝色)
//定义结构体-------------------------------------------------------------------------------------------------------
typedef struct points
{
	double x,y;//定义双精度变量
}DPOINT;//结束结构体
//定义全局变量-----------------------------------------------------------------------------------------------------
int W = GetSystemMetrics(SM_CXSCREEN);//获取整个屏幕右下角X坐标
int H = GetSystemMetrics(SM_CYSCREEN);//屏幕Y坐标 
char is1[20]="10";//预定义:1.发射机脉冲功率(kW)
char is2[20]="3";//2.天线增益
char is3[20]="1";//3.天线有效面积(m^2)
char is4[20]="1";//4.最小可检测信号(E-12W)
char is5[20]="1";//5.目标雷达截面积(m^2)
char is6[20]="1000";//6.输入距离(m)
char is7[20],is8[20],is9[20],is10[20],is11[20],is12[20],is13[20];//定义字符数组(存储字符串)
double d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13;//定义双精度变量(存储计算值)
//函数声明---------------------------------------------------------------------------------------------------------
void sub_frame();//绘制框架子函数
void sub_calculate();//计算数据子函数
//主函数-----------------------------------------------------------------------------------------------------------
void main()
{
	sub_frame();//绘图初始化
	MOUSEMSG m;//定义鼠标消息 
	while(true)//循环
	{
		m=GetMouseMsg();//获取一条鼠标消息 
		switch(m.uMsg)//根据获得的消息选择分支
		{
		case WM_LBUTTONDOWN://鼠标左键单击时判断数据输入
			{
				//判断鼠标位置是否在指定的控件区域
				//A.获取原始数据(横坐标在输入区域时输入数据)-------------------------------
				if(m.x>=W-DW-DC && m.x<=W-DW)
				{
					//1.发射机脉冲功率(kW):------------------------------------------------------
					if(m.y>=H-DH-16*36+1 && m.y<=H-DH-15*36-1)//
					{
						InputBox(is1,9,"请输入数据");//读入数据
						setfillcolor(BLACK);
						fillrectangle(W-DW-DC+DC/2+10,H-DH-16*36+1,W-DW,H-DH-15*36);
						outtextxy(W-DW-DC+DC/2+15,H-DH-16*36+15,is1);//写控件字符串
					}//结束if
					//2.天线增益:-----------------------------------------------------
					if(m.y>=H-DH-15*36+1 && m.y<=H-DH-14*36-1)//
					{
						InputBox(is2,9,"请输入数据");//读入数据
						setfillcolor(BLACK);
						fillrectangle(W-DW-DC+DC/2+10,H-DH-15*36+1,W-DW,H-DH-14*36);
						outtextxy(W-DW-DC+DC/2+15,H-DH-15*36+15,is2);//写控件字符串
					}//结束if
					//3.天线有效面积(m^2):---------------------------------------------------
					if(m.y>=H-DH-14*36+1 && m.y<=H-DH-13*36-1)//
					{
						InputBox(is3,9,"请输入数据");//读入数据
						setfillcolor(BLACK);
						fillrectangle(W-DW-DC+DC/2+10,H-DH-14*36+1,W-DW,H-DH-13*36);
						outtextxy(W-DW-DC+DC/2+15,H-DH-14*36+15,is3);//写控件字符串
					}//结束if
					//4.最小可检测信号(E-12W):---------------------------------------------------
					if(m.y>=H-DH-13*36+1 && m.y<=H-DH-12*36-1)//
					{
						InputBox(is4,9,"请输入数据");//读入数据
						setfillcolor(BLACK);
						fillrectangle(W-DW-DC+DC/2+10,H-DH-13*36+1,W-DW,H-DH-12*36);
						outtextxy(W-DW-DC+DC/2+15,H-DH-13*36+15,is4);//写控件字符串
					}//结束if
					//5.目标雷达截面积(m^2):---------------------------------------------------
					if(m.y>=H-DH-12*36+1 && m.y<=H-DH-11*36-1)//
					{
						InputBox(is5,9,"请输入数据");//读入数据
						setfillcolor(BLACK);
						fillrectangle(W-DW-DC+DC/2+10,H-DH-12*36+1,W-DW,H-DH-11*36);
						outtextxy(W-DW-DC+DC/2+15,H-DH-12*36+15,is5);//写控件字符串
					}//结束if
					//6.输入距离(m):---------------------------------------------------
					if(m.y>=H-DH-11*36+1 && m.y<=H-DH-10*36-1)//
					{
						InputBox(is6,9,"请输入数据");//读入数据
						setfillcolor(BLACK);
						fillrectangle(W-DW-DC+DC/2+10,H-DH-11*36+1,W-DW,H-DH-10*36);
						outtextxy(W-DW-DC+DC/2+15,H-DH-11*36+15,is6);//写控件字符串
					}//结束if
				}//结束if(横坐标在输入区域时输入数据)
				sub_frame();//重绘框架
				//B.计算并绘图(横坐标在绘图区域时计算绘图)---------------------------------
				if(m.x>=DW && m.x<=W-DW-DC)
				{
					sub_calculate();//调用计算绘图函数
				}//结束if
				break;//
			}//结束case(结束鼠标左键单击事件消息处理)
		case WM_RBUTTONDOWN://鼠标移动的时候画个空心的圆
			return;//返回while
		}//结束switch(结束鼠标消息)
	}//结束while
}//结束主函数
//绘制框架子函数
void sub_frame()
{
	//1.全屏效果---------------------------------------------------------------------------
	initgraph(W,H);//初始化绘图窗口
	HWND hWnd = GetHWnd();//获取窗口句柄
	LONG style = GetWindowLong(hWnd,-16);//获得窗口风格
	style = style & ~WS_CAPTION & ~WS_SIZEBOX; //窗口全屏显示且不可改变大小
	SetWindowLong(hWnd,-16,style);//设置窗口风格
	SetWindowPos(hWnd, NULL,0,0,W,H,SWP_NOZORDER);//改变窗口位置,尺寸和Z序
	//ShowCursor(FALSE);//显示时隐藏鼠标
	//------------------------------------------------------------------------------------
	//2.绘制工作区边框
	setcolor(c3);
	rectangle(DW,DD,W-DW,H-DH);//外边框
	rectangle(W-DW-DC,DD,W-DW,H-DH);//控件区域边框
	//3.输出标题
	setfont(16,0,"黑体");
	outtextxy(5,10,"数学模型小作业(雷达方程的简化形式)");
	//4.输出简单说明
	RECT r={W-DW-DC+10,DD+10,W-DW-10,H-DH-10};//
	setfont(12,0,"宋体");//
	drawtext("数学模型小作业:\n \n \
				雷达方程的简化形式\
				\
				\n\n\
				操作说明:\n\n\
				鼠标左键  : 数据输入\n\
				鼠标右键  : 退出程序\n\
			\n\
			1~6为输入数据   7~9为计算数据\n\
			\n\n\
			\n\n\
			\
			\n", &r, DT_WORDBREAK);//
	//5.调整说明文字下面的矩形控件
	int c_h=36;//定义控件高度
	int c_x1=W-DW-DC,c_x2=W-DW;//控件左右x坐标
	int c_y1=H-DH;//第1个控件下y坐标
	for(int i=1;i<=16;i++)
	{
		rectangle(c_x1,c_y1,c_x2,c_y1-c_h);//
		c_y1=c_y1-c_h;
	}//结束for
	//6.绘制控件说明文字
	outtextxy(c_x1+10,H-DH-16*c_h+15,"1.发射机功率(kW):");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-15*c_h+15,"2.天线增益:");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-14*c_h+15,"3.天线有效面积(m^2):");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-13*c_h+15,"4.最小可检测信号(E-12W):");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-12*c_h+15,"5.目标雷达截面积(m^2):");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-11*c_h+15,"6.输入距离(m):");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-10*c_h+15,"7.功率密度(mW/m^2):");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-9*c_h+15,"8.回波功率密度:");//输出字符串模拟控件文字
	outtextxy(c_x1+10,H-DH-8*c_h+15,"9.最大探测距离(m):");//输出字符串模拟控件文字
	//7.初始化原始数据
	outtextxy(W-DW-DC+DC/2+60,H-DH-16*36+15,is1);//写控件字符串
	outtextxy(W-DW-DC+DC/2+60,H-DH-15*36+15,is2);//写控件字符串
	outtextxy(W-DW-DC+DC/2+60,H-DH-14*36+15,is3);//写控件字符串
	outtextxy(W-DW-DC+DC/2+60,H-DH-13*36+15,is4);//写控件字符串
	outtextxy(W-DW-DC+DC/2+60,H-DH-12*36+15,is5);//写控件字符串
	outtextxy(W-DW-DC+DC/2+60,H-DH-11*36+15,is6);//写控件字符串
}//结束子程序
//计算数据子函数
void sub_calculate()
{
	//1.原始数据转化为双精度数
	d1=atof(is1);//1.发射机功率(kW)
	d2=atof(is2);//2.天线增益
	d3=atof(is3);//3.天线有效面积(m^2)
	d4=atof(is4);//4.最小可检测信号(E-12W)
	d5=atof(is5);//5.目标雷达截面积(m^2)
	d6=atof(is6);//6.输入距离(m)
	//2.根据数据计算要求项目---------------------------------------------------------------------------
	d7=1000000.0*d1*d2/(4.0*PI*d6*d6);//7.功率密度(mW/m^2)
	d8=d7*d5/(4.0*PI*d6*d6);//8.回波功率密度
	d9=pow(d1*d2*d3*d5/(16.0*PI*PI*d4),0.25)*1000.0*pow(1000.0,0.25);//9.最大探测距离(m)
	d10=pow(1000.0*d2*d3*d5/(16.0*PI*PI*d4),0.25)*1000.0*pow(1000.0,0.25);//10.最大探测距离(m)
	//3.将计算结果转化为字符串--------------------------------------------------------------------------
	gcvt(d7,6,is7);//
	gcvt(d8,6,is8);//
	gcvt(d9,6,is9);//
	//4.将字符串写入控件中
	setfillcolor(BLACK);
	//------------------------------------------------------------
	fillrectangle(W-DW-DC+DC/2+10,H-DH-10*36+1,W-DW,H-DH-9*36);
	outtextxy(W-DW-DC+DC/2+15,H-DH-10*36+15,is7);//写控件字符串
	//------------------------------------------------------------
	fillrectangle(W-DW-DC+DC/2+10,H-DH-9*36+1,W-DW,H-DH-8*36);
	outtextxy(W-DW-DC+DC/2+15,H-DH-9*36+15,is8);//写控件字符串
	//------------------------------------------------------------
	fillrectangle(W-DW-DC+DC/2+10,H-DH-8*36+1,W-DW,H-DH-7*36);
	outtextxy(W-DW-DC+DC/2+15,H-DH-8*36+15,is9);//写控件字符串
	//------------------------------------------------------------
	//5.绘制工作区坐标线
	//画x轴刻度标线及文字---------------------------
	double value;//定义双精度变量
	char stt[10];//定义字符数组
	double xstep=(W-2*DW-DC)/(1.0*nx);//x方向步长(nx个刻度)(对应的绘图单位)
	double ystep=(H-DH-DD)/(1.0*ny);//y方向步长(ny个刻度)(对应的绘图单位)
	for(int i=0;i<=nx;i++)
	{
		setcolor(c1);//竖直辅助线颜色
		line(DW+xstep*i,H-DH,DW+xstep*i,DD);//画竖直小刻度线
		setcolor(c3);//文字颜色
		value=xstep*i*(PB-PA)/(W-2*DW-DC);//所在的刻度数值
		gcvt(value,5,stt);//将浮点数value转换为字符串stt
		outtextxy(DW+xstep*i-10,H-DH-20,stt);//在规定的位置放置字符串
	}//结束for
	//画y轴刻度标线及文字---------------------------
	for(i=0;i<=ny;i++)
	{
		setcolor(c2);//水平辅助线颜色
		line(DW,DD+ystep*i,W-DW-DC,DD+ystep*i);//画水平小刻度线
		setcolor(c3);//文字颜色
		value=ystep*(ny-i)*d10/(H-DH-DD);//所在的刻度数值
		gcvt(value,3,stt);//将浮点数value转换为字符串stt
		outtextxy(DW+15,DD+ystep*i+5,stt);//在规定的位置放置字符串
	}//结束for
	//6.重新绘制工作区边框
	setcolor(c3);
	rectangle(DW,DD,W-DW,H-DH);//外边框
	rectangle(W-DW-DC,DD,W-DW,H-DH);//控件区域边框
	//7.获取时间从(0~5τ)变化时电压电流及瞬时功率的变化曲线------------------------------------------------
	double x_scale=(W-2*DW-DC)*1.0/(PB-PA);//每个数学单位x对应的屏幕单位
	double y_scale=(H-DH-DD)*1.0/d10;//每个数学单位y对应的屏幕单位
	double n1;//
	int j;//
	double t_step=(PB-PA)/100.0;//将过渡时间分段为100个区间,时间步长
	DPOINT *p1;//定义指向点表的指针
	p1=new DPOINT[100];//定义N1点表
	for(j=0;j<=100;j++)//时间从0~5τ
	{
		n1=pow((j*t_step+PA)*d2*d3*d5/(16.0*PI*PI*d4),0.25)*1000.0*pow(1000.0,0.25);//9.最大探测距离(m)
		p1[j].x=DW+j*t_step*x_scale;
		p1[j].y=H-DH-n1*y_scale;
	}//结束for	
	//8.绘制时间从(0~5τ)变化时电压电流及瞬时功率的变化曲线------------------------------------------------
	setcolor(c4);//曲线颜色1
	for(j=0;j<100;j++)//时间从0~5τ
	{
		line(p1[j].x,p1[j].y,p1[j+1].x,p1[j+1].y);
	}//结束for
	//for(j=0;j<100;j++)//时间从0~5τ
	//{
		//cout<<j<<" "<<p1[j].x<<" "<<p1[j].y<<endl;
	//}//
}//结束子函数*/
//--------------------------------------------------------------------------------------------------------------------

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 雷达方程是用来计算雷达系统中的回波信号功率的方程。它可以用来估计雷达系统的性能指标,比如最大探测距离、最小可探测目标等。下面是一个用MATLAB编写的雷达方程的计算代码。 ```matlab % 雷达方程计算代码 % 输入参数 Pt = 1000; % 雷达发射功率 (瓦) Gt = 20; % 雷达发射天线增益 (dB) Gr = 25; % 雷达接收天线增益 (dB) Lambda = 0.15; % 雷达波长 (米) R = 1000; % 目标距离 (米) sigma = 2; % 目标散射截面积 (平方米) L = 1; % 系统损耗因子 % 计算雷达方程 Lp = (Lambda^2 * Pt * Gt * Gr * sigma) / ((4 * pi())^3 * R^4); % 距离损耗 Pb = Lp / L; % 回波信号功率 (瓦) disp(['回波信号功率为:', num2str(Pb), '瓦']); ``` 这段代码首先定义了输入参数,包括雷达发射功率、发射天线增益、接收天线增益、波长、目标距离、目标散射截面积和系统损耗因子。然后,根据雷达方程的公式计算了距离损耗和回波信号功率。最后使用disp函数将回波信号功率输出到命令窗口。 ### 回答2: 雷达方程是用于计算雷达回波功率的物理方程,其描述了雷达发射功率、接收天线增益以及目标散射截面的关系。下面给出一个简化雷达方程计算的MATLAB代码示例: ```matlab % 声明参数 Pt = 100; % 发射功率(单位:瓦) Gt = 10; % 发射天线增益 Gr = 15; % 接收天线增益 lambda = 0.1; % 波长(单位:米) R = 1000; % 目标距离(单位:米) sigma = 1; % 目标散射截面(单位:平方米) % 计算回波功率 Pr = (Pt * Gt * Gr * lambda^2 * sigma) / (4 * pi * R^4); % 显示结果 disp(['回波功率为:', num2str(Pr), ' 瓦']); ``` 上述代码中,我们首先声明了一些参数,包括发射功率、发射和接收天线增益、波长、目标距离以及目标散射截面。然后,根据雷达方程的计算公式,利用这些参数计算回波功率。最后,将计算结果显示出来。 需要注意的是,上述代码是一个简化的模型,实际的雷达方程计算可能还需要考虑其他因素,比如天气状况、信号传播衰减等。此外,具体的雷达方程计算方法可能因应用场景而有所不同,可以根据具体需求进行调整。 ### 回答3: 雷达方程是用于计算雷达系统中的回波信号的强度的方程。在雷达系统中,回波信号的强度与目标的反射截面积、发射功率、接收天线增益以及目标与雷达之间的距离等因素有关。 雷达方程的数学表达式如下: Pr = Pt * (Gt * Gr * λ^2 * σ) / (4π * R^4) 其中,Pr表示接收到的回波信号功率,Pt表示发射功率,Gt和Gr分别表示发射和接收天线的增益,λ表示波长,σ表示目标的反射截面积,R表示目标与雷达之间的距离。 下面是使用Matlab编写的雷达方程计算的代码示例: ```matlab % 设置参数 Pt = 1000; % 发射功率(单位:瓦) Gt = 10; % 发射天线增益(单位:分贝) Gr = 12; % 接收天线增益(单位:分贝) lambda = 0.1; % 波长(单位:米) sigma = 10; % 目标反射截面积(单位:平方米) R = 1000; % 目标与雷达之间的距离(单位:米) % 计算雷达方程 Pr = Pt * (10^(Gt/10) * 10^(Gr/10) * lambda^2 * sigma) / (4*pi * R^4); % 输出接收到的回波信号功率 disp(['接收到的回波信号功率为:', num2str(Pr), ' 瓦']); ``` 以上代码将计算雷达方程,其中将给定的参数代入方程中进行计算,并最终输出接收到的回波信号功率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值