Vous êtes sur la page 1sur 47

Département des Sciences de la Terre

Master Sciences et Techniques


Filière Géomatique Environnementale

Préparé par : Encadrant :


OUSSAOUI Sabir Pr. Abdelghani Boudhar

2022/2023
Module: outils de programmation Matlab
Master Geomatique envirenmentale

Traveaux pratiques:Matlab

• Prof: A.BOUDHAR
• Stud : S.OUSSAOUI

Basics of matlab
I. initiation matlab:
%clc =effacer la commande windows
%clear = supprimer les variables
%close all = fermer tout les figures
clc, clear, close all

1.scalire:
% Addition
6+34

ans = 40

% soustraction
6-34

ans = -28

% division
6/34

ans = 0.1765

% multiplication
6*34

ans = 204

% déclaration de variables
x=-2.34*178

x = -416.5200

% affaicher la valeur de X
x

x = -416.5200

% 5 à la puissance de 2
y=power(5,2)

1
y = 25

yy=(5.^2)

yy = 25

% affaicher les variables


who

Your variables are:

ans x y yy

% afficher les variablees avec les detailles(size, bytes,classes...)


whos

Name Size Bytes Class Attributes

ans 1x1 8 double


x 1x1 8 double
y 1x1 8 double
yy 1x1 8 double

2. vecteur:
% afficher de 1 jusqu'à 50
X=1:50

X = 1×50
1 2 3 4 5 6 7 8 9 10 11 12 13

% afficher de 1 jusqu'à 100 avec un pas de 2


Y= 1:2:100

Y = 1×50
1 3 5 7 9 11 13 15 17 19 21 23 25

% afficher le 12eme element dans la série (indice 12 )


Y(12)

ans = 23

% z egale la valeur de Y de 4 jusqu'à 14


Z=Y(4:17)

Z = 1×14
7 9 11 13 15 17 19 21 23 25 27 29 31

% langueur de la série
length(Z)

ans = 14

% les dimenssions de la matrice


size(Z)

ans = 1×2
1 14

2
% la somme de chaque colonne
X+Y

ans = 1×50
2 5 8 11 14 17 20 23 26 29 32 35 38

% X+Z --> syntaxe error, il faut avoir les meme dimenssion


% déclarer un vecteur
T=[3 2.5 -6]

T = 1×3
3.0000 2.5000 -6.0000

U=[3, 2.5, -6]

U = 1×3
3.0000 2.5000 -6.0000

% Z --> depuis -1 vers -2 avec un pas de -0.2


Z=-1:-0.2:-2

Z = 1×6
-1.0000 -1.2000 -1.4000 -1.6000 -1.8000 -2.0000

% I---> Langeur de Z
I= length (Z)

I = 6

% ajouter 22 dans la cellule correspond le 4 emme ligne colonne 2


w(4,2)=22

w = 4×2
0 0
0 0
0 0
0 22

% afficher une matrice comporte seulement des 1


Y=ones(1,I-3)

Y = 1×3
1 1 1

% calculer la racine carrées dns un vecteur


X=[2,sqrt(2),-6.1]

X = 1×3
2.0000 1.4142 -6.1000

% Concatination horizontale
U=[Y,X]

U = 1×6
1.0000 1.0000 1.0000 2.0000 1.4142 -6.1000

% multiplication de colonne par colonne


Z.*U

3
ans = 1×6
-1.0000 -1.2000 -1.4000 -3.2000 -2.5456 12.2000

% transposition(ligne devient colonnes)


V=U'

V = 6×1
1.0000
1.0000
1.0000
2.0000
1.4142
-6.1000

% un vercteur vertical
W =[2;3;6]

W = 3×1
2
3
6

% la somme de Li*Ci
Z*V

ans = 2.8544

% multiplication de colonne de V sur tout les valeur de Z


V*Z

ans = 6×6
-1.0000 -1.2000 -1.4000 -1.6000 -1.8000 -2.0000
-1.0000 -1.2000 -1.4000 -1.6000 -1.8000 -2.0000
-1.0000 -1.2000 -1.4000 -1.6000 -1.8000 -2.0000
-2.0000 -2.4000 -2.8000 -3.2000 -3.6000 -4.0000
-1.4142 -1.6971 -1.9799 -2.2627 -2.5456 -2.8284
6.1000 7.3200 8.5400 9.7600 10.9800 12.2000

% calculer la valeur de sinus de chaque valeur de vecteur X


Y=sin(X)

Y = 1×3
0.9093 0.9878 0.1822

% vérefication (vraie,faux)
Z=(Y>0.5)

Z = 1×3 logical array


1 1 0

% la somme des valeurs


I=sum(Z)

I = 2

% la somme des valeurs avec conditions


sum(Y.*(Y>0))

ans = 2.0792

4
% nombrer les valeur qui sont vrai
YY=find(Y>0)

YY = 1×3
1 2 3

% afficher les valeurs vrai


YYY=Y(YY)

YYY = 1×3
0.9093 0.9878 0.1822

Y(Y>0)

ans = 1×3
0.9093 0.9878 0.1822

% Le role des parenthèse


C1=2+1:5

C1 = 1×3
3 4 5

C2=2+(1:5)

C2 = 1×5
3 4 5 6 7

% question 1
% vecteur de 10 colonnes et 1 ligne avec 5 sur tout les variables
aa=5* ones(10,1)

aa = 10×1
5
5
5
5
5
5
5
5
5
5

% QUESTION 2
% la sommes des 50 premier nombre impaire
bb=sum(1:2:100)

bb = 2500

% question 3
%vecteur des racines carrées des entiers impaire de 1--> 9
cc=sqrt(1:2:9)

cc = 1×5
1.0000 1.7321 2.2361 2.6458 3.0000

% question 4
% les carrées des entiers de 1-->10

5
dd= (1:10).^2

dd = 1×10
1 4 9 16 25 36 49 64 81 100

ddd= power(1:10,2)

ddd = 1×10
1 4 9 16 25 36 49 64 81 100

