Tableau de cell

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour bonjour !

J'ai un problème sous Matlab, j'ai un tableau qui contient des cell, cependant j'aimerais avoir des string pour les manipuler plus facilement.

Pour plus de détail, j'extrais un fichier excel, puis je récupère une colonne. Cette colonne contient en fait des temps sous la forme 1'02 pour une minute et 2 secondes. J'aimerais pouvoir récupérer en string pour ensuite appliquer une fonction afin d'avoir tout en seconde (soit ici 62 secondes). Cependant la matrice que j'obtiens contient des cell, donc je ne peux pas split directement.

1
2
[num, txt, tab] = xlsread('fichier.xlsx');
deb = tab(21:end,4);

Si jamais quelqu'un s'y connait, je remercie d'avance l'aide apporté !

PS : Si tu m'aides, cela ne te dit pas de m'aider à faire un tuto matlab ?

Je ne suis pas unique, je suis une édition limitée. Parfois je voyage par ici

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

Salut,

Le tableau (ou la matrice) que tu manipules s'appelle cell array dans Matlab. Pour la démonstration, je prends ce tableau de cellules, qui se définit à l'aide d'accolades.

1
cell_array = {'1:02','2:03'};

Tu as deux manières d'y accéder. La première utilise les parenthèses et renvoie une cell.

1
returned_cell = cell_array(1);

La seconde utilise les accolades et renvoie le contenu de la cellule désignée (ici une chaîne de caractères).

1
returned_str = cell_array{1};

Si la matrice a deux dimensions (ou plus), on procède toujours avec les accolades, et on sépare les indices avec une virgule, comme pour une matrice normale.

1
2
cell_array = {'11' '12'; '21' '22'};
returned_str = cell_array{2,1};

J'espère que ça répond à ta question. N'hésite pas à regarder le type des variables dans le workspace pour t'aiguiller.

Et pour ce qui est d'un tuto, pourquoi pas, mais je trouve que le fait que Matlab soit payant est un peu gênant. Par contre j'ai en tête un tuto sur les méthodes numériques en général, et les problèmes qu'elles posent, avec des applications et exercices qui pourraient utiliser Matlab ou un outil similaire.

Édité par Aabu

+0 -0
Staff

Au passage, que MATLAB soit payant n'est pas spécialement un soucis (et dans une grande partie octave propose une alternative libre et gratuite). Ce qui me gêne plus est que rédiger un tuto demande beaucoup de temps et d'expertises pour ne pas dire des approximations. Ça fait longtemps que je n'ai pas fait de MATLAB et je me suis jamais considéré expert mais je me souvient avoir déjà travaillé avec des cells. Attention de ne pas surévaluer ton niveau. MATLAB est un outils très gros et complet. Il faut bien le maîtriser pour ne pas rédiger un tuto qui apprend des anti-pattern (qui ne sont pas les mêmes que dans beaucoup de langages traditionnelle)

+0 -0
Auteur du sujet

Merci beaucoup de votre réponse à tous les deux :)

Aabu : je vais m'amuser avec les accolades !!! Merci beaucoup pour ton explication Et sinon comme Kje le dit : il existe plusieurs alternatives gratuite à Matlab. Puis en respectant certaines conditions, des versions de Matlab sont gratuites (le statut étudiant a souvent du bon) ;)

Kje : En fait, je fais un tutoriel à partir des cours que j'ai eu (donc à moins que mes profs m'apprennent n'importe quoi, je suppose que c'est bon). Cependant, je n'avais jamais rencontré de cell dans mes cours. Je ne me considère pas comme une experte, mais je pense que je connais quelques bases qui peuvent toujours aider ce qui débute. C'est pour ça que je cherche de l'aide de personne qui aurait un bon niveau pour m'aider à faire un tuto plus complet. Matlab est un outil souvent utilisé en entreprise. (Au travers de mes stages, j'en ai eu régulièrement besoin). Sauf que la première fois, je ne savais pas trop m'en servir, et aucun site ne contient absolument toutes les bases au même endroit (et ayant appris à coder en c++ et java avant la logique de programmation m'a paru difficile). C'est comme ça que j'ai eu l'idée de faire un tuto Matlab, au moins pour regrouper différentes astuces par catégorie.

Je ne suis pas unique, je suis une édition limitée. Parfois je voyage par ici

+0 -0
Staff

Salut,

Quand je dis que ça me gêne qu'il soit payant, c'est pas le logiciel en lui-même, qui est ma foi correct. En fait, je pense que c'est fondamentalement plus important de comprendre les principes de base du calcul numérique (erreurs de troncature, overflow, conditionnement de systèmes linéaires, intégration numérique etc.) que de savoir se servir d'un logiciel précis. Et dans cette optique, Matlab n'est pas le meilleur choix, parce que c'est bête de pas pouvoir se procurer le logiciel qui sert pour les exemples de code.

Par contre, c'est indéniable que Matlab est très utilisé. Je veux bien rendre service pour écrire une introduction à Matlab, mais je n'ai pas le temps ces temps-ci, parce que justement Matlab m'occupe toute la journée. Je ne suis pas expert, juste un utilisateur relativement intensif, mais sans faire quoi que ce soit d’extrêmement compliqué.

Édité par Aabu

+1 -0
Auteur du sujet

Quand tu auras un peu de temps dis le moi :) Même si c'est seulement pour relire ce que j'ai écris :)

De toute façon, pour le moment, je ne peux pas trop y travailler, je finis mon stage (sous Matlab justement)

Je ne suis pas unique, je suis une édition limitée. Parfois je voyage par ici

+0 -0
Staff

Dans tous les cas un tuto matlab ne fera jamais de mal. Fais juste attention de ne pas juste faire une copie de ton cours. C'est assez compliqué de faire un cours clair quand on maitrise mal le sujet mais à toi de me prouver le contraire ;)

Pour le reste, j'ai plus l'impression que matlab a passé son heure de gloire. Tous les labos ou entreprises où je suis allé étaient plutôt dans une optique de s'en sortir car les licences étaient extrêmement cher. Durant ma thèse on m'a ainsi demandé d'essayé de m'en passer (ce que j'ai fais sans soucis) et ma boite actuel a aussi évité matlab comme outils de calcul numérique depuis le début. Les deux ont fait le choix de Python mais je connais d'autres domaines où pour le coup c'est R qui est surtout utilisé. Bref, c'est un peu HS mais j'ai l'impression que Matlab commence a perdre de sa superbe, les solutions concurrentes sont de plus en plus utilisés (à commencer par Python)

+1 -0

Cette réponse a aidé l'auteur du sujet

Si le but est de travailler sur plusieurs cellules à la fois, la fonction cellfun vous sera peut-être utile. Ce sujet explique un peu comment l'utiliser.

Je suis un peu rouillé, mais ceci devrait fonctionner :

1
secondes = mod(datenum(tab(21:end,4), 'MM:SS')*3600*24, 3600*24)

Édité par Xavier45

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte