comment faire pour convertir une cellule à la chaîne dans matlab
Supposons que j'ai une cellule
v = 'v' [576.5818] [3.0286] [576.9270]
'v' [576.5953] [3.1180] [576.8716]
'f' [ 56] [ 58] [ 52]
'f' [ 56] [ 58] [ 52]
et je veux convertir cette matrice de cellules à l'aide d'une chaîne de format pour chaque élément:' %.5f'
Comment puis-je faire cela? J'ai essayé la méthode suivante, mais j'obtiens une erreur:
f1 = @(x) sprintf(' %.5f',x);
cellfun(f1, num2cell(v),'UniformOutput', false)
J'obtiens une erreur comme ???
Error using ==> sprintf
Function is not defined for 'cell' inputs.
Error in ==> @(x)sprintf(' %.5f',x)
Quelqu'un peut-il m'aider merci d'avance
Vous devez vous connecter pour publier un commentaire.
Chaîne de caractères est un tableau de cellule
Bien, pas vraiment.. C'est une matrice, mais continuer la lecture.
Je suppose que la cellule de tableau est le plus mystique de type de données dans MATLAB. Donc, nous allons démystifier un peu 😉
Assumer
Premier de tous les entiers de l'indexation n'est pas nécessaire pour les petits tableaux. Il est beaucoup mieux d'utiliser foreach-constructions. En effet,
est équivalent à
droit?
Bien, pas tout à fait. Première boucle produit des chaînes, tandis que la seconde donne les cellules. Vous pouvez le vérifier avec
c'est à dire [1 0] et [0 1].
Si vous avez repérer la différence, alors vous devez savoir quoi faire avec l'exemple suivant (dans ce que l'on est vraiment lié à votre question (!) Je le promets!). Que vous essayez de faire horizontale de concaténation dans une boucle:
Vous obtiendrez
et ainsi de suite. Pourquoi? Apparemment ce code tente d'enchaîner d'un ensemble de cellules de tableau à une chaîne de caractères (une cellule de tableau contenant une matrice de caractères qui constituent la chaîne du type "banane"). Donc, la réponse correcte est
Utiliser {:}
Magie, ce produit déjà attendus "banane est un fruit', "pomme est un fruit', etc.
Conseils
Quelques conseils:
for fruit = [fieldnames][1](fruits)'
{:}
est équivalent àcell2mat
PS
une solution à votre question peut ressembler à ceci:
Donné
secrète index-sage seulement les types numériques en chaînes
Code ci-dessus sorties
vcell =
qui peuvent être concaténés.
Supposons que nous avons une cellule comme suit:
Nous pouvons obtenir la chaîne de caractères en sortir simplement par l'aide de la
{:}
opérateur directement.Noter que nous pouvons utiliser l'expression
mycell{:}
n'importe où nous allions utiliser une normale chaîne.sprintf
un hack - est un lolEssayez ceci:
(Fonctionne selon certains Les résultats de Google.)
Par la recherche dans le strjoin.m de fichier, j'ai trouvé ceci: