Using range in a vector

4 vues (au cours des 30 derniers jours)
ck poon
ck poon le 21 Mar 2019
Commenté : madhan ravi le 21 Mar 2019
How do you use a loop/if statement to generate a range for vector A. Vector A can be changed by the user but the code should check if the components of the vectors are within -100 to 100
%vector A is defined as :
%A = [-10:0.5:10] ;
A = [1 2 101];
B =[]; % start with empty B
% check if the contents of A are in the range of -100 to 100
max = 100;
min = -100;
if (A>=min)|(A<=max)
for i=[1:length(A)]
% append cube of A(i) to B
B = [B A(i)*A(i)*A(i)];
end
%display B
disp(B);
%display that code is invalid
else
fprintf("Invalid - not within range")
end
  2 commentaires
Jos (10584)
Jos (10584) le 21 Mar 2019
Did you check the output of (A>=min)|(A<=max) ?
Note that the IF statement converts this condition to a single True or False.
madhan ravi
madhan ravi le 21 Mar 2019
fprintf('Within Range %d\n',A(A>=Min&A<=Max))
fprintf('Not Within Range %d\n',A(~(A>=Min&A<=Max)))
I used if A(A>=min&A<=max)
and got 1 8 1030301
but somehow im suppossed not to cube the components not within the range
A>=Min & A<=Max % index it with A and raise it to the power of three

Connectez-vous pour commenter.

Réponse acceptée

Jos (10584)
Jos (10584) le 21 Mar 2019
I am a little confused by your problem, but here are my thoughts. You might want to use the function ANY, or its sibling ALL, or apply logical indexing
A = [1 2 101]
if any(A > 100)
disp('At least one element of A is larger than 100.') ;
end
B = nan(size(A))
tf = A <= 100 % use logical indexing
B(tf) = A(tf) .^ 3 % only calculate cube for elements of A <= 100, other elements are NaN

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by