Comment puis-je mettre des valeurs de variables dans une chaîne de texte dans MATLAB?
Je suis en train d'écrire une simple fonction qui prend deux entrées, x
et y
et les transmet aux trois autres de simples fonctions ajouter, multiplier et diviser. La fonction principale devrait alors afficher les résultats sous forme de chaîne de caractères contenant x
y
et les totaux.
Je pense qu'il y a quelque chose que je ne comprends pas sur des arguments de sortie. De toute façon, voici mon (pitoyable) code:
function a=addxy(x,y)
a=x+y;
function b=mxy(x,y)
b=x*y;
function c=dxy(x,y)
c=x/y;
La fonction principale est:
function [d e f]=answer(x,y)
d=addxy(x,y);
e=mxy(x,y);
f=dxy(x,y);
z=[d e f]
Comment puis-je obtenir les valeurs de x
y
d
e
et f
dans une chaîne de caractères? J'ai essayé différentes matrices et des trucs comme:
['the sum of' x 'and' y 'is' d]
mais aucun de ces variables sont en train d'apparaître.
Deux questions supplémentaires:
- Pourquoi la fonction de retour "et 3" même si je n'ai pas demandé pour la longueur de
z
? - Si quelqu'un pouvait me conseiller un bon livre pour les débutants à MATLAB de script que je l'apprécierais vraiment.
source d'informationauteur jefflovejapan
Vous devez vous connecter pour publier un commentaire.
Comme Peter et Amro illustrer, vous devez les convertir en valeurs numériques au format des chaînes d'abord, afin de les afficher ou de les enchaîner avec d'autres chaînes de caractères. Vous pouvez faire cela en utilisant les fonctions FPRINTFSPRINTFNUM2STRet INT2STR.
À l'égard de l'obtention de
ans = 3
en sortie, c'est probablement parce que vous n'êtes pas de l'affectation de la sortie deanswer
à une variable. Si vous souhaitez obtenir toutes les valeurs de sortie, vous devrez appeleranswer
de la manière suivante:Cela permettra de placer la valeur
d
dansout1
la valeure
dansout2
et la valeurf
dansout3
. Lorsque vous effectuez les opérations suivantes:MATLAB attribue automatiquement la première sortie
d
(qui a la valeur 3 dans ce cas) à l'espace de travail par défaut de la variablesna
.À l'égard de ce qui suggère une bonne ressource pour l'apprentissage de MATLAB, vous ne devriez pas sous-estimer la valeur de la documentation MATLAB. J'ai appris la plupart de ce que je sais sur ma propre utilisation. Vous pouvez y accéder en ligneou au sein de votre copie de MATLAB en utilisant les fonctions DOCAIDERou HELPWIN.
Voici comment convertir les nombres en chaînes de caractères, et de rejoindre les chaînes à d'autres choses (c'est bizarre):
Vous pouvez utiliser fprintf/sprintf familier avec la syntaxe du C. Peut-être quelque chose comme:
la lecture de votre commentaire, ce est la façon dont vous utilisez vos fonctions à partir du programme principal:
Aussi pour la réponse() fonction, vous pouvez affecter les valeurs de sortie d'un vecteur au lieu de trois variables distinctes:
et de l'appeler tout simplement:
Je viens de réaliser pourquoi j'ai eu tant de peine - dans MATLAB, vous ne pouvez pas stocker des chaînes de différentes longueurs comme un tableau à l'aide de crochets. À l'aide de crochets de concaténer des chaînes de longueurs variables en une seule caractère tableau.
Dans un tableau de caractères, chaque caractère d'une chaîne en compte comme un élément, ce qui explique pourquoi la taille de a est 1X11.
Pour stocker des chaînes de longueurs variables comme des éléments d'un tableau, vous devez utiliser des accolades pour enregistrer comme une cellule de tableau. Dans les tableaux de cellules, chaque chaîne est traitée comme un élément à part, indépendamment de la longueur.
Je cherchais quelque chose le long de ce que tu voulais, mais je voulais le mettre dans une variable.
Donc, c'est ce que j'ai fait
variable = ['hello this is x' x ', this is now y' y ', finally this is d:' d]
fondamentalement
variable = [str1 str2 str3 str4 str5 str6]