Using conditional IF statement
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
summyia qamar
am 19 Dez. 2016
Beantwortet: Steven Lord
am 19 Dez. 2016
I have a matrix A and I generate B=randi([0,1],7,3).I want C=A*B only if sum of each row of B=1..I tried this..
A=[1 0 0 1 0 1 1
0 1 1 1 0 0 1
1 0 0 1 1 0 0
1 0 0 0 1 0 1
1 1 0 0 0 1 0
0 1 0 0 0 1 1]
for k=1:numIterations
B=randi([0,1],7,3);
if sum(B,2)==1;
C=A*B;
end
end
how to use IF condition in this case?
2 Kommentare
Walter Roberson
am 19 Dez. 2016
What do you want to have happen if the condition is met multiple times within the "for k" loop? You are overwriting all of C each time.
Akzeptierte Antwort
Weitere Antworten (1)
Steven Lord
am 19 Dez. 2016
Don't generate B randomly, or at least not the way you're generating it. Your constraint on B is that each row must have exactly one nonzero value. So generate the index of the column in each row that contains the nonzero value and use that to generate a B matrix that is guaranteed to satisfy your constraint.
numRows = 10;
numCols = 5;
rowind = (1:numRows).';
colind = randi(numCols, numRows, 1);
B = accumarray([rowind, colind], 1, [numRows, numCols]);
check = all(sum(B, 2) == 1)
The sz input to accumarray is necessary for the (unlikely) case where no row has a 1 in the last column, to ensure B is the correct size.
0 Kommentare
Siehe auch
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!