gpt4 book ai didi

matlab - 找到连续的非零值

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:23 24 4
gpt4 key购买 nike

我正在尝试编写一个简单的 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 但我不知道如何找到最大链并返回它的第一个值,所以我知道在哪里修剪。我也真的不认为这是最好的策略,因为我数据中的最大链将有数万个值。

最佳答案

此答案适用于任何链条大小。它在向量 x1 中找到最长的链,并检索该链的第一个元素 val

首先我们将使用 bwlabel标记连接的组件,例如:

s=bwlabel(x1);

然后我们可以使用tabulate获取s的频率表,并找到最大连通分量的第一个元素:

t=tabulate(s);
[C,I]=max(t(:,2));
val=x1(find(s==t(I,1),1, 'first'));

这应该适用于您有一个不同的最大尺寸链的情况。如果您有不止一条具有最大长度的链,情况会怎样? (您仍然可以使用我的代码稍作修改...)

关于matlab - 找到连续的非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com