Aller au contenu

Personnaliser les couleurs !



Photo

programmation matlab


  • Veuillez vous connecter pour répondre
11 réponses à ce sujet

#1 guygrun

guygrun

    Ewok

  • INpactien
  • 3 messages

Posté 22 février 2005 - 16:31

Matlab : Prise en main :

1) Environnement de travail :

Commande help

» help

HELP topics:

matlab\general       -  General purpose commands.
matlab\ops           -  Operators and special characters.
matlab\lang          -  Programming language constructs.
matlab\elmat         -  Elementary matrices and matrix manipulation.
matlab\elfun         -  Elementary math functions.
matlab\specfun       -  Specialized math functions.
matlab\matfun        -  Matrix functions - numerical linear algebra.
matlab\datafun       -  Data analysis and Fourier transforms.
matlab\polyfun       -  Interpolation and polynomials.
matlab\funfun        -  Function functions and ODE solvers.
matlab\sparfun       -  Sparse matrices.
matlab\graph2d       -  Two dimensional graphs.
matlab\graph3d       -  Three dimensional graphs.
matlab\specgraph     -  Specialized graphs.
matlab\graphics      -  Handle Graphics.
matlab\uitools       -  Graphical user interface tools.
matlab\strfun        -  Character strings.
matlab\iofun         -  File input/output.
matlab\timefun       -  Time and dates.
matlab\datatypes     -  Data types and structures.
matlab\dde           -  Dynamic data exchange (DDE).
matlab\demos         -  Examples and demonstrations.
toolbox\signal       -  Signal Processing Toolbox.
toolbox\control      -  Control System Toolbox.
control\obsolete     -  (No table of contents file)
stateflow\stateflow  -  Stateflow
stateflow\sfdemos    -  (No table of contents file)
simulink\simulink    -  Simulink 
simulink\blocks      -  Simulink block library.
simulink\simdemos    -  Simulink demonstrations and samples.
simulink\dee         -  Differential Equation Editor
toolbox\tour         -  An interface to Matlab demos, installed Toolboxes demos, and information
toolbox\local        -  Preferences.

La fonction help permet de voir l’aide de matlab.

Commande cd

» cd

C:\MATLAB\bin

Permet de voir le fichier ou sont enregistrés les fichiers *.m (change current working directory).

Commande ls

» ls

.                    license.dat          msvcirt.dll          
..                   lmgr325a.dll         msvcopts.bat         
bccengmatopts.bat    matfopts.bat         msvcrt.dll           
bccopts.bat          matlab.exe           mwoles05.dll         
cmex.bat             medit.exe            perl.exe             
fmat.dll             mex.bat              perl100.dll          
fmex.bat             mfc42.dll            showdlls.exe         
fmex.dll             mipcole.dll          w32ssi.dll           
fmx.dll              ml_16.dll            wat11copts.bat       
gx1242r.dll          mlapp.tlb            wat11engmatopts.bat  
libeng.dll           mlptool.exe          watcopts.bat         
libmat.dll           msctof.dll           watengmatopts.bat    
libmccmx.dll         msfopts.bat          wsptool.exe          
libmi.dll            msvc50engmatopts.bat 
libmx.dll            msvc50opts.bat       
libut.dll            msvcengmatopts.bat

Permet de voir tous les fichiers présent dans le répertoire courrant.

Commande dir

» dir

.                    license.dat          msvcirt.dll          
..                   lmgr325a.dll         msvcopts.bat         
bccengmatopts.bat    matfopts.bat         msvcrt.dll           
bccopts.bat          matlab.exe           mwoles05.dll         
cmex.bat             medit.exe            perl.exe             
fmat.dll             mex.bat              perl100.dll          
fmex.bat             mfc42.dll            showdlls.exe         
fmex.dll             mipcole.dll          w32ssi.dll           
fmx.dll              ml_16.dll            wat11copts.bat       
gx1242r.dll          mlapp.tlb            wat11engmatopts.bat  
libeng.dll           mlptool.exe          watcopts.bat         
libmat.dll           msctof.dll           watengmatopts.bat    
libmccmx.dll         msfopts.bat          wsptool.exe          
libmi.dll            msvc50engmatopts.bat 
libmx.dll            msvc50opts.bat       
libut.dll            msvcengmatopts.bat

Permet de lister tous les fichiers du répertoire courrant. (idem que la fonction ls)(directory listing)

Commande pwd (present word directory)

» pwd

ans =

C:\MATLAB\bin

Comme la commande CD il permet de voir ou se trouve le répertoire courrant.

Commande who

» who

Your variables are:

Ans

Permet de faire le listing de toutes les variables utilisées.

Commande whos

» whos
  Name      Size         Bytes  Class

  ans       1x13            26  char array
  x         1x1              8  double array

