好的,这似乎是一个奇怪的问题,但请耐心等待。
所以我在 .m 文件中有一个随机向量,其中内置了某些约束。这是我的代码:
randvecall = randsample(done, done, true);
randvec = randvecall([1;diff(randvecall(:))]~=0);
“完成”只是我们从中抽取样本的值的范围,所以不用担心。如您所见,此 randsamples 从一系列值中进行采样,然后使用 diff 函数修剪此随机向量,从而删除连续的重复值。向量中仍有可能出现重复值,但它们根本不可能是连续的。
这一切都很好,而且工作得很好。
所以,比如说,randvec 看起来像这样:
randvec =
54
47
52
26
39
2
14
51
24
6
19
56
34
46
12
7
41
18
29
7
它实际上要长得多,大约有 60-70 个值,但你明白了。
我想要做的是在这个向量上添加一些额外的约束。当我从这个向量中采样时,这些值会根据它们的范围进行分类。所以 1-15 的值是第 1 类,16-30 是第 2 类,依此类推。造成这种情况的原因并不重要,但它是程序中非常重要的一部分。因此,如果您查看我在上面提供的值,您会看到如下部分:
7
41
18
29
7
这实际上对我的程序不利。因为值范围是分开处理的,所以 41、18 和 29 的使用与 7 不同。因此,出于所有意图和目的,7 连续出现在我的脚本中。我想要做的是在生成向量时以某种方式解析/修改/无论向量,以便某个范围内的相同数字不能“连续”出现两次,无论它们之间有多少来自不同范围的其他数字。这有意义吗/我描述得好吗?所以,我希望 MATLAB 搜索向量,并且对于特定范围内的所有值(1-15、16-30、31-45、46-60),请确保同一范围内的“连续”值不相同。
那么,这就是我想要做的。无论如何,这可能不是最好的方法,因此当然,任何建议/替代方案都值得赞赏。我知道我可以用多个向量做得更好,但是由于各种原因,我需要它是一个单一的长向量(我的脚本的设计方式如果我为每个值范围都有一个单独的向量,它就行不通) .