%question 5
% inverse des entiers de 1--> 10
1./(1:10)

ans = 1×10
1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250

x= 10 % déclarer un variable x

x = 10

v= rand(x,1) %déclarer un variable aléatoire avait 15 ligne et 4 colonne

v = 10×1
0.4218
0.9157
0.7922
0.9595
0.6557
0.0357
0.8491
0.9340
0.6787
0.7577

z=x*v %multiplier toutes les valeurs v par x

z = 10×1
4.2176
9.1574
7.9221
9.5949
6.5574
0.3571
8.4913
9.3399
6.7874
7.5774

z1 = horzcat(v,z) %concatination de v et z horisontalement

z1 = 10×2
0.4218 4.2176
0.9157 9.1574
0.7922 7.9221
0.9595 9.5949
0.6557 6.5574
0.0357 0.3571
0.8491 8.4913
0.9340 9.3399
0.6787 6.7874

6
0.7577 7.5774

z2 = vertcat(v,z) %concatination de v et z vzrticalem

z2 = 20×1
0.4218
0.9157
0.7922
0.9595
0.6557
0.0357
0.8491
0.9340
0.6787
0.7577

3. Matrices:

% une matrice contient seulement les 1 avec 3 lignes et 8 colonnes


A= ones(3,8)

A = 3×8
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1

% une matrice contient seulement les 1 sur le diagnoles avec 4 lignes et 4 colonnes
B=eye(4,4)

B = 4×4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

% une matrice contient seulement les 0 avec 8 lignes et 3 colonnes


C=zeros(8,3)

C = 8×3
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

%les dimension de C
size(C)

ans = 1×2
8 3

% afficher la valeur qui se trouve à la 3 eme ligne et le 2 eme colonne


B(3,2)

7
ans = 0

% la multiplication de deux matrices


A*C

ans = 3×3
0 0 0
0 0 0
0 0 0

% affichage de tout les contenant de matrice selon les indices (verticale)


B(:)

ans = 16×1
1
0
0
0
0
1
0
0
0
0

