✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
鱼雷航行是指鱼雷在水中进行导航和航行的过程。下面是关于鱼雷航行的一些基本原理和步推进装置获得初速度。
-
自导航:鱼雷通常搭载了各种导航设备,如惯性导航系统、陀螺仪、加速度计、深度传感器等。这些设备帮助鱼雷获取姿态、速度和位置信息,并用于自主导航。
-
路径规划:在鱼雷发射前或发射后,根据任务要求和环境条件,预先设计或实时调整鱼雷的航行路径。路径规划可能考虑避开障碍物、追踪目标等因素。
-
控制和机动:鱼雷通过控制尾翼或舵来进行转向和机动。调整尾翼或舵的位置和角度可以控制鱼雷的转向、升降和动态姿态稳定等:鱼雷可能搭载有声纳或其他传感器,用于目标检测和跟踪。这些传感器帮助鱼雷在水中探据检测结果调整航向和速度。
-
动力:通常搭载一定数量的能源,如电池引擎,用于提供持续的动力供应,以维持鱼雷的航行。
⛄ 部分代码
function sys=mdlDerivatives(t,x)
global B G M XC YC ZC Jx Jy Jz Lu S L tl
global Cx
global Cyalfa Cyde Cywz
global Czbeta Czdr Czwy
global Mxbeta Mxdr Mxdd Mxwx Mxwy Mxp
global Mybeta Mydr Mywy
global Mzalfa Mzde Mzwz
global L11 L22 L26 L33 L44 L55 L66 L35
vx=x(1);
vy=x(2);
vz=x(3);
wx=x(4);
wy=x(5);
wz=x(6);
pesi=x(7);
sita=x(8);
fai=x(9);
dr=0;
dd=0;
de=0;
tl=10672;
v2=vx*vx+vy*vy+vz*vz;
v=sqrt(v2);
alfa=atan(-vy/vx);
vxy=sqrt(vx*vx+vy*vy);
beta=atan(vz/vxy);
salfa=sin(alfa);
calfa=cos(alfa);
sbeta=sin(beta);
cbeta=cos(beta);
cpesi=cos(pesi);
spesi=sin(pesi);
csita=cos(sita);
ssita=sin(sita);
cfai=cos(fai);
sfai=sin(fai);
CVB=[calfa*cbeta, salfa, -calfa*sbeta;
-salfa*cbeta, calfa, salfa*sbeta;
sbeta, 0, cbeta];
CEB=[csita*cpesi, ssita, -csita*spesi;
-ssita*cpesi*cfai+spesi*sfai, csita*cfai, ssita*spesi*cfai+cpesi*sfai;
ssita*cpesi*sfai+spesi*cfai, -csita*sfai, -ssita*spesi*sfai+cpesi*cfai];
a=[M+L11, 0, 0, 0, M*ZC, -M*YC;
0, M+L22, 0, -M*ZC, 0, M*XC+L26;
0, 0, M+L33, M*YC, L35-M*XC, 0;
0, -M*ZC, M*YC, Jx+L44, 0, 0;
M*ZC, 0, L35-M*XC, 0, Jy+L55, 0;
-M*YC, M*XC+L26, 0, 0, 0, Jz+L66];
fs=CVB*[-Cx*0.5*Lu*v2*S;
Cyalfa*0.5*Lu*v2*S*alfa+Cywz*0.5*Lu*S*L*v*wz;
Czbeta*0.5*Lu*v2*S*beta+Czwy*0.5*Lu*S*L*v*wy];
% +Mxwy*0.5*Lu*S*L^2*wy*v
ms=[Mxbeta*0.5*Lu*S*L*v2*beta+Mxwx*0.5*Lu*S*L^2*wx*v+Mxp*v2;
Mybeta*0.5*Lu*S*L*v2*beta+Mywy*0.5*Lu*S*L^2*wy*v;
Mzalfa*0.5*Lu*S*L*v2*alfa+Mzwz*0.5*Lu*S*L^2*wz*v];
fg=CEB*[0;B-G;0];
mg=[0,-ZC,YC;ZC,0,-XC;-YC,XC,0]*CEB*[0;-G;0];
ft=[-M*(vz*wy-vy*wz+YC*wx*wy+ZC*wx*wz-XC*(wy^2+wz^2));
-M*(vx*wz-vz*wx+ZC*wy*wz+XC*wy*wx-YC*(wz^2+wx^2));
-M*(vy*wx-vx*wy+XC*wz*wx+YC*wz*wy-ZC*(wx^2+wy^2))];
mt=[-M*(YC*(vy*wx-vx*wy)+ZC*(vz*wx-vx*wz))-(Jz-Jy)*wy*wz;
-M*(ZC*(vz*wy-vy*wz)+XC*(vx*wy-vy*wx))-(Jx-Jz)*wz*wx;
-M*(XC*(vx*wz-vz*wx)+YC*(vy*wz-vz*wy))-(Jy-Jx)*wx*wy];
ftl=[tl;0;0];
duo=[0, 0, 0;
0, 0, Cyde*0.5*Lu*v2*S;
Czdr*0.5*Lu*v2*S, 0, 0;
Mxdr*0.5*Lu*S*L*v2, Mxdd*0.5*Lu*S*L*v2, 0;
Mydr*0.5*Lu*S*L*v2, 0, 0;
0, 0, Mzde*0.5*Lu*S*L*v2]*[dr;dd;de];
f=[(fs+fg+ft+ftl);(ms+mg+mt)]+duo;
df(1:6)=a\f;
df(7:9)=[0, cfai/csita, -sfai/csita;
0, sfai, cfai;
1, -cfai*tan(sita), sfai*tan(sita)]*[wx;wy;wz];
df(10:12)=CEB'*[vx;vy;vz];
sys=df';
⛄ 运行结果
⛄ 参考文献
[1] 李文哲,张宇文,范辉,等.基于MATLAB的鱼雷水下弹道仿真[J].计算机仿真, 2008, 25(12):4.DOI:10.3969/j.issn.1006-9348.2008.12.010.
[2] 敖文刚,杜力,黄勇刚,等.基于MATLAB的运动学、动力学过程分析与模拟[M].科学出版社,2013.