Finding a number in an array less than 2
조회 수: 36 (최근 30일)
이전 댓글 표시
I'm trying to find a count of all the numbers in an array that are less than 2. I set up my code like this:
(y was already defined earlier)
%Determine the number of y-values less than the number 2.0.
%Display only the number of y-values less than the number 2.0.
count=0;
N=length(y);
for i=1:N
if y<2
count=[y<2]
sum(count)
end
disp('The number of values less than two is')
disp(sum(count))
end
Yet whenever I try to run this, Matlab always says:
"Array indices must be positive integers or logical values."
Error in BasicSorts1 (line 35)
disp(sum(count))
Why is Matlab telling me this?
댓글 수: 0
답변 (2개)
Dominik Mattioli
2020년 1월 16일
The error message is telling you that you are trying to index into a variable using an index that is not positive or a logical. It looks like you created a variable called 'sum' and are indexing into it using another variable called 'count', which is - for whatever reason - not a valid index.
As the other answered mentioned, your code is needlessly complicated, anyway. You can vectorize the operation of finding the number of y-values that are less than 2 like so:
clear sum % make sure you don't have a variable name overriding a function.
y = randn( 10000, 1 )
count = sum( y < 2 );
disp( ['The number of y-values < 2 is: ', num2str( count ) ] )
Or, if you need to use a for-loop, you need to index into the y-array and evaluate that element of y individually, not as a whole (that is what your code is doing):
count = 0;
for idx = 1:length( y )
if y( idx ) < 2
count = count + 1;
end
end
disp( ['The number of y-values < 2 is: ', num2str( count ) ] )
댓글 수: 0
Bandar
2020년 1월 13일
For this case, you may consider using vectorization. Try this code
A = [0 -1 2 3 2 5 -2];
A(A<2)
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!