[Résolu] Insérer du code (Matlab)

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[Résolu] Insérer du code (Matlab)

Messagepar noobtex » Vendredi 13 Juin 2008, 11:28

Bonjour,

Je travaille sous Matlab. Le code est écrit dans un fichier code.m, comparable à du texte (.txt)

J'essaie de réaliser deux choses sous LaTeX:
1. La première est d'insérer quelques lignes de code. Comment faire pour garder toute la typologie : commentaires (%) , retours à la ligne (simple touche entrée), couleurs (ça c'est pas obligé)?

2. La seconde est d'insérer le code entier, c'est à dire le ou les fichiers en entier (j'aimerai inclure tout mon code en annexe).

Existe-t-il un environnement qui me permettrai de faire directement un copier/coller du code ou un \include du code?

Important : J'aimerai que la police (courier ... comme du texte.txt en fait) soit conservée pour que le lecteur du rapport sache tout de suite qu'il lit du code, sans l'avoir annoncé au préalable (je ne veux pas de "attention, voilà du code).

Merci
Dernière édition par noobtex le Lundi 16 Juin 2008, 09:10, édité 1 fois.
J'écris sur un clavier qwerty. Désolé si j'oublie quelques accents.
noobtex
Déca-utilisateur
 
Messages: 10
Inscription: Jeudi 05 Juin 2008, 10:24
Statut actuel: Post-bac | Ecole d'ingénieur

Publicité

Re: Insérer du code (Matlab)

Messagepar balf » Vendredi 13 Juin 2008, 12:34

Regardez peut-être ce lien : il semble que ça fasse ce que vous voulez.

http://www.mathworks.com/matlabcentral/ ... ctId=13277

B.A.
balf
Zetta-utilisateur
 
Messages: 3810
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Insérer du code (Matlab)

Messagepar rebouxo » Vendredi 13 Juin 2008, 14:36

L'extension Listing ne fait pas mathlab ?

Olivier
rebouxo
Modérateur
 
Messages: 6906
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Insérer du code (Matlab)

Messagepar D.GH » Dimanche 15 Juin 2008, 11:33

noobtex a écrit:Bonjour,

Je travaille sous Matlab. Le code est écrit dans un fichier code.m, comparable à du texte (.txt)
Existe-t-il un environnement qui me permettrai de faire directement un copier/coller du code ou un \include du code?

Merci


Bonjour,

Voici un exemple

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% http://www.cnam.fr/maths/Membres/ghorbanzadeh/
\documentclass[12pt]{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{xcolor,times}
%%%%%%%%%%%%%%%%  inclure la source %%%%%%%%%%%%%%%%%%%%
\usepackage{listings}
\newcommand*\styleC{\fontsize{9}{10pt}\usefont{T1}{ptm}{m}{n}\selectfont }
\newcommand*\styleD{\fontsize{9}{10pt}\usefont{OT1}{pag}{m}{n}\selectfont }

\makeatletter
% on fixe le langage utilisé
\lstset{language=matlab}
\edef\Motscle{emph={\lst@keywords}}
\expandafter\lstset\expandafter{%
  \Motscle}
\makeatother


\definecolor{Ggris}{rgb}{0.45,0.48,0.45}

\lstset{emphstyle=\rmfamily\color{blue}, % les mots réservés de matlab en bleu
basicstyle=\styleC,
keywordstyle=\ttfamily,
commentstyle=\color{Ggris}\styleD, % commentaire en gris
numberstyle=\tiny\color{red},
numbers=left,
numbersep=10pt,
lineskip=0.7pt,
showstringspaces=false}
%  % inclure le fichier source
\newcommand{\FSource}[1]{%
\lstinputlisting[texcl=true]{#1}
}

%%%%%%%%%
\textwidth=15cm
\textheight=21cm
%\hoffset=-2.5cm
\tolerance=9000
\hbadness=9000
\pretolerance=2500

\begin{document}

\noindent Le code matlab

\FSource{CalculPhi.m}

\end{document}


Le code matlab ' CalculPhi.m ' qui se trouve au même niveau que le fichier 'doc.tex'
Code: Tout sélectionner
function [M1]=CalculPhi(x,mu,sigma2)
% $\displaystyle{M_1=\int_{-\infty}^{x}\Phi(\frac{t-\mu}{\sigma})\,dt=\sigma\,\int_{-\infty}^{\frac{x-\mu}{\sigma}} \Phi(t)\,dt}$
n=length(x);
x1=(1/sqrt(sigma2))*(x-mu);
c=1/sqrt(2*pi);
M1=zeros(n,1);
F = inline('sqrt(sigma2)*normcdf(x,0,1)','x','sigma2');
for i=1:n
    if (x1(i)<0)
    M1(i) = c-quad(F,x1(i),0,[],[],sigma2);
    else
    M1(i) = c+quad(F,0,x1(i),[],[],sigma2);
    end
end


Bonne Journée

D.GH
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: Insérer du code (Matlab)

Messagepar nirosis » Dimanche 15 Juin 2008, 12:34

salut,
par curiosité et par intérêt, j'ai testé,
mais après compilation, j'ai un problème avec les / et les \ du fichier .m qui disparaissent...
J'ai miktex 2.7

est-ce que tu sais pourquoi?
Fichiers joints
test.pdf
fichier test compilé
(41.87 Kio) Téléchargé 942 fois
nirosis
Administrateur
 
Messages: 1806
Inscription: Samedi 28 Mai 2005, 13:48
Localisation: Orsay, France
Statut actuel: Actif et salarié | Maître de conférence

Re: Insérer du code (Matlab)

Messagepar D.GH » Dimanche 15 Juin 2008, 16:16

nirosis a écrit:salut,
par curiosité et par intérêt, j'ai testé,
mais après compilation, j'ai un problème avec les / et les \ du fichier .m qui disparaissent...
J'ai miktex 2.7

est-ce que tu sais pourquoi?


Bonjour,

Dans le code matlab il faut que la ligne suivante soit sur une seule ligne (après % ) pour qu'elle interprétée comme code LateX
Code: Tout sélectionner
% $\displaystyle{M_1=\int_{-\infty}^{x}\Phi(\frac{t-\mu}{\sigma})\,dt=\sigma\,\int_{-\infty}^{\frac{x-\mu}{\sigma}} \Phi(t)\,dt}$


D.GH
doc065.pdf
(14.29 Kio) Téléchargé 812 fois
Dernière édition par D.GH le Dimanche 29 Juin 2008, 08:28, édité 1 fois.
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: Insérer du code (Matlab)

Messagepar D.GH » Dimanche 15 Juin 2008, 16:29

Source matlab :

D.GH
Fichiers joints
doc065.pdf
(2.18 Kio) Téléchargé 1190 fois
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: Insérer du code (Matlab)

Messagepar noobtex » Lundi 16 Juin 2008, 09:10

Bonjour à tous,

Merci pour vos réponses, c'est exactement ce que je cherchais :D
J'écris sur un clavier qwerty. Désolé si j'oublie quelques accents.
noobtex
Déca-utilisateur
 
Messages: 10
Inscription: Jeudi 05 Juin 2008, 10:24
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Insérer du code (Matlab)

Messagepar D.GH » Lundi 16 Juin 2008, 21:06

noobtex a écrit:Merci pour vos réponses, c'est exactement ce que je cherchais :D


Bon $\LaTeX$.
D.GH
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: [Résolu] Insérer du code (Matlab)

Messagepar Fru » Lundi 01 Juin 2009, 16:04

Bonjour,

lorsque la ligne est trop longue dans le script matlab, ça dépasse de la marge et donc ne va à la ligne pour afficher la suite ...

Quelqu'un a une idée ?
Fru
Utilisateur
 
Messages: 1
Inscription: Lundi 01 Juin 2009, 16:00
Statut actuel: Post-bac | Master

Re: [Résolu] Insérer du code (Matlab)

Messagepar biskin81 » Jeudi 04 Juin 2009, 14:13

Bonjour,
fais attention, les derniers messages postés datent d'un an...

Pour ton problème utilise le package listings : ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/listings/listings.pdf

Puis mets breaklines=true dans les options de listings. Il y a aussi breakindent que tu peux vouloir changer.
La causalité nous y sommes à jamais asservis. Notre seul espoir, notre seule paix consiste à la comprendre. Le mérovingien
biskin81
Méga-utilisateur
 
Messages: 353
Inscription: Mercredi 29 Avril 2009, 16:32
Statut actuel: Actif et salarié

Re: [Résolu] Insérer du code (Matlab)

Messagepar Jefkiller » Mercredi 21 Avril 2010, 15:05

Bonjour,
je cherche aussi à passer du code Matlab en LateX mais il ne veut rien savoir...
ci-dessous un bout de code, le problème semble venir du nombre d'espace utilisé.. des idées ?..
Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%
%Modèle erf (loi de FICK)
%                                __                    __
%                               |              x         |
%                               |  ___________________   |
%                               |         ____________   |
%  C(x,t) = Ci - (Cs - Ci) erf  |        /               |
%                               |  2    /   D t          |
%                               |     \/                 |
%                               |__                    __|
%
%
%
%   où
%
%   C(x,t)  Profil de concentration en chlorure en fonction de la
%              profondeur x et du temps d'expostion t
%   Cs      Concentration en chlorure à la surface (x = 0)
%   Ci      Concentration en chlorure initiale (t = 0)
%   D       Coefficient de diffusion
%   t       Temps d'exposition
%
%%%%%%%%%%%%%%%%%%%%%%%
function Fick_erf

%% Initialisation
close all;
fclose all;
warning off all;
clc;
clear all;
%% Donnees
tab_temps = 0:0.5:20;%--------------------------------% tableau des valeurs
                                                      %   du temps
tab_abs   = 0:0.05:5;%--------------------------------% tableau des valeurs
                                                      %   de la profondeur
                                                     
[X,T]=meshgrid(tab_abs,tab_temps);%-------------------% maillage

Cs=35.5;%---------------------------------------------% concentration en
                                                      %   surface
Jefkiller
Hecto-utilisateur
 
Messages: 66
Inscription: Mercredi 21 Avril 2010, 14:58
Localisation: Bordeaux
Statut actuel: Actif et salarié | Chargé de recherche

Re: [Résolu] Insérer du code (Matlab)

Messagepar D.GH » Mercredi 21 Avril 2010, 16:51

Jefkiller a écrit:Bonjour,
je cherche aussi à passer du code Matlab en LateX mais il ne veut rien savoir...
ci-dessous un bout de code, le problème semble venir du nombre d'espace utilisé.. des idées ?..


Voici une idée

le code Latex pour insérer du texte matlab

Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % http://www.cnam.fr/maths/Membres/ghorbanzadeh/
  \documentclass[12pt]{article}
  \usepackage[french]{babel}
  \usepackage[T1]{fontenc}
  \usepackage[latin1]{inputenc}
  \usepackage{xcolor,times}
  %%%%%%%%%%%%%%%%  inclure la source %%%%%%%%%%%%%%%%%%%%
  \usepackage{listings}
  \newcommand*\styleC{\fontsize{9}{10pt}\usefont{T1}{ptm}{m}{n}\selectfont }
  \newcommand*\styleD{\fontsize{9}{10pt}\usefont{OT1}{pag}{m}{n}\selectfont }

  \makeatletter
  % on fixe le langage utilisé
  \lstset{language=matlab}
  \edef\Motscle{emph={\lst@keywords}}
  \expandafter\lstset\expandafter{%
    \Motscle}
  \makeatother


  \definecolor{Ggris}{rgb}{0.45,0.48,0.45}

  \lstset{emphstyle=\rmfamily\color{blue}, % les mots réservés de matlab en bleu
  basicstyle=\styleC,
  keywordstyle=\ttfamily,
  commentstyle=\color{Ggris}\styleD, % commentaire en gris
  numberstyle=\tiny\color{red},
  numbers=left,
  numbersep=10pt,
  lineskip=0.7pt,
  showstringspaces=false}
  %  % inclure le fichier source
  \newcommand{\FSource}[1]{%
  \lstinputlisting[texcl=true]{#1}
  }

  %%%%%%%%%
  \textwidth=15cm
  \textheight=21cm
  %\hoffset=-2.5cm
  \tolerance=9000
  \hbadness=9000
  \pretolerance=2500

  \begin{document}

  \noindent Le code matlab

  \FSource{FICK.m}

  \end{document}


le fichier source matlab, s'appelle FICK.m dans lequel on passe des commande LaTeX :
Attention : une ligne ne doit contenir qu'un seul %

Code: Tout sélectionner
%Modèle erf (loi de FICK)
%                               
%  $C(x,t) = Ci - (Cs - Ci) erf(\frac{x}{2\sqrt{Dt}})$
%
%
%   où
%
%   $C(x,t)$  Profil de concentration en chlorure en fonction de la
%              profondeur x et du temps d'expostion t
%   $Cs$      Concentration en chlorure à la surface (x = 0)
%   $Ci$      Concentration en chlorure initiale (t = 0)
%   $D$       Coefficient de diffusion
%   $t$       Temps d'exposition
%

function Fick_erf

% Initialisation
close all;
fclose all;
warning off all;
clc;
clear all;
% Donnees
tab_temps = 0:0.5:20;%--------------- tableau des valeurs du temps
tab_abs   = 0:0.05:5;%--------------- tableau des valeurs de la profondeur

[X,T]=meshgrid(tab_abs,tab_temps);%---------- maillage

Cs=35.5;%----------------------------------- concentration en surface


D.GH
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: [Résolu] Insérer du code (Matlab)

Messagepar Jefkiller » Mercredi 21 Avril 2010, 17:08

Ok pour le % unique, je vais changer ça de suite dans mes codes.
Cependant, il n'a pas l'air de vouloir écrire ma jolie formule :
Code: Tout sélectionner
%                                __                    __
%                               |              x         |
%                               |  ___________________   |
%                               |         ____________   |
%  C(x,t) = Ci - (Cs - Ci) erf  |        /               |
%                               |  2    /   D t          |
%                               |     \/                 |
%                               |__                    __|
%
%


La gestion des espaces est donc impossible lors de la transition ?
Jefkiller
Hecto-utilisateur
 
Messages: 66
Inscription: Mercredi 21 Avril 2010, 14:58
Localisation: Bordeaux
Statut actuel: Actif et salarié | Chargé de recherche

Re: [Résolu] Insérer du code (Matlab)

Messagepar D.GH » Mercredi 21 Avril 2010, 19:08

Jefkiller a écrit:Ok pour le % unique, je vais changer ça de suite dans mes codes.
Cependant, il n'a pas l'air de vouloir écrire ma jolie formule :


La formule est devenue : $C(x,t) = Ci - (Cs - Ci) erf(\frac{x}{2\sqrt{D t}})$ qui est plus parlant.

D.GH
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: [Résolu] Insérer du code (Matlab)

Messagepar Jefkiller » Jeudi 22 Avril 2010, 07:34

Re-bonjour,
il est vrai que la formule est plus explicite comme cela, mais ce m'oblige à la noter ainsi dans matlab et là : \frac{}{} est moins explicite du coup.. question de choix ?..ou vous ne faite pas d'explication de votre code de calcul dans MAtlab pour renseigner les personnes qui mettrait le nez dedans ? :wink:

Une dernière question (peut-être :roll: ), concernant la gestion des espaces : il n'y a pas un moyen de faire lire/écrire à LateX plusieurs espaces ?
Jefkiller
Hecto-utilisateur
 
Messages: 66
Inscription: Mercredi 21 Avril 2010, 14:58
Localisation: Bordeaux
Statut actuel: Actif et salarié | Chargé de recherche

Re: [Résolu] Insérer du code (Matlab)

Messagepar D.GH » Jeudi 22 Avril 2010, 11:08

Jefkiller a écrit:Une dernière question (peut-être :roll: ), concernant la gestion des espaces : il n'y a pas un moyen de faire lire/écrire à LateX plusieurs espaces ?


Pour écrire des espaces , par exemple
Code: Tout sélectionner
$\frac{x\, y}{x\hspace{1cm} y }$

donne $\frac{x\, y}{x\hspace{1cm} y }$

D.GH
D.GH
Méga-utilisateur
 
Messages: 398
Inscription: Lundi 02 Juillet 2007, 15:15

Re: [Résolu] Insérer du code (Matlab)

Messagepar Jefkiller » Jeudi 22 Avril 2010, 12:21

D.GH a écrit:
Jefkiller a écrit:Une dernière question (peut-être :roll: ), concernant la gestion des espaces : il n'y a pas un moyen de faire lire/écrire à LateX plusieurs espaces ?


Pour écrire des espaces , par exemple
Code: Tout sélectionner
$\frac{x\, y}{x\hspace{1cm} y }$

donne $\frac{x\, y}{x\hspace{1cm} y }$

D.GH


hop une chose de plus apprise :D
et un truc du genre :
| x
avec admettons 4 espaces, entre | et x, il ne sait pas le reconnaître tout seul, c'est bien ça ? Aucun moyen de lui apprendre à le gérer ?
Jefkiller
Hecto-utilisateur
 
Messages: 66
Inscription: Mercredi 21 Avril 2010, 14:58
Localisation: Bordeaux
Statut actuel: Actif et salarié | Chargé de recherche

Re: [Résolu] Insérer du code (Matlab)

Messagepar clemclem » Lundi 19 Juillet 2010, 15:56

D.GH a écrit:
Code: Tout sélectionner
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % http://www.cnam.fr/maths/Membres/ghorbanzadeh/
  \documentclass[12pt]{article}
  \usepackage[french]{babel}
  \usepackage[T1]{fontenc}
  \usepackage[latin1]{inputenc}
  \usepackage{xcolor,times}
  %%%%%%%%%%%%%%%%  inclure la source %%%%%%%%%%%%%%%%%%%%
  \usepackage{listings}
  \newcommand*\styleC{\fontsize{9}{10pt}\usefont{T1}{ptm}{m}{n}\selectfont }
  \newcommand*\styleD{\fontsize{9}{10pt}\usefont{OT1}{pag}{m}{n}\selectfont }

  \makeatletter
  % on fixe le langage utilisé
  \lstset{language=matlab}
  \edef\Motscle{emph={\lst@keywords}}
  \expandafter\lstset\expandafter{%
    \Motscle}
  \makeatother


  \definecolor{Ggris}{rgb}{0.45,0.48,0.45}

  \lstset{emphstyle=\rmfamily\color{blue}, % les mots réservés de matlab en bleu
  basicstyle=\styleC,
  keywordstyle=\ttfamily,
  commentstyle=\color{Ggris}\styleD, % commentaire en gris
  numberstyle=\tiny\color{red},
  numbers=left,
  numbersep=10pt,
  lineskip=0.7pt,
  showstringspaces=false}
  %  % inclure le fichier source
  \newcommand{\FSource}[1]{%
  \lstinputlisting[texcl=true]{#1}
  }

  %%%%%%%%%
  \textwidth=15cm
  \textheight=21cm
  %\hoffset=-2.5cm
  \tolerance=9000
  \hbadness=9000
  \pretolerance=2500

  \begin{document}

  \noindent Le code matlab

  \FSource{FICK.m}

  \end{document}



J'ai essayé votre code, qui fonctionne quasiment parfaitement, cependant j'utilise des fonctions qui utilisent beaucoup de paramètres et donc le code dépasse largement la page LaTeX, voyez-vous un moyen de résoudre ce problème?

Merci d'avance
clemclem
Déca-utilisateur
 
Messages: 42
Inscription: Lundi 17 Décembre 2007, 20:49
Statut actuel: Post-bac | Master

Re: [Résolu] Insérer du code (Matlab)

Messagepar biskin81 » Lundi 19 Juillet 2010, 17:31

Utilise l'option
Code: Tout sélectionner
breaklines=true
du package listings. Je te conseille d'aller jeter un œil à la doc, c'est assez impressionnant tout ce qui est possible de personnaliser... ;)
La causalité nous y sommes à jamais asservis. Notre seul espoir, notre seule paix consiste à la comprendre. Le mérovingien
biskin81
Méga-utilisateur
 
Messages: 353
Inscription: Mercredi 29 Avril 2009, 16:32
Statut actuel: Actif et salarié

Suivante

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Google Adsense [Bot] et 9 invités