loop runs infinitely,
이전 댓글 표시
% 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
Adam
2016년 12월 5일
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
2016년 12월 6일
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
2016년 12월 6일
Image Analyst
2016년 12월 7일
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
채택된 답변
추가 답변 (2개)
Roger Stafford
2016년 12월 5일
0 개 추천
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
Image Analyst
2016년 12월 5일
The way to correct it is to use the Lazarus browser plugin. It's save me numerous times! Highly recommended!
Jan
2016년 12월 6일
@Roger: Never mind. I have a bunch of answers here in my drawer and simply choose another one. :-)
Jan
2016년 12월 6일
You can either normalize the data:
U = rand(2, 3);
U = bsxfun(@rdivide, U, sum(U, 2));
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!