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

1 visualización (últimos 30 días)
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.

Respuesta aceptada

Thorsten
Thorsten el 21 de Mzo. de 2017
firstvalue = 2;
nextvalue = 1;
A = A(:); % convert matrix to vector
N = nnz(A(1:end - 1) == firstvalue & A(2:end) == nextvalue);
  3 comentarios
Ahoora Saadat
Ahoora Saadat el 22 de Mzo. de 2017
Editada: Ahoora Saadat el 22 de Mzo. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matched Filter and Ambiguity Function en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by