Effacer les filtres
Effacer les filtres

Basic function to find value

1 vue (au cours des 30 derniers jours)
Mughees Asif
Mughees Asif le 18 Mar 2019
Hi, I have the following function which should consume a row vector and return a value of 1, if non of the elements are 0 in the vector. If an element is 0, it should return 0.
AllNonZero(a);
function AllNonZero(a)
if all(a ~= 0)
true(1)
else
false(0)
end
end
I am trying to call this function from the command window as,
AllNonZero([random_vector])
where the random_vector is any arbitrary vector. However, I get the following error,
Attempt to execute SCRIPT AllNonZero as a function:
C:\Users\fluxw\OneDrive\Documents\MATLAB\AllNonZero.m
When I run it simply as "AllNonZero" I get an output of,
AllNonZero
ans =
0×0 empty logical array
I am a beginner so any advice would be helpful. Thank you.

Réponse acceptée

Image Analyst
Image Analyst le 18 Mar 2019
Use any() instead of all()
% Returns 0 if any elmeents are zero, 1 otherwise.
function tf = AllNonZero(vec)
tf = ~any(vec == 0)

Plus de réponses (1)

Walter Roberson
Walter Roberson le 18 Mar 2019
true() and false() are functions that accept sizes. true(1) means the same as true(1,1) which gives you a 1 x 1 array of values all of which contain true. false(0) means the same as false(0,0) which gives you a 0 x 0 (empty) array of values that would all be false if there were any elements there. You should just be using true and false not those followed by a size.
You should remove the
AllNonZero(a);
call that you have at the top of your file.

Catégories

En savoir plus sur Multidimensional Arrays 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