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

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 |
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)

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;