大家好,首先,我刚刚开始学习MATLAB,并试图编写一个面向对象的程序来种植和管理森林
我正在尝试编程一个操作,它将“种植”一棵树,然后检查它相对于域中所有其他树的位置。树之间的距离不能小于0.5。我成功了一部分,但后来意识到,我只是在对照前一棵树检查新栽树的位置,而不是对照“森林”中的所有其他树。我试图将操作更改为sqrt((Forest{I}.x-Forest{1:I-1}.x)^2+(Forest{I}.y-Forest{1:I-1}.y))^2<0.5,但在种植第三棵树时,我收到了此错误
期望一个花括号或点索引表达式的输出,但有两个结果。
我看了看,我不能用这种方法检查单元格中所有物体的位置。我考虑使用cellfun,但我不确定这是否是正确的方法,因为它只输出一个图形,是否最好在while循环中创建一个for循环?或者其他方法
谢谢
森林= {};
第一次=橡木((68 - 1)。*兰德(1,1)+ 1(78 - 1)。*兰德(1,1)+ 1,0.25);
森林{1}=第一;
i = 1;
而元素个数(森林)< Size_of_intialforest
i=i+1;
如果兰特(1,1)> 0.5
拍摄(i) =橡木((68 - 1)。*兰德(1,1)+ 1(78 - 1)。*兰德(1,1)+ 1,0.25);
其他的
拍摄(i) =桦木((68 - 1)。*兰德(1,1)+ 1(78 - 1)。*兰德(1,1)+ 1,0.2);
结束
拍摄森林{我}=(我)
如果sqrt((森林{i}.x-森林{i-1}.x)^2+(森林{i}.y-森林{i-1}.y))^2<0.5
森林{我}= {};
我张=;
结束
结束