使用Matlab找到5个连续的成功案例?
我有一个函数,可以在10个周期内找到单个传感器值和平均传感器值之间的差异。使用此功能将进行100次测试。因此,每次时间周期>10,我都会强制它为零,这样在第11次重复中,它将从零开始重新计数。代码如下:使用Matlab找到5个连续的成功案例?,matlab,Matlab,我有一个函数,可以在10个周期内找到单个传感器值和平均传感器值之间的差异。使用此功能将进行100次测试。因此,每次时间周期>10,我都会强制它为零,这样在第11次重复中,它将从零开始重新计数。代码如下: cycle=cycle +1; if cycle>10 cycle=0; end for i=1: TotalnoOfGrids for j=1: noOfNodes if abs(char(Allquants{i}(j))-char(mostCommonLetters
cycle=cycle +1;
if cycle>10
cycle=0;
end
for i=1: TotalnoOfGrids
for j=1: noOfNodes
if abs(char(Allquants{i}(j))-char(mostCommonLetters {i}))>0
if cycle>0
wrong{i}(j)=wrong{i}(j)+1;
else
wrong{i}(j)=0;
end
end
end
end
现在我需要知道传感器是否在10个周期内连续成功运行了5次。我该怎么做
我想到了一个循环,但我读到它需要太多的时间
在网上搜索我找到的
问题是,上述功能将重复100个周期。我想每10个周期查看是否有连续的成功,因此它是动态完成的,并且我没有为周期保存传感器的成功或失败状态。因此,我没有一个包含1或0的向量来使用上述参考中使用的函数,或者正如Jonas建议的那样如果循环是最简单的事情,请尝试一下仅仅因为你读过它“花费了太多的时间”,并不意味着它对你的案例真的有影响!的确,在Matlab中,避免循环通常是有意义的;但在您的情况下,100*20*9(如果我理解正确的话)循环迭代似乎还没有那么糟糕(取决于您的速度要求) 编辑(正确答案) 我现在从您的评论中了解到,您向我们展示的代码被一个
while
或for
循环包围,该循环正在运行约100次,所有数量和大多数普通字母在该循环内可能会发生变化。在这种情况下,我先前的回答对你不起作用,因为它在不同的传感器上计算成功;现在应该更好了
如果我读对了代码,条件abs(char(Allquants{I}(j))-char(mostcommonicletters{I}))>0
告诉您结果是“错误的”;因此,
for i=1:TotalnoOfGrids
this_cycle_successes(i,:)=char(Allquants{i})==char(mostCommonLetters{i});
end
consecutive_successes=(consecutive_successes+1).*this_cycle_successes;
会计算出你连续取得了多少成功。注意:在开始循环之前,您需要初始化连续的\u成功
,例如
consecutive_successes = zeros(9,20);
在10个循环后,您可以检查哪些传感器有5次成功,如下所示:
has5successes = consecutive_successes>=5;
请注意,这是一个矩阵运算,所以现在您将获得9*20的值,正如您在注释中所要求的。此解决方案不需要循环j
在您的代码中什么算成功?我正在计算错误,因此如果错误为0,则成功为1对?您正在计算每个网格和每个节点的错误。连续5次成功是什么?也,错误
是一个单元阵列-有什么原因吗?我有9个网格,每个网格中有20个传感器。单元误差包含9个网格中的传感器给出错误值的次数。关于5次成功,我将从所有传感器获取读数,如果任何传感器连续给出5次正确,我需要知道您编写的成功方程式@乔纳斯不会以这种方式计算成功的数量,对吗?它将覆盖我只得到9个值的has5成功,我怀疑是9*20。我希望你最近的评论没有正确的英语句子;你的最后一句话令人费解。对不起,我放弃了。有一个尺寸问题:??错误使用==>mtimes内部矩阵维度必须一致。如果使用此项,则解决连续的\u成功=(连续的\u成功+1)。*此\u周期的\u成功;