Есть ли готовая команда для получения намеченного вывода из ввода?Выберите индекс случайного ненулевого элемента в списке в Matlab
Входной
>>> a=[1 0 3 0 5 6 7 8 0 10 0 0]; selectNonZero(a)
Предназначенный выход
1 or 3 or 5 or 6 or 7 or 8 or 10
Trials
>> b=a(a~=0); pi=randi([1, length(b)]); b(pi) % The original index of b(pi)?
>> fix=[0 1 2 2 2 2 2]; pi+fix(pi) % Fix changed index, cum command?
Всегда с простейшим^-^+1 – hhh
@hhh Я не читал заголовок вопроса полностью; мое решение выбрало случайное ненулевое значение * из вектора 'a', а не его индекс. Тем не менее, я изменил его, чтобы делать то, что вы хотите. –