Bonjour tout le monde
Je me nomme Adrien et je suis étudiant en 3eme année d'école d'ingé. Là, je suis en Espagne pour un stage (désolé du coup si je me loupe dans les accents).
Je suis en train faire une simulation sous Matlab et Simulink d'un robot.
Ma version de logiciel est la 7.9.0.529 (R2009b)
Grâce à des .m, je génère mon modèle Simulink avec des variables que l'utilisateur donne via une interface graphique.
Cette interface est composée du nom du modèle simulé, du nombre de partie du robot et du temps de simulation.
L'utilisateur appuie alors sur un bouton et une matrice apparait (toujours dans l'interface) afin que l'utilisateur entre les paramètres de chaque partie.
Toutes ces données sont alors stockées dans un fichier texte...
On se retrouve ainsi avec un fichier du type
La matrice de données numériques est la retranscription d'une matrice générée par le GUI.(voir le code à la fin du post)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 systeme1 | Nb_partie(=10) | Tps_simu Tramo_1 | Tramo_2 | Tramo_3 | Tramo_4 | Tramo_5 | Tramo_6 | Tramo_7 | Tramo_8 | Tramo_9 | Tramo_10 | Longitud: | 0 0 0 0 0 0 0 0 0 0 | Masa: | 0 0 0 0 0 0 0 0 0 0 | Diametro: | 0 0 0 0 0 0 0 0 0 0 | AlphaYp: | 0 0 0 0 0 0 0 0 0 0 | AlphaZp: | 0 0 0 0 0 0 0 0 0 0 | AlphaY: | 0 0 0 0 0 0 0 0 0 0 | AlphaZ: | 0 0 0 0 0 0 0 0 0 0 | systeme2 | Nb_partie(=15) | Tps_simu Tramo_1 | Tramo_2 | Tramo_3 | Tramo_4 | Tramo_5 | Tramo_6 | Tramo_7 | Tramo_8 | Tramo_9 | Tramo_10 | Tramo_11 | Tramo_12 | Tramo_13 | Tramo_14 | Tramo_15 | Longitud: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | Masa: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | Diametro: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | AlphaYp: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | AlphaZp: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | AlphaY: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | AlphaZ: | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
et c'est là qu'arrive le problème !!!
Le but du jeu est de pouvoir récupérer les données correspondantes à un système.
L'utilisateur demande de simuler le systeme2, il faut donc lire le texte, repérer le systeme 2 parmi tous les autres, puis récupérer les 7 paramètres pour chaque trame de ce systeme.
J'ai cherché partout, essayer les fonctions textscan, textread, importdata et d'autres, mais je n'arrive pas à sortir quelque chose de propre.
En effet, le nombre de trame pour chaque système peut varier impliquant des erreurs de dimension pour des fonctions.
Le plus souvent, je me retrouve soit avec une structure illogique soit avec une cellule 1x1, comprenant une cellule Nx1 avec '|' comme délimiteur.
J'espère que la description est assez complète pour avoir un peu d'aide, sinon, je vous donnerais les infos demandées bien entendu
Merci beaucoup !!!!!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 function Button_Guardar_Callback(hObject, eventdata, handles) % hObject handle to Button_Guardar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) tabledata =get(handles.Table,'data'); % on récupère les valeurs de Table du gui In_Numero=getappdata(0,'In_Numero'); %on récupère la valeur du nombre de trame de l'editbox stockée In_Nombre=getappdata(0,'In_Nombre'); %nom du systeme In_Tiempo=getappdata(0,'In_Tiempo'); %tps de simu N_Tramo=getappdata(0,'N_Tramo'); %Nom de la trame du type "Tramo_i" fid=fopen('Sistemas.txt','a+'); fprintf(fid,'%s', [In_Nombre{1},' | ', In_Numero,' | ', In_Tiempo] ); %fprintf(fid,['\n\t\t',' | ']); fprintf(fid,'\n'); for k=1:str2num(In_Numero) %Gui_Tramo_N fprintf(fid,'%s',[N_Tramo{k},' | ']); end; fprintf(fid,'\n%s',['Longitud:', ' | ' ,[num2str(tabledata(1,:)),' | ']]); fprintf(fid,'\n%s',['Masa:', ' | ' ,[num2str(tabledata(2,:)),' | ']]); fprintf(fid,'\n%s',['Diametro: ', '| ' ,[num2str(tabledata(3,:)),' | ']]); fprintf(fid,'\n%s',['AlphaYp: ', ' | ' ,[num2str(tabledata(4,:)),' | ']]); fprintf(fid,'\n%s',['AlphaZp: ', ' | ' ,[num2str(tabledata(5,:)),' | ']]); fprintf(fid,'\n%s',['AlphaY: ', ' | ' ,[num2str(tabledata(6,:)),' | ']]); fprintf(fid,'\n%s',['AlphaZ: ', ' | ' ,[num2str(tabledata(7,:)),' | ']]); fprintf(fid,'\n\n'); assignin('base','TableData',tabledata); % on met ds le workspace le tableau de données clear all; close all;
Partager