Grand total is 14 elements using 34 bytes

Permet aussi de lister les variables utilisées mais avec plus de détails, la longueur de la variable et sont format sont mentionnées.

Commande clear

» clear

Permet d’effacer toutes les variables.

2) Manipulation de vecteur :

Commande [ ]

» [1 2 3 4]

ans =

     1     2     3     4

Permet la création d’un vecteur.

Commande length

» length(ans)

ans =

     4

Permet de savoir le nombre de colonne d’un vecteur ou d’une matrice.

Commande size

» size(ans)

ans =

     1     4

Permet de savoir le nombre de ligne et de colonne du vecteur ou de la matrice.


3) Programmation :


 Commande if

 If test
  Action;
  End

 Commande switch

 switch variavle
  case1, disp(‘	‘)
  case2, disp(‘	‘)
  case3, disp(‘	‘)
  otherwise, disp(‘	‘)
  end

 Commande for

 For I=[1 : N] ce qui remplace for(i=1, i<N, i++)
  	If rand (I) <= (0,1)
    M(I)=0;
  	Else	M(I)=1;
  	End
  End

 Commande fonction

 Fonction [M]  = message (N)

M le résultat
N le paramètre d’entrée
Le nom d’appelle de la fonction doit être le même que le nom du fichier


4) Graphiques :


 plot (axe des x, axe des y)

ex :
plot (t,y)  -> y(t)

 subplot ( 2, 2, 1)
 coupe la fenêtre affichage graphique

 hold
 permet d’afficher plusieurs graphique sur la même figure

 title (‘ Titre ‘)


 xlabel (‘ nom des axes des x ‘)

 ylabel (‘ nom des axes des y ‘)

 axis ([-pi,pi , -1,1]) permet de dimensionner les axes du graphique

 clf clear figure

 zoom on permet ensuite de zoomer sur le graphique









5) Création des variables :

% Déclaration des variables
N=8192;
Fe=8000;
Te=1/Fe;
t=[(1:N)*Te];
f=[0:Fe/N:Fe];

6) Génération d’un sinus :

% Déclaration de la fonction sinus
y=10*sin(200*pi*t);
subplot(3,1,1);
plot(t,y);
axis([0 0.1 -11 11]);
title('Allure temporelle du sinus');
xlabel('Temps (sec)');
grid;

7) voir question 10 pour la courbe

% Génération du bruit
sigma = 1;	% variance du bruit
moy = 0;  % moyenne
bruit = moy + sigma*randn(1,N);	
subplot(3,1,2);
plot(t,bruit);
axis([0 0.1 -5 5]);
title('Allure temporelle du bruit');
xlabel('Temps (sec)');
grid;


:roll: Génération d’un bruit blanc gaussien : voir question 7


9) Visualisation de la courbe : bruit voir question 10


10) Graphique

% Bruit + Sinus
signal = y + bruit;
subplot(3,1,3);
plot(t,signal);
axis([0 0.1 -20 20]);
title('Allure temporelle du bruit avec le sinus');
xlabel('Temps (sec)');
grid;


Mis en forme par theo

Modifié par theocrite, 28 février 2005 - 23:28.


#2 guygrun

guygrun

    Ewok

  • INpactien
  • 3 messages

Posté 22 février 2005 - 16:36

11) Augmentation de la puissance du bruit (spectre)

% Déclaration des variables
N=8192;
Fe=8000;
Te=1/Fe;
t=[(1:N)*Te];
f=[(1:N)]*Fe/N;

% Déclaration de la fonction sinus
y=10*sin(200*pi*t);
spectre=20*LOG10(abs(fft(y)));
subplot(4,1,1);
plot(f,spectre);
axis([0 8000 0 100]);
title('Allure fréquencielle du sinus');
xlabel('Fréquence (Hz)');
grid;

% Génération du bruit
sigma = 1;	% variance du bruit
moy = 0;  % moyenne
bruit = moy + sigma*randn(1,N);
spectre_bruit=20*LOG10(abs(fft(bruit)));
subplot(4,1,2);
plot(f,spectre_bruit);
axis([0 8000 0 100]);
title('Allure fréquencielle du bruit');
xlabel('Fréquence (Hz)');
grid;

% Bruit + Sinus
signal = y + bruit;
spectre2=20*LOG10(abs(fft(signal)));
subplot(4,1,3);
plot(f,spectre2);
axis([0 8000 0 100]);
title('Allure fréquencielle du bruit avec le sinus');
xlabel('Fréquence (Hz)');
grid;

% Bruit + Sinus (avec fort bruit)
signal2 = y + 10*bruit;
spectre3=20*LOG10(abs(fft(signal2)));
subplot(4,1,4);
plot(f,spectre3);
axis([0 8000 0 100]);
title('Allure fréquencielle du sinus + bruit');
xlabel('Fréquence (Hz)');
grid;

