find a row number in text file for certain condition

data=[1.2;1.0;0.05;0.4;0.3;0.2;0.1;0.05;0.04;0.03;0.03;0.02;0.01;0.001;0.01;0.01;0.001 ] ;
Here, the answer to my problem is 8th row, because the 10 consecutive rows from the 8th row are smaller than 0.10. How can I write a code to determine the row number which satisfies this condition?

2 Commenti

Jan
Jan il 26 Apr 2021
Modificato: Jan il 26 Apr 2021
Why do you menation a text file?
The text file includes the numeric data as n (row) x 1 (column)

Accedi per commentare.

 Risposta accettata

data = [1.2;1.0;0.05;0.4;0.3;0.2;0.1;0.05;0.04;0.03;0.03;0.02;0.01;0.001;0.01;0.01;0.001 ] ;
[b, n, index] = RunLength(data < 0.1);
match = find(b & n >= 10, 1);
result = index(match)
result = 8
function [b, n, index] = RunLength(x)
d = [true; diff(x(:)) ~= 0]; % TRUE if values change
b = x(d); % Elements without repetitions
k = find([d.', true]); % Indices of changes
n = diff(k); % Number of repetitions
index = k(1:numel(k) - 1);
if iscolumn(x)
n = n.';
index = index.';
end
end

1 Commento

[MOVED from flags] sermet OGUTCU wrote: This solution is highly effective.
@sermet OGUTCU: We use flags here to inform the editors about inappropriate contents like rudeness.

Accedi per commentare.

Più risposte (0)

Categorie

Tag

Richiesto:

il 26 Apr 2021

Commentato:

Jan
il 26 Apr 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by