2010-10-26 6 views
1

Je voudrais demander comment vérifier si une variable est une table 1x8 ou 8x1 de type logique? Je sais que je peux vérifier la classe d'un tableau pour logique comme ceci:MATLAB: Vérification du type de table

strcmp(class(a),'logical') 

Je sais que je peux obtenir la taille de la table comme ceci:

[h w] = size(a); 
if(w==1 & h==8 | w==8 & h==1) 

Mais si le tableau a plus de 2 dimensions? Comment puis-je obtenir le nombre de dimensions?

Répondre

3

Pour obtenir le nombre de dimensions, utilisez ndims

numDimensions = ndims(a); 

Toutefois, vous pouvez demander à la place size de retourner une seule sortie, ce qui est un tableau [sizeX,sizeY,sizeZ,...], et vérifiez sa longueur. Encore mieux, vous pouvez utiliser isvector pour tester si c'est un tableau 1-D.

Vous pouvez donc écrire

if isvector(a) && length(a) == 8 
disp('it''s a 1x8 or 8x1 array') 
end 

Enfin, pour tester logique, il est plus facile d'écrire

islogical(a) 
+0

Oh! Merci! Je devinais dims (a) mais il n'y a pas une telle fonction. –

+2

@Miko Kronn: Jetez un oeil à mon édition pour une solution peut-être encore mieux à votre problème – Jonas

+0

Encore merci :-). Y a-t-il une différence entre && & & Matlab? –