Maison > Problème commun > le corps du texte

L'index du tableau doit être un entier positif ou une valeur logique

(*-*)浩
Libérer: 2019-12-11 09:46:36
original
78228 Les gens l'ont consulté

L'index du tableau doit être un entier positif ou une valeur logique

Lorsque MATLAB indexe un tableau, cette erreur se produit si une valeur d'index qui n'est pas un entier positif ou une valeur logique est utilisée.

Voici quelques suggestions permettant de provoquer cette erreur :                                                                                                                                                                                                                   ) Vérifiez à nouveau que la valeur de l'index est un entier positif. L'index dans MATLAB ne peut pas être 0 et commence généralement à 1. 2) Si vous utilisez un index de variable logique, veuillez vous assurer que le type de tableau d'index est une variable logique, et non un double tableau composé de 1 et 0. Vous pouvez également convertir le double tableau en tableau logique avant l'indexation.

Par exemple :

A = [1 2 3 4; 5 6 7 8];
ind_double = [0 1 0 1; 0 1 0 1];
ind_logical = logical(ind_double);
A(ind_logical)
Copier après la connexion

Pour le tableau d'index, vous pouvez vérifier le type de données via la fonction whos, par exemple :

whos ind_double
whos ind_logical
Copier après la connexion
3) Si vous utilisez l'arithmétique à virgule flottante pour Lors du calcul de tableaux indexés, les valeurs du tableau peuvent ne pas être d'une précision entière. Si vous savez que la valeur de l'index est très proche d'un entier, vous pouvez utiliser la fonction round, par exemple :

A = [1 2 3 4; 5 6 7 8];
ind_float = 2.00001;
ind_int = round(ind_float);
A(ind_float)
Copier après la connexion

4) Lorsqu'une variable portant le même nom qu'une fonction intégrée MATLAB est définie, la fonction sera écrasée, ce qui entraînera le même rapport d'erreur (les paramètres et l'index du tableau de la fonction appelante utilisent les mêmes crochets), par exemple :

max = rand(5);  
A = rand(5);  
max(A)
Copier après la connexion

À ce moment, vous devez attribuer un autre nom de variable et effacez le nom de variable en conflit :

B = max;  
clear max max(A)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal