N.F.I. 3ième année

Apprentissage   Matlab

septembre 2004

1. Construction de tableaux

  1. Afficher la suite des entiers de 12 à 19
  2. Afficher la suite des valeurs:   19 18.5 18 17.5 17 ... 12.5 12
  3. Afficher la matrice à 3 lignes et 6 colonnes ne contenant que des 1
  4. Cas de tableaux de caractères
    soit par exemple a = 'Jean ', b=' Dupont', n=21, c=' ans' ; construire, en fonction de a, b, c et n, les chaînes:   'Jean Dupont', puis   'Jean Dupont: 21 ans'
        (penser à la fonction int2str)
    construire, en fonction de a, b la matrice de chaînes:   'Jean  '
      'Dupont'
        (penser à la fonction str2mat)

2. Manipulation des indices

  1. Afficher la troisième colonne de A
  2. Afficher la deuxième ligne de A
  3. Afficher deuxième ligne de A + 5*troisième ligne de A
  4. Construire la matrice B en plaçant l'une sous l'autre la deuxième ligne de A et la ligne obtenue en c).
Prendre par exemple:
         | -1  5  9  8 |
     A = | -2  8  3  5 |
         |  1 -4  6  8 |

3. Comparaisons et tests

  1. v est un vecteur; trouver une expression qui vaut 1 si la condition suivante est vraie et 0 sinon:
      • le vecteur v contient au moins une composante inférieure strictement à 9
      • le vecteur v ne contient aucune composante inférieure strictement à 9
      • le vecteur v contient exactement une composante inférieure strictement à 9
  2. Tester l'égalité de deux scalaires, de deux vecteurs de même dimension
  3. Trouver l'indice et la valeur de la plus petite composante d'un vecteur v

4. Précision

Que représente la valeur affichée par la séquence suivante:
          x=1;
          while 1+x ~= 1,   x = x/2; end
          2*x;

5. Tracés

  1. Tracer sur un graphe la fonctions x->sin(x) , sur l'intervalle [-π π]. Ajouter le tracé de la tangente à l'origine (droite d'équation y=x).
    Tracer les axes en noir, la courbe en bleu et la tangente en pointillé vert.
  2. Histogrammes de
        • 1000 valeurs tirées d'une loi uniforme sur [0 1]
        • 1000 valeurs tirées d'une loi normale d'espérance 0, de variance 1
    Afficher sur chaque graphe l'effectif maximum des classes.
  3. On considère les courbes paramétrées définies par (j et k désignent des entiers):
          C(j,k) ( sin(j*t), cos(k*t) , t dans [0 2*?]}
    Placer une fenêtre, sur 6 graphes, les courbes C(2,3), C(3,4), C(4,5) et C(3,2),C(4,3), C(5,4).

6. Sous-programmes

  1. Commentez le résultat de chaque commande:
              type fliplr
              which fliplr
              which min
              path
  2. Ecrire un fonction matlab ayant trois paramètres: une matrice M (dimension n,p) et deux réels a et b, qui fournit, par trois paramètres en sortie, les valeurs suivantes: Exemple d'appel: M=randn(8); [s1 s2 s3] = fcn( M, -2, 3)
  3. Adaptez cette fonction de façon qu’on puisse l’utiliser avec seulement les paramètres M et a (on supposera alors que le paramètre absent b est égal à +inf ).

Eviter l'utilisation d'indices quand c'est possible

Voici trois façons de calculer la somme des éléments d'une matrice M:

1: utiliser deux boucles emboîtées 2: utiliser une seule boucle 3: sans utilisation de boucle
  s=0;
  for i=1:n,
     for j=1: n
        s=s+M(i,j);
     end
  end
  s=0;
  for i=1:n
     s=s+sum(M(:,i));
  end

  
  s = sum( sum(M) )




  

On veut comparer les temps d'exécution, pour chaque méthode, sur une matrice carré d'ordre n, avec différentes valeurs de n.

On utilise les fonctions clock (note un temps) et etime (calcule un écart entre deux temps) pour évaluer le temps d'exécution d'une séquence d'instructions de la façon suivante: on place avant et après cette séquence deux appels à clock; ensuite l'appel à etime (ou elapsed time) donne l'intervalle de temps entre les appels.
  t0=clock;
  for i=1:n
     s=s+sum(M(:,i));
  end
  t1=clock;
  temps=etime(t1,t0); 
Comparer, pour différentes valeurs de n (50, 200, 800 …), les temps d'exécution des calculs ci-dessus.