Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在逻辑矩阵中模拟障碍物_Matlab_Math - Fatal编程技术网

Matlab 在逻辑矩阵中模拟障碍物

Matlab 在逻辑矩阵中模拟障碍物,matlab,math,Matlab,Math,我正在为我的一个项目写一个最优路径规划算法,我有点被困在如何生成地图上。为了测试我的算法,我想生成一个随机的地图,这个地图上有障碍物的物体会通过。为了生成地图,我制作了一个逻辑数组,其中“1”表示墙或障碍物,而“0”表示没有障碍物。然而,我在设置障碍时遇到了一些问题 现在,这是我用MATLAB编写的(尽管我认为核心思想可以用任何语言解决): obsSize参数表示方形障碍物一侧的尺寸。以下是我运行的示例解决方案: >> createMap(10,10,1,[5,5],1,1) an

我正在为我的一个项目写一个最优路径规划算法,我有点被困在如何生成地图上。为了测试我的算法,我想生成一个随机的地图,这个地图上有障碍物的物体会通过。为了生成地图,我制作了一个逻辑数组,其中“1”表示墙或障碍物,而“0”表示没有障碍物。然而,我在设置障碍时遇到了一些问题

现在,这是我用MATLAB编写的(尽管我认为核心思想可以用任何语言解决):

obsSize参数表示方形障碍物一侧的尺寸。以下是我运行的示例解决方案:

>> createMap(10,10,1,[5,5],1,1)

ans =

     1     1     1     1     1     1     1     1     1     1
     1     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     1
     1     0     0     0     1     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     1
     1     1     1     1     1     1     1     1     1     1
看起来不错!但问题开始于障碍物大小和分辨率不是1或2

>> createMap(10,10,1,[5,5],0.5,2)

ans =

     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1

>> createMap(10,10,1,[5,5],3,2)

ans =

     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     1     1     1     1     1     1     1     1     1     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     1
     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1

对于第一个,我们希望在靠近中间的某个地方会有一个1,但却找不到。在第二个例子中,我们希望在每个方向上找到6个(3m*3cell/m=6 cell),但我们得到了8个(也有可能这不是我的代码所计算的,但这是我所希望的。这两个例子都不起作用,我想这与这一行有关:

Recalculating obstacle size for this grid
    obsSize = obsSize - 1;
我很确定我必须重新计算对象大小,使其适合网格,但我如何才能对任何网格和障碍物进行计算?是否有方法缩放“-1”,使其根据网格/障碍物的大小进行操作

让我知道你想出了什么,如果我的代码中有任何其他突出的问题


谢谢!

障碍物的边长应该取决于变量res,因为地图会随着res的变化而缩放。因此,您指出的线应该更改为obsSize=obsSize*res。障碍物的边长应该取决于变量res,因为地图会随着res的变化而缩放。因此,您指出的线应该更改d到OBSIZE=OBSIZE*res。
Recalculating obstacle size for this grid
    obsSize = obsSize - 1;