IF, ELSE, ELSEIF
Essayer le petit programme suivant :
A = input('A = ');
B = input('B = ');
if A < B
disp('A < B')
elseif A > B
disp('A > B')
else
disp('A = B')
end
SWITCH – CASE – OTHERWISE
L'utilisation de switch-case est illustrée par le petit programme suivant.
fprintf('\n\n');
disp('1 : FRANCAIS');
disp('2 : ENGLISH');
disp('3 : ITALIANO');
k = input('\nfaites votre choix : ');
fprintf('\n\n');
switch k
case 1
disp('Bonjour');
nom = input('Veuillez introduire votre nom : ','s');
disp(['A bientôt ' nom])
case 2
disp('Hello !');
nom = input('Please, introduce your name : ','s');
disp(['See you later ' nom])
case 3
disp('désolé, je ne parle pas italien');
disp('sorry, I do not speek italien');
otherwise
fprintf('\nvous n''avez pas fait le bon choix\n');
end;
LA BOUCLE FOR
L'utilisation de la boucle
for est illustrée par les deux petits programmes suivants.
t=0:0.01:3.5;
c='rgbmck:';
close all;
hold on;
for i = 1 : length(c)
plot(t,i*sin(i*t),c(i));
end;
grid;
_________________________
k=32;
disp(char(ones(1,73)*95));
for l = 1 : 28
for c = 1 : 8
fprintf('|%3d %c ',k,char(k));
k = k+1;
end
fprintf('|\n')
end
disp(char(ones(1,73)*173));
LA BOUCLE WHILE
L'utilisation de la boucle
while est illustrée par le petit programme suivant.
n=65;
while n > 32 & n < 256
fprintf('Le caractère de code ASCII %d est %c\n\n',n,char(n));
c=input('taper un caractère : ','s');
n=fix(c);
fprintf('le code ASCII de %c est %d\n',c,n)
n = input('\ntaper un nombre [33 à 255] : ');
end;
L'INSTRUCTION BREAK
L'instruction break permet de quitter une boucle for ou une boucle while avant sa fin normale.
while 1
c=input('taper un caractère (f = fin) : ','s');
if c == 'f' break; end;
fprintf('le code ASCII de %c est %d\n',c,fix(c))
end;
L'INSTRUCTION RETURN
L'instruction return permet de quitter une fonction ou le programme principal avant sa fin normale
LES FONCTIONS
Une fonction est un programme m-file qui retourne quelque chose.
Tapez le programme suivant et sauvegardez le sous le nom am.m
function m = am(fp,fm,im)
% m = am(fp,fm,im)
% fp : fréquence de la porteuse
% fm : fréquence du signal modulant
% im : indice de modulation
T=3/fm;
te=1/fp/10;
t=0:te:T-te;
m=(1+im*cos(2*pi*fm*t)) .* sin(2*pi*fp*t);
end
Le
end à la fin de la fonction n'est pas obligatoire mais il est préférable de le mettre.
Essayez le en tapant les commandes suivantes :
help am
x = am(1000,100,0.5);
plot(x);grid;
LES FONCTIONS LOGIQUES
all
La fonction all(x) est vrai si tout les éléments de x sont différent de zéro. Essayer les deux commandes
suivantes:
all(1:10)
all(-1:1)
any
La fonction
any(x) est vrai si au moins un élément de x est non nul.
Essayer les commandes ci-dessous:
any([0 0 0 1])
any(zeros(3))
exist
exist('x') est vrai si la variable ou la fonction x existe dans l'espace
de travail ou dans le chemin de recherche de MATLAB . Elle retourne :
--> 0 si x n'existe pas
--> 1 si la variable x est définie
--> 2 si la fonction x existe (dans le chemin de recherche MATLAB )
--> 7 si le dossier x existe (dans le chemin de recherche MATLAB )
--> voir help exist pour plus de détail
find(x)
Cherche les indices des éléments non nul du vecteur x
[i,j] = find(x)
Cherche les indices ligne et colon des éléments non nul de la matrice x
A = [0 0 75 0 0 0 -23 0 0 0 0];
i = find(A);
i = 3 7
A(i)
ans = 75 -23
find(a>0)
ans = 3
find(a<0)
ans = 7
find(a==0)
ans = 1
2 4 5 6
8 9 10 11
LA FONCTION FPRINTF
La fonction
fprintf permet d'écrire des informations sur l'écran ou dans un fichier.
La syntaxe pour l'écran est la suivante :
fprintf(format, A, B, C . . .)
format est une chaîne de caractère qui précise comment les données A, B, C doivent être
affichées à l'écran. on utilise une syntaxe similaire à celle du langage C:
%7.3f
--> 7 est le nombre total de chiffres, le point compris
--> 3 est le nombre de chiffre après la virgule (précision)
--> f : spécificateur de type, voir tableau ci-dessous
Spécification |
Description |
%c |
un seul caractère |
%d |
décimal, utilisé en général pour les nombres entier |
%e |
Notation exponentielle. ex : 3.1415e+00) |
%f |
notation en virgule fixe |
%g |
format libre |
%o |
Représentation octale (unsigned) |
%s |
chaîne de caractères |
%u |
Décimal non signé |
%x |
Hexadécimal (lettres a-f) |
%X |
Hexadécimal (lettres A-F) |
Tout texte inclus dans la chaîne format sera reproduit à l'écran. Certains caractères de contrôle peuvent être
introduits en les précédant de \ comme cela est indiqué dans le tableau ci-dessous.
> fprintf('\npi = %g = %d = %f = %4.2f = %e\n',pi,pi,pi,pi,pi)
pi = 3.14159 = 3.14e+000 = 3.141593 = 3.14 = 3.141593e+000
> fprintf('Pi = %5.3f\nLe double de pi est %20.18f\n',pi,2*pi);
Pi = 3.142
Le double de pi est 6.283185307179586200
Caractère
|
Description
|
\b |
Backspace |
\f |
Form feed |
\n |
New line |
\r |
Carriage return |
\t |
Horizontal tab |
\\ |
Backslash |
\'' ou '' |
apostrophe |
%% |
% |
SAISIE D'UNE DONNEE AU CLAVIER
La fonction
input permet de saisir une donnée au clavier durant l'exécution d'un
programme. La donnée peut être un scalaire, une matrice ou une chaîne de caractère
X = input('tapez un nombre : ');
Affiche le message : tapez un nombre et attend qu'une donnée soit introduite au clavier. La valeur
introduite est affectée à la variable X. Si on veut introduire une chaîne de caractères, il faut la taper entre
guillemets., sinon il faut utiliser le format suivant. Dans ce cas, les guillemets son inutiles car MATLAB
s'attend à une chaîne.
X = input('tapez une chaine : ' , 's');
MANIPULATION DE CHAINES DE CARACTERES
Taper
help strfun pour avoir une liste exhaustive des fonctions manipulant les chaînes de
caractères. En voici quelques-unes.
deblank(X)
supprime les blancs qui se trouvent à la fin de la chaîne X
findstr(str1, str2)
Cherche les indices du début de la petite chaîne dans la grande chaîne
str1 = 'Find the starting indices of the shorter string.';
str2 = 'the';
findstr(str1,str2)
ans =
6 30
strcmp(str1,str2)
compare les deux chaîne str1 et str2
strcmp('yes','yes ')
ans = 0
strcmp('yes','yes')
ans = 1
strcat(str1, str2, str3,. . . )
Concaténation de chaînes
s = strcat('bonjour','monsieur')
s = bonjourmonsieur
s = strcat('bonjour ','monsieur')
s = bonjourmonsieur
s = strcat('bonjour',' monsieur')
s = bonjour monsieur
Pour mieux gérer le problème des espaces, il vaut mieux utiliser:
s = ['Bonjour' ' ' 'Monsieur']
s = Bonjour Monsieur
strrep(str1, str2, str3)
Recherche str2 dans str1 et la remplace par str3
S = 'j''ai passé une très bonne soirée'
X = strrep(S,'bonne','mauvaise')
X = j'ai passé une très mauvaise soirée
char(n)
Retourne le caractère de code ASCII n
char(65)
ans = A
char(65:75)
ans = ABCDEFGHIJK
num2str()
Convertit un nombre en une chaîne de caractère afin qu'on puisse l'utiliser dans une fonction qui manipule des
chaînes. Essayer le petit programme suivant :
fp=1000;
fm=100;
im=0.5;
y = am(fp,fm,im);
S='signal modulé en amplitude '
S = [S 'fp=' num2str(fp) ' fm=' num2str(fm) ' im =' num2str(im)];
plot(y);
title(S);
CONVERSION ENTRE BASES DE NUMÉRATION
dec2bin()
Décimal vers binaire
b = dec2bin(13)
b = 1101
dec2bin retourne une chaîne de caractère. Si on désire que le résultat soit un tableau de nombres, on peut
utiliser la forme suivante :
n = dec2bin(13)-48
n =
1 1 0 1
bin2dec
Binaire vers décimal
bin2dec('010111')
ans = 23
dec2hex
Décimal vers Hexadécimal
dec2hex(888)
ans = 378
hex2dec
Hexadécimal vers décimal
hex2dec('12B')
ans = 299