On remarque que les raies du spectre se rapproche de plus en plus est ce dépasse même après f0=4000Hz.


14) Fonction message.m

function[M]=message(N)
M=[1:1:N];

for I=[1:N]
   if rand(1)<=0.5
      M(I)=0;
   else M(I)=1;
   end
end


15) Fonction nrz.m

function [Mt]=nrz(M,N)
k=10;
c=0;        	

for i=1:N,
   if M(i)==1
      for j=c+1:c+k,
         Mt(j)=1;
      end
   else M(i)==0
    	for j=c+1:c+k,
      	Mt(j)=0;
      end
   end
c=c+k;
end

trancription en logique négative +12V et –12V

function[Mrs]= nrz2(Mt,A,k,N)

for i=1:k*N,
   if Mt(i)== 0
      Mrs(i)=-A;
   else
    	Mrs(i)=A;
   end
end

On remarque que le codage NRZ c’est juste l’inverse de l’état logique que l’on a au départ. Sur le spectre le spectre on remarque qu’il y a des pics vers le bas. Pressente une composante continu et s’annule avec les multiples de D avec un encombrement spectral de 2D.

Programme d’appelle des fonction et d’affichage des courbe pour le NRZ

% Déclaration des variables 
N=500;        	% Nombre de bits
D=1000;        % Débit en bit/s
k=10;
fe=D*k;        % Fréquence d'échantillonnage
A=-12;        % Valeur d'un bit=1
te=1/fe;        % Temps d'une periode


for i=1:N*k,
   Tet(i)=te*i;
end
F=[0:(N*k)-1]*fe/(N*k);


% Appel des fonctions
[M]=message(N);    	% Appelle de la fonction message
[Mt]=nrz(M,N);      % Appelle de la fonction nrz codage en 0 et 1
[Mrs] = nrz2(Mt,A,k,N);  	% Appelle de la fonction nrz2 codage en logique négative +ou-12V

% Affichage des courbes
subplot (3,1,1)
plot(Tet,Mt)
axis ([0 0.2 -0.1 1.1])
title ('Message à transmettre : M')
Xlabel ('temps en seconde')
Ylabel ('Etat logique')


subplot (3,1,2)
plot (Tet,Mrs)
axis ([0 0.2 A-1 -A+1])
title ('Message transmis : Mt')
Xlabel ('temps en seconde')
Ylabel ('Amplitude (V)')

Mrsfft=20*log10(abs(fft(Mrs,k*N)));
subplot(3,1,3)
plot(F,Mrsfft)
title('Spectre du sigal NRZ')
xlabel('fréquence en Hz')
ylabel('gain en dB')
grid
axis ([0 10000 0 80])

%Fonction message 2

function[M2]= mess2(M,N)
k=10;
c=0;
for i=1:N,
   if M(i)== 0
      for j=c+1:c+k,
         M2(j)=0;
      end
   else
    	for j=c+1:c+k,
      	M2(j)=1;
      end
   end
   c=c+k;
end

17) Codage manchester

function[Mt]= manchester(M,N)
c=0;
k=10;
for i=1:N,
   if M(i)== 0
      for j=c+1:c+(k/2),
         Mt(j)=0;
      end
      for j=c+1+(k/2):c+k,
         Mt(j)=1;
      end
   else
    	for j=c+1:c+(k/2),
      	Mt(j)=1;
      end
      for j=c+1+(k/2):c+k,
         Mt(j)=0;
      end

   end
c=c+k;
end

Programme d’appelle des fonction et d’affichage des courbe pour le manchester

% Déclaration des variable
N=500;
k=10;
D=1000;
Fe=k*D;
te=1/Fe;
A=-10;

for i=1:N*k,
   Tet(i)=te*i;
end
F=[0:(N*k)-1]*Fe/(N*k);

% Appel des fonctions
[M]=message(N);  	% Appelle de la fonction message
[M2]=mess2(M,N);  	% Appelle de la fonction message 2
[Mt]=manchester(M,N);	% Appelle de la fonction Manchester
[Mrs]=nrz2(Mt,A,k,N);	% Appelle de la fonction pour la conversion en          % logique négative
% Affichage des courbes
subplot (3,1,1)
plot(Tet,M2)
axis ([0 0.05 -0.1 1.1])
title ('Message à transmettre : M')
Xlabel ('temps en seconde')
Ylabel ('Etat logique')

subplot (3,1,2)
plot (Tet,Mrs)
axis ([0 0.05 A-1 -A+1])
title ('Message transmis : Manchester')
Xlabel ('temps en seconde')
Ylabel ('Amplitude (V)')

Mrsfft=20*log10(abs(fft(Mrs,k*N)));
subplot(3,1,3)
plot(F,Mrsfft)
title('Spectre du sigal manchester')
xlabel('frequence(Hz)')
ylabel('gain en dB')
grid
axis ([0 10000 0 80])

Le codage Manchester effectue beaucoup plus de variation pour retranscrire le message logique plus de transition pour le même train de bit (une par bit). Le spectre du Manchester est meilleur car ici car il n’y a pas de composante continu mais s’annule avec les multiple de D avec un encombrement spectral deux fois plus grand que le NRZ (ici environ 4D).Favorise par contre le synchronisation de l’horloge.

Mis en forme par theo

#3 lorinc

lorinc

    Pillier de bar

  • INpactien
  • 5 705 messages
  • Lieu:comme duke :DD:

Posté 22 février 2005 - 16:58

:chinois:

mais avec de la couleur et des balise [code=auto:0] ce serait vraiment mieux :-D

au passage, la commande cd permet de changer le repertoire courant, pas uniquement de savoir quel est-il.
la plupart des commande unix sont valable sous matlab, donc il vaut mieux manger un peu d'unix :-D

si tu veux, au passage, j'ai 2-3 bricole de traitement d'image en matlab :eeek2:

#4 lorinc

lorinc

    Pillier de bar

  • INpactien
  • 5 705 messages
  • Lieu:comme duke :DD:

Posté 28 février 2005 - 22:39

:mdr:

:xzombi: toi qui es modo maintenant, tu ne voudrais pas demander au propriétaire de ce magnifique tuto de mettre un peu de couleur et le cas-échéant le faire s'il ne répond :theo:

(autant te le dire de suite, passe à l'étape 2)

j'aime bien ce tuto et c'est dommage qu'il soit laissé à l'abandon tel qu'il est.

(et pi ça fait une semaine que j'attends que tu passe modo pour demander ça :kimouss: )

#5 theocrite

theocrite

    ☠⚡★ grand tyran démoniaque☆⚠☢

  • ANCIEN
  • 14 923 messages

Posté 28 février 2005 - 23:29

Voila, c'est fait. Mais c'est la dernière fois hein ? :fou:


Modération effectuée :iloveyou: :D :D

#6 lorinc

lorinc

    Pillier de bar

  • INpactien
  • 5 705 messages
  • Lieu:comme duke :DD:

Posté 28 février 2005 - 23:37

merci monsieur le modérateur :D :iloveyou: :D

#7 k-o-x

k-o-x

    Pilote de X-wing

  • INpactien
  • 672 messages
  • Lieu:Grenoble

Posté 28 février 2005 - 23:55

t'as oublié la commande why :iloveyou:

sinon c'est pas mal...

#8 theocrite

theocrite

    ☠⚡★ grand tyran démoniaque☆⚠☢

  • ANCIEN
  • 14 923 messages

Posté 01 mars 2005 - 00:02

Oups, j'ai zappé qu'il y avait un deuxième post :iloveyou:


Modération effectuée :D

#9 Ludo1651

Ludo1651

    Wookiee

  • INpactien
  • 157 messages
  • Lieu:Là où on m'y attend pas

Posté 21 juin 2006 - 21:58

sympa cette aide, je vais pouvoir m'y mettre sérieusement à ce petit Matlab :ouioui:

#10 lorinc

lorinc

    Pillier de bar

  • INpactien
  • 5 705 messages
  • Lieu:comme duke :DD:

Posté 26 juin 2006 - 17:17

tu as plusieurs équivalent libre de matlab :

octave (sous gpl) et scilab (sous une licence presque libre, développé par l'INRIA).

si tu te sers de matlab pour faire des choses très générique, je te conseille fortement les équivalent libre, qui font aussi bien mais te laissent libre :up:

d'ailleurs, il existe octave-forge qui est une collection de tools pour octave très complete.

en gros, à part si c'est pour utiliser la toolbox de comm qui est très particulière, y a aucun intérêt à utiliser matlab :up:

EDIT : J'oubliais le plus important : la syntaxe entre ces trois logiciels est quasiment identique :up:

Modifié par lorinc, 26 juin 2006 - 17:17.


#11 eagle83

eagle83

    Ewok

  • INpactien
  • 1 messages

Posté 25 janvier 2009 - 14:03

thx a lot
mais quel est l'algorithme qui nous permet de enlever l'entourage noir d'une photo

#12 mielle_2610

mielle_2610

    Ewok

  • INpactien
  • 2 messages

Posté 09 mai 2009 - 13:55

slt :incline: j ai un mini projet a realise sous matlab qui sontienne une methode d inportation 1 d exportation de fichier et un une 3 qui permet la classification d image par la methode des K plus proche voisins et je ne sais par ou commancer est ce q qlq un px me guide merci d avance :D




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)