gpt4 book ai didi

matlab - MATLAB 仿真

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:15 26 4
gpt4 key购买 nike

enter image description here

我必须模拟 Ant 在它们的家(黑框)和食物(黄框)之间移动。这些三色盒子是 Ant 。我为绘制所示图形编写的代码如下:

 % background
background()

% making ants
handle = zeros(10,3)
handle = makingAnts(10) ;

% moving ants
movingAnts(hand)

函数背景:

 function background()

figure
hold on
axis equal
axis([0 100 0 100])
pos = rand(1,2).*75
rectangle('position',[0 0 10 10],'facecolor','k')
rectangle('position',[pos 25 25],'facecolor','y')
end

函数制作 Ant :

  function [h] = makingAnts(n)
h = zeros(10,3)
dia = [2 2]
for i = 1:n
pos = rand(1,2).* 95 ;
h(i,1) = rectangle('position',[pos dia],'facecolor',[0.2 0.6 1])
g1 = get(h(i,1),'position')
h(i,2) = rectangle('position',[(g1(1)+2) (g1(2)+2) 2 2],'facecolor',[0.4 1 0.6])
h(i,3) = rectangle('position',[(g1(1)+4) (g1(2)+4) 2 2],'facecolor',[1 0.8 1])
end
end

现在我得搬 Ant 了。虽然我已经编写了代码,但它不起作用。我需要帮助让 Ant 移动。

我写的代码:

 function  movingAnts(h)
% moving 1 ant
pos = get(h(1),'position')
m = pos(1)
n = pos(2)
for i = 1:50
set(h(1),'position',[(m+0.2) (n+0.2) 2 2])
pause(0.05)
end
end

最佳答案

正如@franz1 所指出的,问题在于 mn 变量在循环之外,因此不会更新。为了扩展他/她的答案,这里有一个可能的 movingAnts.m 函数:

function  movingAnts(h)
h = reshape(h,numel(h),[]);
for i = 1:50
pos = get(h,'position');
% move all ants
pos = cellfun(@(x) x+[1,1,0,0], pos, 'UniformOutput', false);
set(h,{'position'},pos);
drawnow update %display updates
pause(0.1);
end
end

enter image description here

此外,您应该将 makingAnts.mh 的定义更改为:

h = zeros(n,3);

关于matlab - MATLAB 仿真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com