Je souhaite concaténer horizontalement des lignes d'une gamme de cellules de chaînes comme indiqué ci-dessous. Y a-t-il des fonctions intégrées qui accomplissent la transformation ci-dessus? P> P> P> P> P> P> >
3 Réponses :
Un moyen simple est trop boucle sur les lignes edit forte> p> A plus impliqué et un peu plus difficile à lire la solution qui fait la solution qui fait le identique (la solution générale est laissée comme un exercice pour le lecteur) p> finition = Accumparray ([1 1 2 2 2] ', [1 3 5 2 4 6]', [] , @ (x) {[Démarrer {x}]} code>) p> p>
Merci, ça marche, j'ai passé les 20 dernières minutes à essayer de le faire avec une vectorisation - je ne me souviens pas de la dernière fois que j'ai eu une boucle à Matlab :)
@Chris r: Comme vous pouvez le constater, il existe une solution non-boucle utilisant Accumarray, bien que vous ne souhaitiez pas utiliser cela. Quoi qu'il en soit, si la boucle ne fait pas trop d'appels de fonction, il est généralement raisonnablement rapide dans les versions plus récentes de Matlab.
@ChrisR: Si vous n'aimez pas la boucle pour la boucle, vous pouvez écrire en une ligne comme suit: Terminer = ArrayFun (@ (i) [Démarrer {I,}], 1: Taille (début, 1), ' UniformeOutput ', false)'; code>
Je pense que vous voulez, c'est que ces deux sont concaténés comme une matrice cellulaire unique. Essayez d'utiliser ce code, fonctionne pour moi. P>
'x = [{start}, {finir}];' p>
L'exemple de variable finition code> était destiné à être la sortie B> (le résultat final). Il n'est pas censé faire partie des intrants.
Simple remplacer 'x' par 'finition'