% reformuler la matrice (changer l'emplacement des indices)


A=reshape(B,2,8)

A = 2×8
1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 1

% les lignes devient des colonnes


A'

ans = 8×2
1 0
0 0
0 1
0 0
0 0
1 0
0 0
0 1

% la somme d'une matrice donne la somme de chaque colonne


B=sum(A)

B = 1×8
1 0 1 0 0 1 0 1

% la somme de lasomme d'une matrice donne la somme de tout les


% enregistrement de la matrice
sum(sum(A))

ans = 4

% la somme des enregistrement de matrices qui appartient à la ligne 2 et


% tout les colonne

8
C=sum(A(2,:))

C = 2

% déclaration d'une matrice


D=[3,4,-2;1 ,-1.5 ,6]

D = 2×3
3.0000 4.0000 -2.0000
1.0000 -1.5000 6.0000

% afficher tout les ligne de la colonne 3


D(:, 3)

ans = 2×1
-2
6

% affaicher 2 eme lignes de 4-->6 colonnes


A(2,4:6)

ans = 1×3
0 0 0

% 2emme ligne moins le premier ligne suivi par 3emme ligne moins le 2eme li
diff(D)

ans = 1×3
-2.0000 -5.5000 8.0000

% affiche la valeur maximale de chaque colonne de la matrice A


max(A)

ans = 1×8
1 0 1 0 0 1 0 1

% afficher la valeur minimale des max (A)


min(max(A))

ans = 0

% standard deviation( ecart-type)


std(D)

ans = 1×3
1.4142 3.8891 5.6569

% afficher le produit de tout les lignes de chaque colonne


prod(D)

ans = 1×3
3 -6 -12

% ligne 2--> ligne 1 * ligne 2 et ligne 3--> ligne 2f *ligne 3


cumprod(D)

ans = 2×3
3 4 -2
3 -6 -12

9
% ligne 2--> ligne 1 + ligne 2 et ligne 3--> ligne 2f + ligne 3
cumsum(D)

ans = 2×3
3.0000 4.0000 -2.0000
4.0000 2.5000 4.0000

% Obtenir la matrice contenant les deux premières colonnes de A ?


A(:,1:2)

ans = 2×2
1 0
0 0

%boite à moutache
boxplot(B)

%representation graphique de la variable


plot(B(:),'LineWidth',3,"Color",'g')
title('diagramme') %le titre de graphe
xlabel('axe des X') %titre de des axes des x
ylabel('axes des Y')%titre des axes des y

10
4. Chaînes de caractères et messages:

% déclarer un variable sous forme de chaine de caractere


a="hello world ! "

a =
"hello world ! "

% afficher la a sur l'écran


disp(a)

hello world !

% afficher un message box


msgbox('merci de consulter google ! ')

% donner à l'utilisateur de saisie la valeur d'un variable


x= input('merci de saisire votre nom:','s')

x =
'OUSSAOUI'

11
y=['votre nom est ',x]

y =
'votre nom est OUSSAOUI'

disp(y)

votre nom est OUSSAOUI

% Définir la chaîne s = 'Bonjour';


s=('bonjour')

s =
'bonjour'

% Vérifier size(s).
size(s)

ans = 1×2
1 7

% Ajouter s = [s, 'à tous'].


s=[s,'à tous']

s =
'bonjourà tous'

2-Programmation et fonction avec Matlab


2.1 Structures itératives et conditionnelles
2.1.1 Boucle for …end
%input=entrer ou sisir une valeur
x=input("entrer U 0:")

x = 5

for i =1:10
x=4*x*(1-x)
end

x = -80
x = -25920
x = -2.6875e+09
x = -2.8890e+19
x = -3.3386e+39
x = -4.4586e+79
x = -7.9515e+159
x = -Inf
x = -Inf
x = -Inf

2.1.2 Structure if….else…end


nb=input('rentrez un nombre:')%entre une valeur

12
nb = 21

if (nb<100) %si la condition est vérifier afficher le msg


disp('votre nombre est<100')
elseif(nb==100) %aussi si la premiere condition n'est pas correct verifir l
disp('votre nomre égale 100')
else %si aucune des condition n'est pas verifier affichher le ms
disp('votre nombre est >100')
end

votre nombre est<100

a=+zeros(1,10) %une matrice des 0

a = 1×10
0 0 0 0 0 0 0 0 0 0

if a==0
a(5)=34 %si a=1 changer la valeur de 5eme valeur en 34
end

a = 1×10
0 0 0 0 34 0 0 0 0 0

%%% SCRIPT SOUS LE NOM "signe.m"


nbre=input('entrer un numéro:')

nbre = 432

if (nbre<0)
disp("votre numéro est négatif")
elseif (nbre==0)
disp("votre numéro est nul")
else
disp("votre numero est positive ")
end

votre numero est positive

%clc =effacer la commande windows


%clear = supprimer les variables
%close all = fermer tout les figures
clc, clear, close all

z=peaks(25)

z = 25×25
0.0001 0.0002 0.0007 0.0017 0.0034 0.0051 0.0042 -0.0050
0.0002 0.0005 0.0016 0.0038 0.0074 0.0101 0.0045 -0.0244
0.0003 0.0011 0.0032 0.0077 0.0147 0.0188 0.0028 -0.0671
0.0005 0.0019 0.0058 0.0141 0.0272 0.0357 0.0074 -0.1224
0.0007 0.0028 0.0088 0.0227 0.0468 0.0698 0.0452 -0.1285

13
0.0006 0.0029 0.0103 0.0300 0.0703 0.1271 0.1532 0.0232
-0.0005 0.0002 0.0053 0.0252 0.0789 0.1851 0.3265 0.3923
-0.0033 -0.0081 -0.0143 -0.0119 0.0299 0.1667 0.4485 0.8358
-0.0088 -0.0244 -0.0565 -0.1032 -0.1301 -0.0427 0.3007 0.9838
-0.0166 -0.0489 -0.1223 -0.2545 -0.4232 -0.5096 -0.2806 0.4947

figure
mesh(z)

surf(z)

14
15
Université Sultan Moulay Slimane | FST Béni Mellal
Master Géomatique Envirennementale
Prof: Abdelghani Boudhar

stud: Sabir OUSSAOUI

Traitement Statistique univariée de Données

1.Data Importation
clc,clear,close all
path='C:\Users\S.OUSSAOUI\Desktop\MASTER\Outil de programmation\'

path =
'C:\Users\S.OUSSAOUI\Desktop\MASTER\Outil de programmation\'

% cd permet pour matlab de positionner sur le path


cd(path)
xlfile='Temperature.xlsx'

xlfile =
'Temperature.xlsx'

% concatination de deux chaines de charactere


namefxl=[path,xlfile]

namefxl =
'C:\Users\S.OUSSAOUI\Desktop\MASTER\Outil de programmation\Temperature.xlsx'

DTable=readtable(namefxl)

DTable = 244×9 table

Date IMESKER ARMED TACHDERT NELTNER OUKASM jour mois

1 01-Oct-2007 23.4965 22.5600 19.0390 9.4102 11.8400 1 10


2 02-Oct-2007 21.3763 18.6300 15.2107 6.3155 6.1670 2 10
3 03-Oct-2007 15.2702 13.2100 10.0352 5.6664 6.3160 3 10
4 04-Oct-2007 18.7171 15.6400 12.9345 12.9612 12.3600 4 10
5 05-Oct-2007 20.5888 17.6600 17.4945 12.5817 13.1900 5 10
6 06-Oct-2007 26.1367 23.3200 19.5091 9.6827 13.1900 6 10
7 07-Oct-2007 24.3471 21.3800 18.7000 10.6445 14.1600 7 10
8 08-Oct-2007 25.5508 22.1900 19.1023 11.1224 13.3200 8 10
9 09-Oct-2007 23.9505 19.2500 16.3748 8.0913 7.9600 9 10
10 10-Oct-2007 24.7203 19.6100 17.2416 7.6064 10.2500 10 10
11 11-Oct-2007 25.0244 21.2700 17.0603 8.1397 9.8500 11 10
12 12-Oct-2007 24.4081 19.7400 16.8416 8.2550 10.6400 12 10

1
Date IMESKER ARMED TACHDERT NELTNER OUKASM jour mois

13 13-Oct-2007 21.5342 17.6800 15.1848 6.3294 8.5900 13 10


14 14-Oct-2007 18.9443 16.2300 13.2692 6.4283 6.9450 14 10

% afficher le premier colonnes


DTable(:,1)

ans = 244×1 table


Date

1 01-Oct-2007
2 02-Oct-2007
3 03-Oct-2007
4 04-Oct-2007
5 05-Oct-2007
6 06-Oct-2007
7 07-Oct-2007
8 08-Oct-2007
9 09-Oct-2007
10 10-Oct-2007
11 11-Oct-2007
12 12-Oct-2007
13 13-Oct-2007
14 14-Oct-2007

DTable.Date

ans = 244×1 datetime


01-Oct-2007
02-Oct-2007
03-Oct-2007
04-Oct-2007
05-Oct-2007
06-Oct-2007
07-Oct-2007
08-Oct-2007
09-Oct-2007
10-Oct-2007

% afficher les date ou la temperature de imsker<10


DTable.Date(DTable.IMESKER<10)

ans = 17×1 datetime

2
24-Nov-2007
25-Nov-2007
26-Nov-2007
27-Nov-2007
29-Nov-2007
23-Dec-2007
24-Dec-2007
27-Dec-2007
29-Dec-2007
04-Jan-2008

% calcule la moyenne
mean(DTable.IMESKER)

ans = 16.5269

% afficher la valeur maximale


max(DTable.IMESKER)

ans = 26.6206

% afficher la valeur minimale


min(DTable.IMESKER)

ans = 5.1323

% la temperature de station IMSKERT


% les donnés des stations
TS1=DTable.IMESKER

TS1 = 244×1
23.4965
21.3763
15.2702
18.7171
20.5888
26.1367
24.3471
25.5508
23.9505
24.7203

TS2=DTable.ARMED

TS2 = 244×1
22.5600
18.6300
13.2100
15.6400
17.6600
23.3200
21.3800
22.1900
19.2500
19.6100

3
TS3=DTable.TACHDERT

TS3 = 244×1
19.0390
15.2107
10.0352
12.9345
17.4945
19.5091
18.7000
19.1023
16.3748
17.2416

TS4=DTable.NELTNER

TS4 = 244×1
9.4102
6.3155
5.6664
12.9612
12.5817
9.6827
10.6445
11.1224
8.0913
7.6064

TS5=DTable.OUKASM

TS5 = 244×1
11.8400
6.1670
6.3160
12.3600
13.1900
13.1900
14.1600
13.3200
7.9600
10.2500

%colonnes de DATE
Vtimes=DTable.Date

Vtimes = 244×1 datetime


01-Oct-2007
02-Oct-2007
03-Oct-2007
04-Oct-2007
05-Oct-2007
06-Oct-2007
07-Oct-2007
08-Oct-2007
09-Oct-2007
10-Oct-2007

4
%la moyen de la station TS1
Moy=mean(TS1)

Moy = 16.5269

% ecart type de station 1


Ecarttype1=std(TS1)

Ecarttype1 = 4.4785

%le mediane de la station 1


Mediane1=median(TS1)

Mediane1 = 16.2252

%l'intervalle des valeurs de station 1


Range1=range(TS1)

Range1 = 21.4883

%le mode de la station 1


Mode1=mode(TS1)

Mode1 = 5.1323

%la variance de la station 1


Var1=var(TS1)

Var1 = 20.0569

%table de moyen, ecartype, mediane, etendue,mode, et la variance


T=table(Moy,Ecarttype1,Mediane1,Range1,Mode1,Var1)

T = 1×6 table
Moy Ecarttype1 Mediane1 Range1 Mode1 Var1

1 16.5269 4.4785 16.2252 21.4883 5.1323 20.0569

2.Represenations graphiques
a. plot 2D:
% station 1 en fonction des dates
f1=figure

f1 =
Figure (1) with properties:

Number: 1
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [488 342 560 420]
Units: 'pixels'

Show all properties

5
p1=plot(Vtimes,TS1,"LineStyle","-.","LineWidth",2,'Color','g')% linweidth=epaisseur de courbe

p1 =
Line with properties:

Color: [0 1 0]
LineStyle: '-.'
LineWidth: 2
Marker: 'none'
MarkerSize: 6
MarkerFaceColor: 'none'
XData: [1×244 datetime]
YData: [1×244 double]
ZData: [1×0 double]

Show all properties

xlabel('Date',"BackgroundColor",'y',"FontSize",15)% titre des axes des x


ylabel('temperature',"BackgroundColor",'y',"FontSize",15)% titre des axes des y
title('la temperature de station imsker ',"FontSize",14)% titre de plot

f2=figure

f2 =
Figure (2) with properties:

Number: 2
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [488 342 560 420]
Units: 'pixels'

6
Show all properties

area(TS1,'FaceColor',"y","EdgeColor","g")% colorer la surface sous la courbe


xlabel('Date',"BackgroundColor",'y',"FontSize",15)
ylabel('temperature',"BackgroundColor",'y',"FontSize",15)
title('la temperature de station imsker ',"FontSize",14)

f3=figure

f3 =
Figure (3) with properties:

Number: 3
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [488 342 560 420]
Units: 'pixels'

Show all properties

bar(TS1,'FaceColor',"black")% diagramme en tuyoux d'orgue colorer en noir


xlabel('Date',"BackgroundColor",'y',"FontSize",15)% titre des axes des x
ylabel('temperature',"BackgroundColor",'y',"FontSize",15)% titre des axes des y
title('la temperature de station imsker ',"FontSize",14)

7
histogram(TS1,"FaceColor",'c')
xlabel('Date',"BackgroundColor",'y',"FontSize",15)% titre des axes des x
ylabel('temperature',"BackgroundColor",'y',"FontSize",15)% titre des axes des y
title('la temperature de station imsker ',"FontSize",14)

8
histfit(TS1)
xlabel('Date',"BackgroundColor",'y',"FontSize",15)% titre des axes des x
ylabel('temperature',"BackgroundColor",'y',"FontSize",15)% titre des axes des y
title('la temperature de station imsker ',"FontSize",14)

9
boxplot(TS1,'Colors',"r",'BoxStyle',"outline","MedianStyle","target",'Orientation',"horizontal"

% déclarer une matrice

10
a=[3:2:13;1:2:11]

a = 2×6
3 5 7 9 11 13
1 3 5 7 9 11

% réaliser un graphe en 2D
plot(a(:),"LineWidth",4, 'color',[0.9290 0.6940 0.1250])
title('diagramme')

xlabel('axe des X')


ylabel('axe des y')

% la boite à moustache
boxplot(a(:))
title('diagramme')

xlabel('axe des X')


ylabel('axe des y')

11
%déclarer une figure
figure(1)
subplot(5,1,1) % met la premiere figure dans la premier ligne d'une matrice à 5 ligne et un seu
plot(Vtimes,TS1,'r')%plot des date en x et TS1 en y avec une couleur rouge
xlabel("la date") %déclarer le nom de la'axe des X
ylabel("°C")%déclarer le nom des Y
title("la temperature de station IMSKER")% titre de plot
legend('Tair IMESKER')%déclarer une légende
subplot(5,1,2)
plot(Vtimes,TS2,'g')
xlabel("la date")
ylabel("°C")
title("la temperature de station ARMED")
legend('Tair ARMED')
subplot(5,1,3)
plot(Vtimes,TS3,'c')
xlabel("la date")
ylabel(" °C")
title("la temperature de station TACHDERT")
legend('Tair TACHDDIRT')
subplot(5,1,4)
plot(Vtimes,TS4,'b')
xlabel("la date")

12
ylabel("°C")
title("la temperature de station NELTENER")
legend('Tair NELTENER')
subplot(5,1,5)
plot(Vtimes,TS5,'y')
xlabel("la date")
ylabel(" °C")
title("la temperature de station OUKASEM")
legend(['Tair OUKASEM'])
area(Vtimes,TS5,"FaceColor","g")
xlabel("la date")
ylabel(" °C")
title("la temperature de station OUKASEM")
legend(['Tair OUKASEM'])

b.histogramme:

subplot(5,1,1)
histogram(TS1,"FaceColor",'c')%réaliser un histogramme de la premiere station
xlabel("la date")
ylabel("°C")
title("la temperature de station IMSKER")
subplot(5,1,2)
histogram(TS2,"FaceColor",'g')%réaliser un histogramme de la 2eme station
xlabel("la date")
ylabel("°C")
title("la temperature de station ARMED")
subplot(5,1,3)

13
histogram(TS3,"FaceColor",'r')%réaliser un histogramme de la 3eme station
xlabel("la date")
ylabel(" °C")
title("la temperature de station TACHDERT")
subplot(5,1,4)
histogram(TS4,"FaceColor",'b')%réaliser un histogramme de la 4eme station
xlabel("la date")
ylabel("°C")
title("la temperature de station NELTENER")
subplot(5,1,5)
histogram(TS5,"FaceColor",'k')%réaliser un histogramme de la 5eme station
xlabel("la date")
ylabel(" °C")
title("la temperature de station OUKASEM")

c. boite à moustach:

figure(3)
DTair=DTable(:,2:6) %afficher le deuxieme couleur à 6 eme colonne

DTair = 244×5 table


IMESKER ARMED TACHDERT NELTNER OUKASM

1 23.4965 22.5600 19.0390 9.4102 11.8400


2 21.3763 18.6300 15.2107 6.3155 6.1670
3 15.2702 13.2100 10.0352 5.6664 6.3160

14
IMESKER ARMED TACHDERT NELTNER OUKASM

4 18.7171 15.6400 12.9345 12.9612 12.3600


5 20.5888 17.6600 17.4945 12.5817 13.1900
6 26.1367 23.3200 19.5091 9.6827 13.1900
7 24.3471 21.3800 18.7000 10.6445 14.1600
8 25.5508 22.1900 19.1023 11.1224 13.3200
9 23.9505 19.2500 16.3748 8.0913 7.9600
10 24.7203 19.6100 17.2416 7.6064 10.2500
11 25.0244 21.2700 17.0603 8.1397 9.8500
12 24.4081 19.7400 16.8416 8.2550 10.6400
13 21.5342 17.6800 15.1848 6.3294 8.5900
14 18.9443 16.2300 13.2692 6.4283 6.9450

varT=DTair.Variables; %afficher les colonnes sans entete


boxplot(varT,"labels",{'ST1','ST2','ST3','ST4','ST5'},"Notch","on")

xlabel("Stations")
ylabel("Frequency")
title("la boite à moustach de chaque station")

15
%afficher la moyen de chaque station
mean(varT)

ans = 1×5
16.5269 13.5801 11.0286 5.0306 5.4034

16
Université Sultan Moulay Slimane | FST Béni Mellal
Master Géomatique Envirennementale
Prof: Abdelghani Boudhar

stud: Sabir OUSSAOUI

Statistique Bivariée
1. Lecture de données

clc,clear,close all
path='C:\Users\S.OUSSAOUI\Desktop\MASTER\Outil de programmation\'

path =
'C:\Users\S.OUSSAOUI\Desktop\MASTER\Outil de programmation\'

% cd permet pour matlab de positionner sur le path


cd(path)

Warning: Function power has the same name as a MATLAB builtin. We suggest you rename the function to avoid a potenti
Warning: Function power has the same name as a MATLAB builtin. We suggest you rename the function to avoid a
potential name conflict.

xlfile='Temperature.xlsx'

xlfile =
'Temperature.xlsx'

% concatination de deux chaines de charactere


namefxl=[path,xlfile]

namefxl =
'C:\Users\S.OUSSAOUI\Desktop\MASTER\Outil de programmation\Temperature.xlsx'

DTable=readtable(namefxl)

DTable = 244×9 table

Date IMESKER ARMED TACHDERT NELTNER OUKASM jour mois

1 01-Oct-2007 23.4965 22.5600 19.0390 9.4102 11.8400 1 10


2 02-Oct-2007 21.3763 18.6300 15.2107 6.3155 6.1670 2 10
3 03-Oct-2007 15.2702 13.2100 10.0352 5.6664 6.3160 3 10
4 04-Oct-2007 18.7171 15.6400 12.9345 12.9612 12.3600 4 10
5 05-Oct-2007 20.5888 17.6600 17.4945 12.5817 13.1900 5 10
6 06-Oct-2007 26.1367 23.3200 19.5091 9.6827 13.1900 6 10
7 07-Oct-2007 24.3471 21.3800 18.7000 10.6445 14.1600 7 10
8 08-Oct-2007 25.5508 22.1900 19.1023 11.1224 13.3200 8 10
9 09-Oct-2007 23.9505 19.2500 16.3748 8.0913 7.9600 9 10

1
Date IMESKER ARMED TACHDERT NELTNER OUKASM jour mois

10 10-Oct-2007 24.7203 19.6100 17.2416 7.6064 10.2500 10 10


11 11-Oct-2007 25.0244 21.2700 17.0603 8.1397 9.8500 11 10
12 12-Oct-2007 24.4081 19.7400 16.8416 8.2550 10.6400 12 10
13 13-Oct-2007 21.5342 17.6800 15.1848 6.3294 8.5900 13 10
14 14-Oct-2007 18.9443 16.2300 13.2692 6.4283 6.9450 14 10
15 15-Oct-2007 16.4472 15.2700 12.4019 6.8869 8.3100 15 10
16 16-Oct-2007 15.9320 13.6100 11.1486 8.3623 8.9100 16 10
17 17-Oct-2007 16.7223 13.0400 12.9384 5.6039 6.8030 17 10
18 18-Oct-2007 18.7594 14.8600 12.0338 4.8536 5.7520 18 10
19 19-Oct-2007 18.8428 15.1900 12.3824 4.5776 6.2100 19 10
20 20-Oct-2007 20.0465 15.7000 12.5617 3.6975 6.5830 20 10
21 21-Oct-2007 21.6550 18.0700 13.6567 5.4256 6.2350 21 10
22 22-Oct-2007 21.9382 18.8800 15.1247 6.6278 8.8100 22 10
23 23-Oct-2007 21.8220 17.8600 15.1050 6.4840 9.2500 23 10
24 24-Oct-2007 19.3396 16.4100 13.2989 5.5682 7.5800 24 10
25 25-Oct-2007 13.8534 10.5500 7.1728 1.6738 2.2080 25 10
26 26-Oct-2007 12.3490 10.3500 7.9984 4.3156 5.2870 26 10
27 27-Oct-2007 15.2059 12.0100 8.8364 1.6817 1.3610 27 10
28 28-Oct-2007 14.8439 11.3100 7.7477 2.6836 0.4550 28 10
29 29-Oct-2007 16.1789 12.8000 9.7718 5.0001 4.1380 29 10
30 30-Oct-2007 16.9074 14.1200 11.7414 5.8510 6.6660 30 10
31 31-Oct-2007 18.3649 16.4400 12.6820 7.8254 7.2400 31 10
32 01-Nov-2007 18.2082 16.4300 15.0360 9.2072 10.9300 1 11
33 02-Nov-2007 18.7552 15.6300 13.7160 6.9545 7.5600 2 11
34 03-Nov-2007 20.9437 18.0700 14.2075 3.3318 7.2700 3 11
35 04-Nov-2007 19.8546 18.0700 14.5847 7.7342 8.9700 4 11
36 05-Nov-2007 24.6375 20.5400 16.5458 6.8392 9.4500 5 11
37 06-Nov-2007 24.6134 21.3300 17.7559 8.5966 12.4500 6 11
38 07-Nov-2007 21.6428 19.6900 16.4303 9.4072 11.0400 7 11
39 08-Nov-2007 21.3163 17.3700 14.8431 7.9456 8.6500 8 11
40 09-Nov-2007 20.4709 17.2600 14.3761 8.8171 8.3400 9 11
41 10-Nov-2007 19.5103 17.2500 13.7355 7.1981 7.9300 10 11
42 11-Nov-2007 19.7310 17.2400 13.6170 7.0088 7.8000 11 11

2
Date IMESKER ARMED TACHDERT NELTNER OUKASM jour mois

43 12-Nov-2007 19.4610 15.8500 13.3368 5.5537 6.7420 12 11


44 13-Nov-2007 19.5098 16.4800 13.1638 4.3581 5.7510 13 11
45 14-Nov-2007 15.6767 12.4200 10.1064 1.9404 3.4870 14 11
46 15-Nov-2007 14.9571 12.3800 10.2279 4.1207 4.1180 15 11
47 16-Nov-2007 16.0066 14.3900 13.4119 6.9585 8.6900 16 11
48 17-Nov-2007 17.8785 15.5900 13.3416 6.7015 8.0700 17 11
49 18-Nov-2007 20.0184 16.2500 14.5469 6.6881 8.1100 18 11
50 19-Nov-2007 20.7852 18.9000 15.3596 6.1897 7.9000 19 11
51 20-Nov-2007 19.8726 16.6500 13.9702 4.9337 7.5400 20 11
52 21-Nov-2007 15.6617 13.6700 11.8298 4.2404 4.6970 21 11
53 22-Nov-2007 10.2784 7.2100 7.4022 1.2092 -1.1020 22 11
54 23-Nov-2007 10.5013 10.3800 7.5083 1.9736 -0.6890 23 11
55 24-Nov-2007 5.1843 2.2720 0.7072 -5.3632 -5.2820 24 11
56 25-Nov-2007 6.9406 3.9070 1.4778 -1.5610 0.2160 25 11
57 26-Nov-2007 8.4721 5.7150 3.3960 -0.7280 -3.9320 26 11
58 27-Nov-2007 9.2874 6.7550 3.7499 -1.3237 -1.7170 27 11
59 28-Nov-2007 10.2195 7.9900 6.1377 1.1658 0.4990 28 11
60 29-Nov-2007 9.8421 9.1800 7.2072 0.8215 -1.0830 29 11
61 30-Nov-2007 10.5499 8.4400 4.8545 -0.9515 -1.2380 30 11
62 01-Dec-2007 11.5799 8.3900 5.0413 -0.9229 -1.4780 1 12
63 02-Dec-2007 10.3904 7.9600 5.2377 1.3048 -0.3860 2 12
64 03-Dec-2007 11.8544 10.0700 9.2456 4.1692 2.0390 3 12
65 04-Dec-2007 14.5709 13.5700 10.7836 6.7007 3.9000 4 12
66 05-Dec-2007 14.0852 11.9600 9.0536 3.6532 2.3580 5 12
67 06-Dec-2007 16.3661 14.4600 11.8735 5.9305 5.0170 6 12
68 07-Dec-2007 15.3145 14.0900 12.0294 6.8450 7.8300 7 12
69 08-Dec-2007 17.6564 16.4100 14.3974 6.5056 9.3200 8 12
70 09-Dec-2007 17.9659 16 13.9188 7.9500 10.8000 9 12
71 10-Dec-2007 17.2222 15.6000 12.4142 5.7206 5.3410 10 12
72 11-Dec-2007 16.1897 13.9800 11.7239 6.3216 9.2000 11 12
73 12-Dec-2007 17.1794 14.0700 10.8379 4.0944 7.4800 12 12
74 13-Dec-2007 16.2703 13.3900 10.1815 4.1731 3.3650 13 12
75 14-Dec-2007 14.2932 11.4900 8.3203 3.3357 2.3980 14 12

3
Date IMESKER ARMED TACHDERT NELTNER OUKASM jour mois

76 15-Dec-2007 12.0884 7.2700 3.8344 -1.1964 -3.2980 15 12


77 16-Dec-2007 11.2914 8.3800 4.8766 0.0341 -2.6620 16 12
78 17-Dec-2007 10.5744 8.6300 5.4729 2.0486 -0.3490 17 12
79 18-Dec-2007 12.6794 8.9300 7.9799 -0.7754 1.7290 18 12
80 19-Dec-2007 12.9743 7.7200 5.5581 -6.2816 -2.2290 19 12
81 20-Dec-2007 13.3512 10.1400 5.8718 -2.0043 -0.6190 20 12
82 21-Dec-2007 11.8647 8.9000 4.9778 -1.3022 -2.4270 21 12
83 22-Dec-2007 10.4511 7.8300 4.7246 1.9209 -2.4280 22 12
84 23-Dec-2007 8.9357 5.9540 3.7323 -1.8233 -3.0840 23 12
85 24-Dec-2007 8.7142 5.9610 4.4062 0.2643 -1.0780 24 12
86 25-Dec-2007 10.9004 9.5200 8.8561 4.5586 2.0520 25 12
87 26-Dec-2007 10.4806 9.2100 7.3803 2.3471 2.1000 26 12
88 27-Dec-2007 9.3261 9 9.0014 2.7415 3.3340 27 12
89 28-Dec-2007 10.6441 7.1500 4.3609 -0.5598 -1.7540 28 12
90 29-Dec-2007 9.9763 8.3700 6.5585 1.9754 2.0710 29 12
91 30-Dec-2007 11.1371 8.7900 6.6393 2.5249 1.7690 30 12
92 31-Dec-2007 12.5380 10.3600 8.2621 3.7489 3.8360 31 12
93 01-Jan-2008 12.7904 10.7700 9.5477 3.2626 2.7920 1 1
94 02-Jan-2008 13.5825 11.1800 9.6864 1.8056 2.3100 2 1
95 03-Jan-2008 14.9227 12.5100 8.8516 0.3993 -0.6590 3 1
96 04-Jan-2008 5.1323 2.4440 -0.8252 -5.8602 -5.8660 4 1
97 05-Jan-2008 11.3851 11.5200 10.4861 3.6486 1.7390 5 1
98 06-Jan-2008 14.9464 12.3800 11.0018 7.5451 4.7840 6 1
99 07-Jan-2008 14.7323 12.3700 11.2677 6.6465 5.2930 7 1
100 08-Jan-2008 13.5228 12.8300 9.9102 5.5220 3.6140 8 1

Tair=DTable{:,(2:5)} % afficher les valeurs sans entete

Tair = 244×4
23.4965 22.5600 19.0390 9.4102
21.3763 18.6300 15.2107 6.3155
15.2702 13.2100 10.0352 5.6664
18.7171 15.6400 12.9345 12.9612
20.5888 17.6600 17.4945 12.5817
26.1367 23.3200 19.5091 9.6827
24.3471 21.3800 18.7000 10.6445
25.5508 22.1900 19.1023 11.1224
23.9505 19.2500 16.3748 8.0913

4
24.7203 19.6100 17.2416 7.6064

4.Statistique Bivariée
%Extraire des variables depuis la table xls
stname=DTable.Properties.VariableNames(2:6)

stname = 1×5 cell


'IMESKER' 'ARMED' 'TACHDERT' 'NELTNER' 'OUKASM'

Tair=DTable{:,(2:5)} %afficher les valeurs des station sans entete

Tair = 244×4
23.4965 22.5600 19.0390 9.4102
21.3763 18.6300 15.2107 6.3155
15.2702 13.2100 10.0352 5.6664
18.7171 15.6400 12.9345 12.9612
20.5888 17.6600 17.4945 12.5817
26.1367 23.3200 19.5091 9.6827
24.3471 21.3800 18.7000 10.6445
25.5508 22.1900 19.1023 11.1224
23.9505 19.2500 16.3748 8.0913
24.7203 19.6100 17.2416 7.6064

altitude=[1404 1940 2343 3230] % déclarer un variable sous le nom d'altitudes

altitude = 1×4
1404 1940 2343 3230

Linear Correlation Coefficient : Deux variables

r = corr(DTable.IMESKER,DTable.ARMED) %coefficients de corrélation

r = 0.9756

r2=corrcoef(DTable.IMESKER,DTable.ARMED) %corrélation linéaire

r2 = 2×2
1.0000 0.9756
0.9756 1.0000

[rho,pval] = corr(DTable.IMESKER,DTable.ARMED,'type','Pearson')

rho = 0.9756
pval = 2.4739e-161

[r,p] =corr(DTable{:,(2:5)}) % la correlation entre tous les station sous forme d'une matrice

r = 4×4
1.0000 0.9756 0.9422 0.7056
0.9756 1.0000 0.9715 0.7467
0.9422 0.9715 1.0000 0.8223
0.7056 0.7467 0.8223 1.0000
p = 4×4
1.0000 0.0000 0.0000 0.0000

5
0.0000 1.0000 0.0000 0.0000
0.0000 0.0000 1.0000 0.0000
0.0000 0.0000 0.0000 1.0000

n=1;
p = polyfit(DTable.ARMED,DTable.IMESKER,n)

p = 1×2
1.0406 2.3960

% Y=aX+b
a=p(1); %coefficient directeur
b=p(2); %’ordonnée à l’origine
[p,S2] =polyfit(DTable.ARMED,DTable.IMESKER,n); % S2, Strcuture to estimate Error fit
plot(DTable.ARMED,DTable.IMESKER,'rx',"LineWidth",1)
xlabel(stname{2}),ylabel(stname{1})%AJUSTEMENT

Imsker_Cal=polyval(p,DTable.ARMED);
% Ycal2=polyval(p2,cc);
% plot(DTable.ARMED,DTable.IMESKER,'bd', DTable.ARMED,Imsker_Cal,'-',cc,Ycal2,'r--')
plot(DTable.ARMED,DTable.IMESKER,'gx', DTable.ARMED,Imsker_Cal,'-r')
xlabel(stname{2}),ylabel(stname{1}) %afficher les noms des axes
title('Linear and Polynomial Fit of Tair Data')
grid on %activation du grid
legend ("Observed",strcat("Fit Order ",num2str(n)))

6
[Imsker_Cal,delta] = polyval(p,DTable.ARMED,S2);% to estimate Error fit
plot(DTable.Date,DTable.IMESKER,'-b',"LineWidth",1)
hold on %activer le travail dans meme figure
plot(DTable.Date,Imsker_Cal,'-.r',"LineWidth",1)
xlabel('Time'), ylabel(['Tair ',stname{1}, ' °C'])
title('Linear and Polynomial Fit of Tair Data')
grid on
legend ("Observed",strcat("Estimated from Poly Order ",num2str(n)))
hold off

7
clear, clc,close all
data= readtable('Temperature.xlsx'); %importation des données
var1=2+1;
var2=3+1;
figure
plot(data.Date,data.ARMED,'-r','LineWidth',1)
hold on
plot(data.Date,data.TACHDERT,'-b','LineWidth',2);
xlabel('TIME [Day]'), ylabel('Air Temperature [°C]');
%importer les nom de légend d'après l'entete de la table
legend(data.Properties.VariableNames{var1},data.Properties.VariableNames{var2})
title ('Air Temperature Variation')
grid on
hold off

8
[l,c]=find( isnan (data.TACHDERT))

l =

0×1 empty double column vector

c =

0×1 empty double column vector

nombre=length(l)

nombre = 0

indices=[l,c];
indices=indices'

indices =

2×0 empty double matrix

[r1,p1]=corrcoef(data.ARMED,data.TACHDERT)

r1 = 2×2
1.0000 0.9715
0.9715 1.0000
p1 = 2×2
1.0000 0.0000
0.0000 1.0000

[r,p]= corrcoef(data.ARMED,data.TACHDERT,'Rows','complete')

9
r = 2×2
1.0000 0.9715
0.9715 1.0000
p = 2×2
1.0000 0.0000
0.0000 1.0000

dlacunes=[data.ARMED(l,1),data.TACHDERT(l,1)]

dlacunes =

0×2 empty double matrix

% tester trois polynômes d'ajustent des mesures des deux stations ?


% a(isnan(a)~=1)
x=data.ARMED;
y=data.TACHDERT;
%Ignorer les NAN
xobs=x(isnan(y)~=1);
yobs=y(isnan(y)~=1);
[p1,S1] =polyfit(xobs,yobs,1);
% Ycalc1=polyval(p,xobs);
[Ycal1,delta] = polyval(p1,xobs,S1);% to estimate Error fit
plot(xobs,yobs,'b.', xobs,Ycal1,'r--')
% plot(xobs,Yobs,'b.', xobs,Ycal1,'-',cc,Ycal2,'r--')
xlabel(data.Properties.VariableNames{var1}),ylabel(data.Properties.VariableNames{var2})
title('Linear Fit for Tair')
grid on
legend ("Observed","Order 1")

10
plot(xobs,yobs,'r.')
hold on
plot(xobs,Ycal1,'b-')
plot(xobs,Ycal1+2*delta,'g--',xobs,Ycal1-2*delta,'g--')
title('Polynomial Fit of Data with 95% Prediction Interval')
legend('Data','Linear Fit','95% Prediction Interval')
grid on
xlabel(data.Properties.VariableNames{var1}),ylabel(data.Properties.VariableNames{var2});
hold off

11
dlacunes=[data.ARMED(l,1),data.TACHDERT(l,1)]

dlacunes =

0×2 empty double matrix

TS2fill=polyval(p1,data.ARMED(l,1))

TS2fill =

0×1 empty double column vector

gapfill=data.TACHDERT

gapfill = 244×1
19.0390
15.2107
10.0352
12.9345
17.4945
19.5091
18.7000
19.1023
16.3748
17.2416

gapfill(l,1)=TS2fill

gapfill = 244×1

12
19.0390
15.2107
10.0352
12.9345
17.4945
19.5091
18.7000
19.1023
16.3748
17.2416

figure
plot(data.Date,data.TACHDERT,'-c')
hold on
plot(data.Date(l,1),data.ARMED(l,1),'+b')
plot(data.Date(l,1),TS2fill,'.r')
plot(data.Date,gapfill,'-g')
legend('data gap','data Ref Stat','gapfill Point','gapfill')

Warning: Ignoring extra legend entries.

Exemple 2 : Interpolation of missing data;

% T=DTable.ARMED;
T=data.ARMED;
vtime=data.Date;
T(3:7)=nan;T(10:12)=nan;T(100:102)=nan;
nans = isnan(T); % indices to NaN values in T % (assumes there are no NaNs in vtime)

13
T2=T;%List with missing data Nan
nbrnan=sum(isnan(T))% Nombre de données manquante

nbrnan = 11

% replace all NaNs in T with linearly interpolated values


T(nans) = interp1(vtime(~nans), T(~nans), vtime(nans));
% figure
%Data comparaison
Dt=[T2,T]

Dt = 244×2
22.5600 22.5600
18.6300 18.6300
NaN 19.2233
NaN 19.8167
NaN 20.4100
NaN 21.0033
NaN 21.5967
22.1900 22.1900
19.2500 19.2500
NaN 18.8575

nanPrPost=[sum(isnan(T2)),sum(isnan(T))]% Nombre de données manquante avant et après

nanPrPost = 1×2
11 0

figure
plot(vtime,T2,'*',vtime,T,':'); grid on
legend ('raw data','corrected data')

14
15

Vous aimerez peut-être aussi