我正在尝试在Matlab上的坐标系上创建一个随机的“路径”。我这样做是通过创建一个for循环,在每次迭代中,它在一个初始值为零的矩阵上填充一个新值。
例如,我有5个点,所以我有一个初始矩阵a=[0 0 0 0 0; 0 0 0 0 0]
(row1 = x值,row2 = y值)。
路径可以向右/向左或向上/向下移动(无对角线)。在我的for循环中,我调用randi(4)
并说“if randi(4)
= 1”,然后将1点向左移动(x-1)。如果randi(4)
= 2,则移动在右边(x + 1)等。“
问题是您不能多次访问特定点。例如,路径可以从(0,0)开始,然后转到(0,1),然后转到(1,1),然后转到(1,0),然后它不能回到(0,0)。在我目前的代码中,我没有这个限制所以我希望我能得到一些建议..
因为在这个例子中,矩阵看起来像a=[0 0 1 1 0; 0 1 1 0 0]
。
我在考虑从矩阵a上的每一列中减去每个新坐标(此处为(0,0)),如果任何一列给出两行的零值(因为它是从自身减去的相同坐标) ),然后返回一步让randi(4)
再次运行..但
答案 0 :(得分:1)
回答你的问题。
返回 - 我想这意味着只丢掉矩阵中最右边的列。
查找是否存在,您可以使用ismember
不幸的是它只需要行,所以你需要转置。片段:
a = [1:10; repmat(1:2,1,5)]'
test = ismember(a,[3,2],'rows')
any(test) % not found
test = ismember(a,[3,1],'rows')
any(test) % found
当然,你的想法也会奏效。
答案 1 :(得分:0)
我可以回答这个问题:
如何将一列与已经的每列进行比较 建立矩阵?
使用两个不同的矩阵。使用setdiff()函数比较它们:http://www.mathworks.com/help/matlab/ref/setdiff.html