How can I use while loops to determine if an element is larger than the element below it and store the results in a vector with 1 representing true and 0 representing false?
    조회 수: 7 (최근 30일)
  
       이전 댓글 표시
    
I coded for my while loop but I can't get the final answer and the error showed that 'Array indices must be positive integers or logical values.' Can someone help me with this? Thank you so much!!
A=randi([0 9],1,randi([100 300]))'
n=numel(A)-1
B=zeros(n,1)
while i<=n
    if A(i)>A(i+1)
        B(i,1)=true
    else
        B(i,1)=false
    end
    i=i+1   
end
댓글 수: 1
  Stephen23
      
      
 2021년 3월 26일
				You are using i as an index. What is the value of i ? (hint: the square root of -1)
채택된 답변
  Matt J
      
      
 2021년 3월 26일
        A=randi([0 9],1,10)';
n=numel(A)-1;
B=zeros(n,1);
i=1;
while i<=n
    if A(i)>A(i+1)
        B(i,1)=true;
    else
        B(i,1)=false;
    end
    i=i+1;
end
A.',B.'
댓글 수: 0
추가 답변 (1개)
  John D'Errico
      
      
 2021년 3월 26일
        
      편집: John D'Errico
      
      
 2021년 3월 26일
  
      "While" this does not answer your question, I would not use a while loop at all. Learn to use MATLAB as it is designed.
A = randn(1,8) % some random numbers
B = [false,diff(A)>0] % A vector of the same length as A, true when A(i+1) > A(i)
B is the same length as A. Note that A(1) will never be greater than the preceding element, since there is no preceding element.
Could you use a while loop? Yes. A for loop would make more sense as a loop here, since you want to test EVERY pair of elements.
B = false(size(A)); % preallocate B
for ind = 2:numel(A)
  B(ind) = A(ind) > A(ind-1);
end
B
Same result as the single statement, but a loop.
CAN you use a while loop? Well, yes. Learn when to use one type of loop over another when you REALLY need to use a loop. A while loop is good when you don't know how often the loop will run. A for loop is right when you have a known, fixed number of iterations.
댓글 수: 0
참고 항목
카테고리
				Help Center 및 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!



