是否有任何準備好的命令從輸入中獲取預期的輸出?在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
試驗
>> 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'中選擇了一個隨機的非零*值*,而不是它的索引。不過,我已經修改它來做你想做的事情。 –