莱维飞行轨迹分布图,你真的画对了吗?MATLAB代码

最近有小伙伴后台留言,要求出一个莱维飞行轨迹分布图。

小淘寻思,这莱维飞行轨迹分布图网上不是一抓一大把吗,然后就去查了一下。发现还真是有猫腻!

网上很多博主分享的莱维飞行图大概是长这个样子的:

19a1c22a7c9be7b21d68bf9ae5c7af61.png

但莱维飞行图真的是这个样子吗?小淘仔细观察了一下这种绘图的代码:大致如下:

clear
clc
% Mantegna方法模拟萊维飞行
x = [0,0];
y = [0,0];
beta = 1.5;
sigma_u = (gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
sigma_v = 1;
for i=1:1000
    u = normrnd(0,sigma_u);
    v = normrnd(0,sigma_v);
    s = u/(abs(v))^(1/beta);
    x(:,1) = x(:,2);
    x(:,2) = x(:,1)+1*s;
    u = normrnd(0,sigma_u);
    v = normrnd(0,sigma_v);
    s = u/(abs(v))^(1/beta);
    y(:,1) = y(:,2);
    y(:,2) = y(:,1)+1*s;
    plot(x,y);
    hold on;
end
xlabel('X');
ylabel('Y');
title('Levy Flight Random Walk');

但是但是!重点来了!上述代码中,并没有真实的模拟出莱维飞行每次随机的飞行方向,而只是模拟出了随机的步长!

实际的莱维飞行中,不仅步长是随机的,其实方向也应该是随机的。

小淘也去查了一下莱维飞行的百度百科,链接放这里了:https://baike.baidu.com/item/%E8%8E%B1%E7%BB%B4%E9%A3%9E%E8%A1%8C/50067105

以下这个图是从百度百科复制过来的:

6b9c21e11354b6b95973de2f5267c310.png

咱们仔细对比一下这张图与上面的代码绘制的图,可以发现,真正的莱维飞行图,其实在大多数飞行的过程中,方向都是斜着的,并非是平行于X轴或者Y轴的!

因此小淘在这里对这个代码进行一下修改,直接代码怼脸,复制到MATLAB即可使用。

%公众号:淘个代码
clear
close all
clc
% 设置参数
num_steps = 1000; % 游走步数
beta = 3/2; % 莱维指数,控制步长分布的形状


% 初始化位置数组
x = zeros(num_steps, 1);
y = zeros(num_steps, 1);


% 生成莱维分布的步长
step_lengths = levy(beta, num_steps);


% 生成随机[方向]
angles = 2 * pi * rand(num_steps, 1);


% 计算每一步的位置
for i = 2:num_steps
    x(i) = x(i-1) + step_lengths(i) * cos(angles(i));
    y(i) = y(i-1) + step_lengths(i) * sin(angles(i));
end


% 绘制游走图
figure
for i=1:num_steps-1
    plot(x(i:i+1), y(i:i+1));
    hold on
end
xlabel('X');
ylabel('Y');
title('Levy Flight Random Walk');


% 莱维分布[函数]
function step = levy(beta, num_steps)
    sigma_u = (gamma(1+beta)*sin(pi*beta/2) / (beta*gamma((1+beta)/2)*2^((beta-1)/2)))^(1/beta) ;
    sigma_v = 1;
    u = normrnd(0,sigma_u,num_steps,1) ;
    v = normrnd(0,sigma_v,num_steps,1) ;
    step = u./(abs(v).^(1/beta)) ;
end

运行结果如下:

71f4733b2ce4394b1e5b1593a266f5ac.png

艾?我再运行一次~就是玩~

6abeeea1f1e3462ff666771300380382.png

可以看到,小淘写的这段代码对应的莱维飞行图,在方向上有了更强的随机性,再也不是那种“横平竖直”的莱维飞行了!

声明:

以上莱维飞行轨迹图的绘制,受限于个人学术能力,仅供参考,如有疑义请后台留言交流。

b4c46cafc49d59fb843345f9b64cc8dc.gif

点个“在看”不失联

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天吃饺子

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值