Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster -> FAQ MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 16h08   #1
Invité de passage
 
Femme FENNI
Étudiant
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme FENNI
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : février 2012
Messages : 7
Points : 0
Points : 0
Par défaut [fprintf] \n et retour à la ligne sous linux

Bonjour
Lors du développement d'une fonction de calcul de champs électromagnétique, j'ai rencontré un problème très bizarre, j'espère que vous pourriez m'aider à découvrir la source du problème: Alors voici l'énigme :
Sur mon poste windows, Matlab (MATLAB 7.13.0.564 (R2011b)) reconnait à l'intérieur de ma fonction le '\n' comme étant le retour à la ligne sans aucun problème: exemple :
Code :
1
2
3
4
 
Filename = 'document_simulation_espace_libre';
fichier1=[Filename,'.dat'];
fid1= fopen([Rep_Res,fichier1],'wt');
Jusqu'à l'instant aucun problème.MAIS dès que j'envoie mes codes sur un serveur de Calcul (version serveur Linux 5), Mr Matlab (R2011b) ne reconnait pas le \n, il m'écrit tout à la même ligne jusqu'à arriver à la fiiiiin du document.
J'ai essayé
Code :
1
2
fid1= fopen([Rep_Res,fichier1],'at');
ça ne marche toujours pas. Quelqu'un svp pourra me résoudre ce problème.
Merci d'avance.
annoussa86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h17   #2
Invité de passage
 
Femme FENNI
Étudiant
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme FENNI
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : février 2012
Messages : 7
Points : 0
Points : 0
Par défaut sachant que

j'ai voulu ajouter que la version serveur de Matlab reconnait comme même le \n comme étant le retour à la ligne avec la fonction sprintf :
Code :
1
2
3
4
5
6
7
8
>> sprintf(['annie','\n','florence','\n','alice'])

ans =

annie
florence
alice
donc le problème est , parait il, propre à la fonction fprintf. quelqu'un aura une solution s'il vous plait !!
annoussa86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h28   #3
Membre confirmé
 
Homme Thomas Pegot
Étudiant
Inscription : janvier 2012
Messages : 195
Détails du profil
Informations personnelles :
Nom : Homme Thomas Pegot
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 195
Points : 299
Points : 299
Logiquement fprintf fait la même chose que sprintf sauf qu'il écrit dans un fichier (cf doc sprintf).
Est-ce que c'est possible de voir ta commande pour fprintf?
Gakusei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h42   #4
Invité de passage
 
Femme FENNI
Étudiant
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme FENNI
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : février 2012
Messages : 7
Points : 0
Points : 0
d'abord merci pour l'intérêt. Voilà un bout de code qui marche très bien sous windows :
Code :
1
2
3
4
fprintf(fid1,['Les methodes utilisees sont : ',methodes_names, '\n', '\n']);
fprintf(fid1,['Nbre d''experience  = ',num2str(nbre_experience), '\n', '\n']);
fprintf(fid1,['Le parametre en question est -',param_name,'-', '\n']);
Avec la même syntaxe sur Linux ça me donne ceci :
Code :
1
2
Les methodes utilisees sont : CBFM Normale2;CBFM Extended2;MoMNbre d'experience  = 1Le parametre en question est -Pas CBFM-
tout sur la même ligne avec le reste.
Et ce qui est plus bizarre c'est qu'on le collant dans l’éditeur de développez.com il a repris la forme qui m'intéresse comme si ça dépend de l'éditeur.

ET EN VERIFIANT SUR MON CODE de lecture et d'affichage, il s’avère qu'il le lit comme je l'ai écrit (c à d en tenant compte du \n) et pas comme l'éditeur l'affiche !!! c'est bizarre non ?
annoussa86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h58   #5
Dut
Rédacteur/Modérateur
 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 12 918
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 12 918
Points : 15 908
Points : 15 908
Tu n'utilises pas FPRINTF de la bonne manière.

Voici la syntaxe correcte :
Code :
1
2
3
4
fprintf(fid1,'Les methodes utilisees sont : %s\n\n',methodes_names);
fprintf(fid1,'Nbre d''experience  = %d\n\n',nbre_experience);
fprintf(fid1,'Le parametre en question est -%s-\n',param_name);
__________________
Mes contributions MATLAB (R2009a - Windows & Linux)

• J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
• Des larmes coulèrent doucement des yeux fermés du vieil homme. Moi je pleurais comme un enfant, que d'ailleurs pour lui je ne cesserais d'être ma vie durant (Amkoullel)

• Lâché de Mogwai sur St Malo... aie aie aie... ouille ouille ouille
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 17h25   #6
Membre confirmé
 
Homme Thomas Pegot
Étudiant
Inscription : janvier 2012
Messages : 195
Détails du profil
Informations personnelles :
Nom : Homme Thomas Pegot
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2012
Messages : 195
Points : 299
Points : 299
C'est vrai que la syntaxe est à revoir .

Sinon tu peux aussi essayer de remplacer \n par \r\n pour le retour de charriot:

doc fprintf
Citation:
fprintf(fid, '%6.2f %12.8f\n', y);
MATLAB import functions, all UNIX applications, and Microsoft Word and WordPad recognize '\n' as a newline indicator. However, if you plan to read the file with Microsoft Notepad, use '\r\n' to move to a new line when writing. For example, replace the previous call to fprintf with the following:

fprintf(fid, '%6.2f %12.8f\r\n', y);
Gakusei est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 18h21   #7
Invité de passage
 
Femme FENNI
Étudiant
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Nom : Femme FENNI
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : février 2012
Messages : 7
Points : 0
Points : 0
Par défaut Merci pour vos réponses

Enfin j'ai découvert qu'il n'y avait de problèmes avec le \n puisque mes codes d'affichage sous windows lisent avec tline = fgetl(fid1); le retour à la ligne même s'il ne se voit pas sur Blocs Note. Le problème qui a empêché mes codes d'afficher les résultats est totalement différent: tout ce qui s'écrit avec accent n'est pas acceptés sur ma version serveur donc logiquement il ne reconnait plus les lignes que je lui demande de reconnaître --> des vecteurs vides ---> des problèmes d'affichage. A titre d'exemple
Code :
1
2
sprintf('Nombre d''emetteurs utilisés pour appliquer la CBFM  = %d ',Emetteur.N_Emetteur);
donnera sous la version linux un n'importe quoi au niveau du mot utilisés.
Merci beaucoup pour vos réponses et votre intérêt.
annoussa86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h31.


 
 
 
 
Partenaires

Hébergement Web