【发布时间】:2012-08-22 22:40:07
【问题描述】:
从下面的例子:
x = 1 + (10-1)*rand(1,100);
x(12:22) = 20 + (30-20)*rand(1,11);
x(70:94) = 20 + (30-20)*rand(1,25);
我在这里尝试了几件事。首先,我试图找到大于 20 的第一个值的行号,其中连续值 >20 的数量大于 24。所以在此示例中,我想返回行号 70。
我可以这样做:
y = x > 20;
k = [strfind([~y(1),y],[0 1]);strfind([y,~y(end)],[1 0])];
idx = k(1,diff(k) + 1 > 24);
但是,我还想将第一组值(不包括超过 24 个 > 20 的连续值)替换为 nan。我怎样才能做到这一点?
【问题讨论】:
-
你的行
k = [strfind([~y(1),y],[0 1]);strfind([y,~y(end)],[1 0])];出现 horzcat 错误。 -
请查看修改后的问题。需要转置的向量。
标签: matlab