Bonjour !
Je debute completement en Matlab et j'ai un peu du mal a appliquer. Je voudrai charger des donnees d'un fichier texte vers Matlab et en tracer la courbe sur Matlab. Comment faire?
Je vous remercie d'avance de votre aide!
Bonjour !
Je debute completement en Matlab et j'ai un peu du mal a appliquer. Je voudrai charger des donnees d'un fichier texte vers Matlab et en tracer la courbe sur Matlab. Comment faire?
Je vous remercie d'avance de votre aide!
Vu que tu veux importer des données avec MATLAB et que tu débutes, mon conseil c'est de lire la doc sur la partie : Importing Data. Tu trouveras les différentes méthodes que tu peux utiliser : en ligne de commande ou via l'outil Import Wizard par exemple.
Une autre section qui répondra à tes questions : Data Processing
Le premier chapitre est sur l'import et l'export des données et le second est pour ta seconde question puisqu'il s'intitule "Plotting Data"
Je te remercie pour ta reponse! J'ai bien consulte les 2 liens que tu propose. J'ai donc esaye d'appliquer cela a ce que je fais.
Alors voici mon code, mais cela bug, je ne vois pas du tout ou est l'erreur :
Le fichier que j'essaye de charger est un .txt, j'ai donc essaye de changer la premiere ligne en remplacant le .dat en .txt , mais cela ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 load 9-8-10_85cp_ b-w two coverslips_f1sec.dat [n,p] = size(9-8-10_85cp_ b-w two coverslips_f1sec) n = 175 p = 1 t = 1:n; plot(t,x90x2D80x2D10_85cp_B0x2DwTwoCoverslips_f1sec), legend('Force') xlabel('Time'), ylabel('Force')
Les message d'erreur sur Matlab sont les suivents :
Je vous remercie de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Error in ==> Untitled2 at 7 load x90x2D80x2D10_85cp_B0x2DwTwoCoverslips_f1sec.dat ??? Error: File: Untitled2.m Line: 8 Column: 20 The input character is not valid in MATLAB statements or expressions.
Bonjour,
Tu devrais plutôt utiliser la forme fonctionnelle de la fonction LOAD, c'est plus clair dans un programme (et ca résoudra peut-être ton problème)
Duf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 load('9-8-10_85cp_ b-w two coverslips_f1sec.dat');
Merci beaucoup!
J'ai donc essaye, mais ca ne veut toujours pas charger le fichier. C'est le message d'erreur que je recoit.
Voici le code :
et voici les messages d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 load ('9-8-10_85cp_ b-w two coverslips_f1sec.lvm'); y = '9-8-10_85cp_ b-w two coverslips_f1sec.lvm'; [n,p] = size(y); n = 175; p = 1; t = 1:n; plot(t,y), legend('Force') xlabel('Time'), ylabel('Force')
Merci beaucoup!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3Error in ==> Untitled2 at 7 load ('9-8-10_85cp_ b-w two coverslips_f1sec.lvm');
C'est toujours une mauvaise chose que de mettre des espaces et/ou des caractères spéciaux dans le nom des fichiers.
Essaie à nouveau en renommant le fichier.
Merci Dut pour ta reponse.
J'ai donc essaye en renommant le fichier "Essai"
Et on m'affiche ce message d'erreur :
Je desespere completement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ??? Error using ==> load Unable to read file Essai: No such file or directory. Error in ==> Untitled2 at 7 load ('Essai');
Par ailleurs, j'ai une autre question. les fichiers que je veux charger possedent un "header". comment faire pour que seuls les valeurs soient mises dans un tableau, sans prendre en consideration les informations contenues dans le header?
Je vous remercie d'avance de votre aide
As tu lu mon premier lien sur Importing Data ?
Il dit comment charger des fichiers avec des en têtes
Concernant ton message d'erreur cela signifie juste que MATLAB ne trouve pas ton fichier Essai. Est ce qu'il est bien dans ton répertoire courant? si ce n'est pas le cas, il faut indiquer le path complet avec load ou ajouter ce path dans le path MATLAB. Vérifie aussi qu'il s'appelle bien Essai.
Merci!
C'est bon j'arrive a charger mon fichier et a enlever les header.
Cependant, maintenant je veux tracer le courbe de ces donnees en fonction du temps . Je fais donc la boucle for suivente :
Le probleme, c'est qu'il considere que le temps que j'ai nomme "t" est egal constamment a 1 et ne va pas de 1 jusqu'a n. J'obtient donc toutes mes valeurs alignees, c'est a dire une droite . Je ne comprends pas pourquoi...
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 n=input ('How many lines do you have?') [n,p] = size('Essai'); p = 1; input ('A = ') input ('Period = ') for t=1:n plot(t,X,'b'), title('Force'); xlabel('Time') ylabel('Force') end
Je vous remercie encore une fois
surement que n vaut 1 et donc ta boucle for t=1:n ne fait qu'une seule itération
pour le vérifier que vaut n dans ta ligne ?:
Code : Sélectionner tout - Visualiser dans une fenêtre à part [n,p] = size('Essai')
Mon n vaut 816 ici... donc je ne comprend pas du tout, je ne voit pas ou est l'erreur.
Je peux te donnerle debut de mon code (la partie qui charge le fichier et enleve les headers) pour voir si une erruer ne s'y est pas glisse:
Je vous remercie de votre aide!!!
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 fid = fopen('Essai.lvm','r'); % Open text file InputText=textscan(fid,'%s',12,'delimiter','\n'); % Read strings delimited by a carriage return Intro=InputText{1}; disp(Intro); Block = 1; % Initialize block index while (~feof(fid)) % For each block... sprintf('Block: %s', num2str(Block)); % Display block number InputText=textscan(fid,'%s',9,'delimiter','\n'); % Read header line HeaderLines{Block,1}=InputText{1}; disp(HeaderLines{Block}); InputText=textscan(fid,'Num SNR=%f'); % Read parameter value NumCols=InputText{1}; FormatString=repmat('%f',1,NumCols); % Create format string based on parameter InputText=textscan(fid,FormatString,'delimiter',','); % Read data block Data{Block,1}=cell2mat(InputText); % Convert to numerical array from cell [NumRows,NumCols]=size(Data{Block}); % Size of table disp(cellstr([xlate('Table data size: ') num2str(NumRows) ' x ' num2str(NumCols)])); disp(' '); % New line eob=textscan(fid,'%s',1,'delimiter','\n'); % Read and discard EOB marker ('EOF' in this case) Block = Block+1; % Increment block index end
Il y a quoi dans X ?
Pourquoi fais-tu une boucle ?
Là tu lui demande de tracer :
Donc au final le seul tracé que tu auras sera [n, X] donc un point ou une ligne selon ce qu'il y a dans X.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 plot(1,X,'b') %on efface plot(2,X,'b')
De plus :
Ne va sûrement pas donner n=816 mais n=5 ce qui est la longueur de la chaîne de caractères 'Essai'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part [n,p] = size('Essai');
Si tu cherches la taille du contenu de la variable Essai tu dois faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part [n,p]=size(Essai);
Merci!
Le probleme venait effectivement du fait que je faisai une boucle for!
Merci beaucoup!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager