我有几个具有不同整数的矩阵 <1x500>,现在我检查我感兴趣的值是否存在(在本例中为 30、40、50):
if any(val == 30) && any(val == 40) && any(val == 50)
然后我从矩阵中绘制这个图,一切正常,除了我想更改它只在它们以 30, 40, 50 的顺序出现时才给出 true。现在它只检查它们是否存在于矩阵任意顺序,可以是 40、10、30,无论如何它都会给出 true。
以下是矩阵的输出:0,0,0,0,0,10,50,50,50,50,0,40,40,40,0,0,0,30 ,30,30(这将给出错误) 0,0,0,0,0,30,30,30,40,40,50,50,50,40,0,0,0,30,30,30(这应为真)
如果您能帮助我完成我的爱好项目,我将非常高兴。
最佳答案
我不确定您为什么选择不使用我在上一个问题中建议的 ismember
,但您可以使用 ismember 的两个输出
来解决这个问题。首先,您可以使用第一个输出来确保所有值都出现,并使用第二个输出(即每个值第一次出现的索引)通过将索引值与排序版本进行比较来确定它们的顺序是否正确指数值。
b = [0,0,0,0,0,30,30,30,40,40,50,50,50,40,0,0,0,30,30,30];
[bool, location] = ismember([30 40 50], b);
present_and_in_order = all(bool) && issorted(location)
% true
关于matlab - 检查矩阵中的所有特定值是否按特定顺序存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363021/