2017-09-07 1 views
3

J'ai du code nécessaire pour mes recherches, et le développeur n'a pas le temps de résoudre ce problème avec moi, donc j'espère pouvoir obtenir de l'aide ici:MATLAB: char (x) donne la conversion en char de logique n'est pas possible

Je pense qu'il s'agit d'un problème de version MATLAB (peut-être), car il semble assez simple. Voici le code qui provoque la douleur:

y = char(x); 

La sortie est:

erreur en utilisant l'omble

conversion char de logique est impossible.

Yep. Si je fais disp(x) je reçois: 0

Quelqu'un peut-il me dire s'il y a une version/syntaxe/quoi que ce soit ici?

+1

Comme le dit gnovice, la conversion de logique en double en caractère char donnera des caractères de contrôle ASCII assez étranges. Si ce que vous voulez est une représentation _string_ de 'x', utilisez' mat2str': 'x = false; y = mat2str (x); 'donne' y = 'faux'' –

Répondre

2

Vous ne pouvez pas vraiment faire confiance à la fonction disp dans ce cas. Il affichera 0 ou 1 pour les valeurs logiques. Par exemple:

>> disp(false) 
    0 

Vous devriez plutôt tester le type de données de x en utilisant la fonction class, et je suis sûr que vous le verrez revenir logical:

>> x = false; 
>> class(x) 

ans = 

logical 

Si vous voulez forcer pour effectuer la conversion de toute façon, vous pouvez convertir le logical à un double comme ceci:

y = char(double(x)); 

Cependant, vous En conséquence, le caractère d'en-tête (ASCII codes pour 0 et 1) sera nul.