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?
4 ビュー (過去 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!