How do I find the number of occurrences of data points between specific values in a matrix?

1 Ansicht (letzte 30 Tage)
The following code finds the number of occurrences of data between two points of the same value.
x=[4 1 2 2 2 2 2 2 2 2 2 4 1 2 2 2 2 3 3 4 5 6 1 2 2 2 2 2 2 2 2 2 2 2 3 4 1 2 2 2 2 2];
t=data==8;
out=diff(find(t))-1;
How could one change this code to determine how many data points are between specified data points to choose between?
for example:
If I had this code and I wanted to find the interval between the "1" and the next "4" in sequence how would I go about doing it? I want the code to output the interval of data points between the two specific values for each of the occurrences. From the data given as X the output should be output=[9 6 12]
Any help would be appreciated
  2 Kommentare
dpb
dpb am 9 Dez. 2015
How much is known of the data structure a priori? Specifically, is it known the values exist in sequence as shown here (albeit a missing closing '4' after the last initial '1')?
Joe
Joe am 14 Dez. 2015
this is just an example data set but the one I normally work with is a 1x600 matrix consisting of values between 1 and 10. It is known that these values occur in a semi-structured way. for example a 1 always precedes a 2 but a 1 can occur without being followed by a 2. I wanted a way to specifically target two numbers in a sequence and find their difference. The problem I am finding is that when I type in the code:
data=[1 2 2 2 2 2 2 2 2 2 3 1 2 2 2 2 7 8 3 8 3 4 5 6 1 2 2 2 ...
2 2 2 2 2 2 2 2 3 4 1 2 2 2 2 2];
PEI1=data== 1;
PEI3=data==3
PEI1out=diff(find(PEI1-PEI3))-1
it gives me a half right answer PEIout= [9 0 6 1 3 11 1], where the 9, 6, and 11 are correct but the others are not.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 14 Dez. 2015
data = [1 2 2 2 2 2 2 2 2 2 3 1 2 2 2 2 7 8 3 8 3 4 5 6 1 2 2 2 ...
2 2 2 2 2 2 2 2 3 4 1 2 2 2 2 2];
x = [1 3];
[l1,ii] = ismember(data,x);
i0 = find(l1);
k = strfind(ii(i0),[1 2]);
out = diff([i0(k);i0(k+1)])-1;

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by