Matlab 四元素船舶领域代码复现


背景

昨天想着在船舶领域理想圆的船舶避让行为评价上进行优化,将理想圆优化成四元船舶领域,会更加贴合实际要求。
在csdn里面也有四元船舶领域的py代码,但他没直接画出来,使得python新手不好改,那我就出一个matlab版的四元船舶领域代码还原。
供大家参考,代码通俗易懂,不足之处还请多多批评指正。


学习内容

提示:周壮壮《基于四元船舶领域的船舶危险度模型》
昨天昨天还原周壮壮的论文公式,搞半天,找了其他论文才发现原来他公式错了。
还原公式就是以下三张截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


复现思路

1、代码输入仅需船舶的航速和船长,这里航速可以用m/s,船长用m,这样输出四元船舶领域前后左右的距离单位就是米
2、f(x,y)=… 这其实后面的就是椭圆公式,将R_fore、R_aft、R_starb、R_port和xy四个象限的正(负)号代进去就得到椭圆的长短轴ab参数
例:
在这里插入图片描述
3、用t变量为角度,分四个象限[0,90]、[90,180]、[180,270]、[270,360],用x=acosd(t)和y=bsind(t)得到四个椭圆1/4的xy坐标(可分别画出来)
4、将四个象限的xy汇总成x_all和y_all作为自定义函数输出
5、在另一个.m文件调用这个quaternion_ship_domain函数,用plot一次性画出四元船舶领域图


Matlab代码

提示:自定义函数

%% 代码为了给理想圆船舶领域优化成四元船舶领域 2024.1.4
% 公式参考《基于四元船舶领域的船舶碰撞危险度模型》周壮壮
% 输入船舶航速V和船长L
% 文件名 quaternion ship domain
% clc;clear
% close all
%  1 kn 约 0.514 m/s
function [x_all,y_all]= quaternion_ship_domain(L,V)
%% 计算参数
% V =  5.14      % 航速
% L =   200      % 船长

%%1象限
a1 = R_starb
b1 = R_fore
t = 0:90;
x1 = a1 * cosd(t);
y1 = b1 * sind(t);
% 绘制椭圆
% plot(x1, y1, 'LineWidth', 2);hold on
%%2象限
a2 = R_port
b2 = R_fore
t = 90:180;
x2 = a2 * cosd(t);
y2 = b2 * sind(t);
% 绘制椭圆
% plot(x2, y2, 'LineWidth', 2);hold on
%%3象限
a3 = R_port
b3 = R_aft
t = 180:270;
x3 = a3 * cosd(t);
y3 = b3 * sind(t);
% 绘制椭圆
% plot(x3, y3, 'LineWidth', 2);hold on
%%4象限
a4 = R_starb
b4 = R_aft
t = 270:360;
x4 = a4 * cosd(t);
y4 = b4 * sind(t);
% 绘制椭圆
% plot(x4, y4, 'LineWidth', 2);hold on

% axis equal; % 保证横纵坐标尺度一致

x_all = [x1,x2,x3,x4]
y_all = [y1,y2,y3,y4]
% figure
% plot(x_all, y_all, 'LineWidth', 2);hold on
end

提示:主函数调用

clc;clear;close all
V =  5.14      % 航速
L =  200      % 船长
[x_all,y_all]= quaternion_ship_domain(L,V)

plot(x_all, y_all,'k--', 'LineWidth', 2);hold on
grid on
axis equal
title('航速5.14m/s,船长200m 的四元船舶领域')

提示:结果
在这里插入图片描述


总结

本次分享根据四元数船舶领域公式,对公式进行解说,将其转换成四个1/4椭圆坐标点,在自定义函数输出所有坐标点的数据再调用画出。
分享代码若有错漏之处,请大家留言批评指正!!
如果本篇文章对您有用的话,欢迎点赞收藏噢,谢谢谢谢,哈哈哈哈哈哈!!
如需帮助,请加扣联系:1097522625

主页还有更加丰富的内容噢 O(∩_∩)O :
Matlab 地理(经纬度)坐标 转 笛卡尔(直角)坐标
Matlab 土法求航海DCPA和TCPA,并根据DCPA正负判断目标船过本船船首or船尾
基于Matlab雷达视窗的来船运动矢量绘制
Matlab 沿着曲线的动态图制作
Matlab改进埃尔米特(Hermite)分段三次插值——(可在pchip函数中自定义导数值)
Matlab 四元素船舶领域代码复现
Matlab图片曲线数据提取

  • 17
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值