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

1 vue (au cours des 30 derniers jours)
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.

Réponse acceptée

Thorsten
Thorsten le 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 commentaires
Ahoora Saadat
Ahoora Saadat le 22 Mar 2017
Modifié(e) : Ahoora Saadat le 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by