How can I count the number of times the value of an array/vector/matrix changes value from x to y?

1 visualizzazione (ultimi 30 giorni)
For example
Let A = [1;2;1;1;1;3;5;5;5;1;1;1;6;3;4;2;8;6;6;6;6]
How can I determine the number of times the value goes from say 2 to 1, or from 6 to 3 or from 1 to 1 etc. ?
Thank you.

Risposta accettata

Thorsten
Thorsten il 21 Mar 2017
firstvalue = 2;
nextvalue = 1;
A = A(:); % convert matrix to vector
N = nnz(A(1:end - 1) == firstvalue & A(2:end) == nextvalue);
  3 Commenti
Ahoora Saadat
Ahoora Saadat il 22 Mar 2017
Modificato: Ahoora Saadat il 22 Mar 2017
So if I wanted this to be done for an n row column vector with possible values going from 1 to m then would the following work:
for i = 1:1:m
fv = i;
for j = 1:1:m
nv = j;
a_i = sum(SA(:) == i) ; % This is the number of times that the system is in state s = i
b_i_j = nnz(SA(1:end - 1) == fv & SA(2:end) == nv); % Where b_i_j is the number of times the system goes from state s = i to state s = j
T_1(i,j) = b_i_j/a_i ; % Where T_1 is the m-by-m transition matrix.
end
end
Thank you again.

Accedi per commentare.

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by