【发布时间】:2013-06-29 01:29:56
【问题描述】:
我正在尝试编写一个简单的 MATLAB 程序,它将找到第一个(超过 70 个)连续非零值链并返回该连续链的起始值。
我正在处理来自操纵杆的运动数据,在实际试验开始之前有几千行数据混合了零和非零值(来自受试者在试验实际开始之前稍微移动操纵杆)。
我需要先删除这些行,然后才能开始分析试验中的运动。
我确信这是一件相对简单的事情,所以我希望有人能提供见解。 提前谢谢你
编辑:这是我尝试过的:
s = zeros(size(x1));
for i=2:length(x1)
if(x1(i-1) ~= 0)
s(i) = 1 + s(i-1);
end
end
display(S);
对于一个最大链为 72 的向量 x1,但我不知道如何找到最大链并返回它的第一个值,所以我知道在哪里修剪。我也真的不认为这是最好的策略,因为我的数据中的最大链将是数万个值。
【问题讨论】:
-
欢迎来到 SO。在这里,请拨打tour。你试过什么?
-
s = zeros(size(x1));对于 i=2:length(x1) if(x1(i-1)~=0) s(i) = 1 + s(i-1);端端显示(S);对于最大链为 72 但我不知道如何找到最大链并返回其第一个值的向量 x1,所以我知道在哪里修剪。谢谢
-
没问题。不过,我编辑了您的帖子以删除感谢。在一个问题中它不是“适当的”。
-
太棒了,该代码运行良好。但是,我可以理解它,第一个 if 语句和计数器如何专门计算连续链?我尝试过类似的方法,计数器在到达最长链之前达到了 70 以上,这仅仅是因为它正在计算向量中的所有非零数字,而不是连续的。
-
请注意,此评论应作为我的回答下的评论,而不是主要问题。抱歉,我很迂腐……我将用一个额外的解释来编辑我的答案。检查那里。
标签: matlab find return-value chain