Comment vérifier dans MATLAB si un vecteur contient seulement des zéros?
Qu'est-ce que le "MATLAB" pour vérifier si un vecteur ne contient que des zéros, de sorte qu'il sera évaluée pour un scalaire plutôt que pour un vecteur. Si j'exécute ce code:
vector = zeros(1,10)
%the "1" represents a function that returns a scalar
if 1 && vector == 0 %this comparision won't work
'success'
end
J'obtiens l'erreur:
??? Opérandes || et &&
les opérateurs doivent être convertibles
logique des valeurs scalaires.
source d'informationauteur Lucas | 2010-05-20
Vous devez vous connecter pour publier un commentaire.
Utilisation
all
:Depuis les zéros sont traités de la même manière que
false
vous n'avez pas besoin d'utiliservector == 0
comme ptomato suggère.~any(vector)
est le "MATLAB" pour vérifier que des valeurs nulles.Étendre le problème à des tableaux, vous devez utiliser le
Un peu en retard, mais que diriez -
nnz
( Nombre de Non-Zéros )?Vous pouvez facilement voir si et comment de nombreuses entrées dans
vector
contiennent non nulle éléments à l'aide de l'suivantes:vector~=0
retourne un tableau de mêmes dimensions que lesvector
contenant des zéros et des uns, qui représente le vrai et le faux, pour cette déclaration. La variablenrNonZero
contient alors le nombre de non-zéro éléments dansvector
.Donc, votre code sera ensuite
Vous pouvez aussi le faire en utilisant ce:
Comme Doresoom a déclaré, votre problème est dans l'utilisation de
&&
au lieu de&
. Aussi, le~
inverse toutes les 1 et les 0 et de réaliser ainsi un vecteur nul dans un vecteur de 1: