How to chose random row which contain non-zero element

2 vues (au cours des 30 derniers jours)
safaa
safaa le 5 Avr 2017
For example ;
A=[ 0 0 0 0 ;
0 0 0 0;
0 0 0 0;
0 0 0 8;
0 0 0 0;
0 0 8 11;
0 0 0 0;
0 0 11 14;
11 0 0 14;
0 0 0 0;
0 8 9 14;
0 9 0 0;
0 9 0 14;
8 9 11 0;
0 0 0 0;]
If all row element zero for example row 15 I want to take another row random which contain non zero element

Réponse acceptée

Star Strider
Star Strider le 5 Avr 2017
I would first find the non-zero rows, then choose randomly amongst them:
nzr = find(sum(A,2)>0); % Indices Of Non-Zero Rows
random_nz_row = nzr(randi(length(nzr), 1)) % Choose One Non-Zero Row
nz_row = A(random_nz_row,:) % Display Random Non-Zero Row

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 5 Avr 2017
another variant
inz = find(any(A ~= 0,2));
out = A(inz(randperm(numel(inz),1)),:);

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by