Подсчет строк, содержащих нули между последовательными числами в Matlab - PullRequest
0 голосов
/ 09 мая 2020

Я хочу переименовать нули между последовательными числами в строках столбца. Например, мне нужен вывод A, чтобы он выглядел как вывод Anew.

A = [1, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 4]

A =

 1     0     0     0     2     0     3     0     0     0     0     0     4

Новый = [1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 4]

Anew =

 1     1     1     1     2     2     3     3     3     3     3     3     4

Любая помощь будет принята с благодарностью и заранее спасибо :)

Ответы [ 2 ]

3 голосов
/ 09 мая 2020

Замените нули на NaN s, а затем используйте fillmissing, чтобы заменить NaN s предыдущим значением, отличным от NaN.

Anew = A;
Anew(Anew==0) = NaN; 
Anew = fillmissing(Anew,'previous');

или как однострочное с использованием standardizeMissing с fillmissing:

Anew = fillmissing(standardizeMissing(A,0),'previous');
2 голосов
/ 09 мая 2020

Если это последовательные положительные числа, вы можете использовать cummax:

Anew = cummax(A) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...