loop runs infinitely,
Ältere Kommentare anzeigen
% member ship value taken by zeros initilization
U=zeros(2,3);
% **********************************************
% each row is randomly initialize and
% must be 1 [ i.e., summation of complete row value]
% **********************************************
for i=1:2
% for each i is 1 to 2, iteratively increased row
while(1)
total=0;
for j=1:3
U(i,j)=rand();
% generaly random value is less than one
total=total+U(i,j);
% each row, every colomn value is added to variable 'total'
end
if (total == 1)
% check value is equal to one or not,example total=1.1235
% then total considers as 1 but my point is exact total
% varible must be 'one'
break;
end
end
end
disp(U);
loop runs infinite so that please describe how to stop it
5 Kommentare
Adam
am 5 Dez. 2016
while(1)
defines an infinite loop. It's always dangerous to do if you cannot be 100% certain that within the loop you have a guaranteed termination criterion.
pavan kumar teegala
am 6 Dez. 2016
Yes, but it doesn't take much to realise that will pretty much never happen, as Image Analyst points out. What do you think the percentage chance is of 3 totally random numbers of ~15 decimal places summing to exactly 1?, even before you take into account floating point inaccuracies within that sum even if they theoretically did sum to 1.
pavan kumar teegala
am 6 Dez. 2016
Image Analyst
am 7 Dez. 2016
I don't see any questions so I assume you have it solved now. However there is the implied question of "How do I format my code so it is readable?" and here is the answer to that question: http://www.mathworks.com/matlabcentral/answers/13205#answer_18099
Akzeptierte Antwort
Weitere Antworten (2)
Roger Stafford
am 5 Dez. 2016
0 Stimmen
Oops! I've done something wrong and seemingly erased both my answer and Jan Simon's. I don't know how to correct it, but a thousand pardons Jan!
2 Kommentare
Image Analyst
am 5 Dez. 2016
The way to correct it is to use the Lazarus browser plugin. It's save me numerous times! Highly recommended!
Jan
am 6 Dez. 2016
@Roger: Never mind. I have a bunch of answers here in my drawer and simply choose another one. :-)
Jan
am 6 Dez. 2016
You can either normalize the data:
U = rand(2, 3);
U = bsxfun(@rdivide, U, sum(U, 2));
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!