Sunteți pe pagina 1din 6

INTERPOLAREA DATELOR.

REPREZENTĂRI GRAFICE

12. INTERPOLAREA DATELOR. REPREZENTĂRI GRAFICE


12.1. Funcții Matlab folosite pentru interpolarea datelor
Interpolarea unui set discret de date [xi,yi] presupune determinarea unei funcții f(x) astfel
ca f(xi)=yi, în vederea estimării setului de date în orice alt punct x ≠ xi.
Interp1 Interpolează date din tabele unidimensionale
spline Interpolează prin metoda spline cubică date din tabele unidimensionale
interpft Interpolează prin metoda transformatei Fourier date din tabele
unidimensionale
interp2 Interpolează date din tabele bidimensionale
interp3 Interpolează date din tabele tridimensionale
interpn Interpolează date din tabele N‐dimensionale
meshgrid Generarea de tablouri pentru reprezentări 3D
griddata Interpolează valorile unei funcții de două variabile
12.2. Exemple
În tabelele următoare sunt date explicații și exemple privind utilizarea funcțiilor de
interpolare a datelor. Exemplele se vor scrie într-un fișier function L12_NumePrenume.
După studierea exemplelor, analiza și înțelegerea rezultatelor, se vor rezolva aplicațiile în
același fișier.
12.2.1 Interpolarea datelor din tabele unidimensionale
Sintaxa - Explicație Exemple

x=[1,2,3,5,6,7,8];
yi=interp1(x,y,xi) y=[2,5,7,8,9,11,14];
x, y sunt vectori ce conțin abscisele și ordonatele xi=[1:.1:10];
date iar xi este vectorul noilor abscise (mai fin) iar yi=interp1(x,y,xi)
yi este vectorul ordonatelor corespunzătoare. Nu
permite extrapolare (returnează NaN pentru valori plot(x,y,'o',xi,yi);...
title('interpolare liniara');...
care nu sunt cuprinse intre valorile extreme ale grid;legend('date','linear')
vectorului x).
x=[1,2,3,5,6,7,8];
y=[2,5,7,8,9,11,14];
yi=interp1(x,y,xi,'metoda')
xi=[1:.1:10];
Metode de interpolare: linear (implicit), nearest,
spline, cubic. Nu permite extrapolare decât cu y1i=interp1(x,y,xi,'nearest')
metodele spline și cubic. y2i=interp1(x,y,xi,'linear')
y3i=interp1(x,y,xi,'spline')
!!! Valorile vectorului x trebuie să fie ordonate y4i=interp1(x,y,xi,'cubic')
crescător. plot(x,y,'o',xi,y1i,xi,y2i,...
xi,y3i,xi,y4i);...
title('metode interpolare');...
grid;legend('date','nearest',...
'linear','spline','cubic')

P a g . | 71
INTERPOLAREA DATELOR. REPREZENTĂRI GRAFICE

x=[1,2,3,5,6,7,8];
yi=spline(x,y,xi) y=[2,5,7,8,9,11,14];

Echivalent cu xi=[1:.1:10];
yi=spline(x,y,xi)
yi=interp1(x,y,xi,'spline') plot(x,y,'o',xi,yi)

yi=interp1(x,y,xi,'metoda','extrap') x=[3,5,6,7,8];
y=[7,8,9,11,14];
Interpolează și extrapolează xi=[1:.1:10];
y1i=interp1(x,y,xi,'linear')
indiferent de metoda specificată. y2i=interp1(x,y,xi,'linear', 'extrap')

figure,plot(x,y,'o',xi,y1i);...
figure,plot(x,y,'o',xi,y1i) title('interpolare liniara');...
grid;legend('date','linear')
figure,plot(x,y,'o',xi,y2i)
figure,plot(x,y,'o',xi,y2i);...
Graficele sunt returnate în figuri diferite. title('interpolare/extrapolare');...
grid;legend('date',...
'linear - extrapolare')
figure,subplot(2,1,1),...
plot(x,y,'o',xi,y1i); subplot(2,1,2),... figure,subplot(2,1,1),...
plot(x,y,'o',xi,y1i);...
plot(x,y,'o',xi,y2i); subplot(2,1,2),...
Mai multe reprezentări grafice in aceeași figură. plot(x,y,'o',xi,y2i)

12.2.2 Interpolarea datelor din tabele bidimensionale


Sintaxa - Explicație Exemple

Zi=interp2(x,y,Z,xi,yi) x=[1 5 10 20];


y=[1 3 10]';
Z=[2,6,7,5;3,4,8,6;4,6,9,5]
Zi=interp2(x,y,Z,xi,yi,'metoda')
xi=1:20;
x –vector linie, y –vector coloană,
Z este matricea valorilor F(x,y), (date) yi=[1:10]';
xi –vector linie, yi –vector coloană (cu pași mai
Zi=interp2(x,y,Z,xi,yi);
mici –cu mai multe elemente în același interval),
Zi este matricea valorilor F(xi,yi), surf(x,y,Z);hold on;
surf(xi,yi,Zi+50);
Zi=interp2(x,y,Z,val1,val2)
Estimarea valorii funcției Z= F(x,y), pentru anumite Zil=interp2(x,y,Z,3.72,5.68,'linear')
valori ale variabilelor (val1 , val2)
Zic=interp2(x,y,Z,3.72,5.68,'spline')
Zi=interp2(Z,1)
Mărește matricea Z introducând câte un element Zi1=interp2(Z,1)
intermediar prin interpolare.
Zi2=interp2(Z,2)

P a g . | 72
INTERPOLAREA DATELOR. REPREZENTĂRI GRAFICE

12.2.3 Generarea tablourilor pentru reprezentări tridimensionale


Sintaxa - Explicație Exemple
[X,Y]=meshgrid(x,y) x=[-5:5]
y=[1:4]
[X,Y]=meshgrid(x) [X,Y]=meshgrid(x,y)
Z1=2*X+3*Y-X.*Y+X.^3-Y.^2
figure,surf(X,Y,Z1)
Transformă domeniul specificat de vectorii x și y în
x=[-2:.1:2]
matrice care permit evaluarea funcțiilor de două
[X,Y]=meshgrid(x)
variabile. Z2=X.*exp(-X.^2-Y.^2)
figure,surf(X,Y,Z2)

Zi=griddata(X,Y,Z,Xi,Yi) x=[1 5 10 20]


Interpolarea funcțiilor de două variabile. y=[1 3 10]'
[X,Y]=meshgrid(x,y)
Z=[2,6,7,5;3,4,8,6;4,6,9,5]
xi=[1:20]
yi=[1:10]'
[Xi,Yi]=meshgrid(xi,yi)
Zi=griddata(X,Y,Z,Xi,Yi,'cubic');
surf(X,Y,Z);hold on; surf(Xi,Yi,Zi+10)

P a g . | 73
INTERPOLAREA DATELOR. REPREZENTĂRI GRAFICE

12.3. Aplicații
1. În cadrul unui experiment o epruvetă de metal se încălzește timp de 60 secunde. S-a
măsurat temperatura T a epruvetei la intervale de timp de 10 secunde și s-au obținut valorile
din tabelul de mai jos:

t [s] 0 10 20 30 40 50 60
T [o C] 0 33 40 50 68 79 90

Să se estimeze variația temperaturii pentru fiecare din cele 60 secunde folosind interpolarea
liniară și interpolarea spline cubică. Să se traseze graficele de variație a temperaturii
(ordonata) funcție de timp (abscisa) în urmăroarele variante:
- figuri distincte;
- grafice diferite cu același siatem de axe și cu legendă;
- grafice diferite cu sisteme de axe distincte, alăturate în cadrul aceleiași figuri, cu titlu
pentru fiecare figură și cu etichete pe axe.

2. Folosind datele de la aplicația 1 să se estimeze valoarea temperaturii epruvetei la


momentul t=27,3 s.

3. În următorul tabel sunt date valorile pentru o mărime care depinde de două variabile
M(x,y).

x 15 20 25 30
y
10 100 121 133 110
20 120 125 140 189
30 134 145 130 135

Să se reprezinte 3D variația mărimmii M(x,y).


Să se determine prin interpolare biliniară și să se reprezinte grafic 3D valorile M(xi,yi), unde
xi variază cu pasul 1 de la 10 la 30 și yi variază cu pasul 1 de la 15 la 30.
Să se estimeze folosind interpolarea cubică M(15,22).

P a g . | 74
INTERPOLAREA DATELOR. REPREZENTĂRI GRAFICE

12.4. Soluții

% Aplicația 12.3.1

t=[0:10:60]
T=[0 33 40 50 68 79 90]

ti=[0:60];

Ti1=interp1(t,T,ti,'linear');

Ti2=interp1(t,T,ti,'spline');

figure,plot(t,T,'o',ti,Ti1),...
title 'Variatia temperaturii - linear',grid
figure,plot(t,T,'o',ti,Ti2),...
title 'Variatia temperaturii- spline',grid

plot(t,T,'o',ti,Ti1,ti,Ti2),legend('date','linear','spline')

figure,subplot(2,1,1),plot(t,T,'o',ti,Ti1),...
title ('Variatia temperaturii - linear'),...
xlabel('timp [s]'), ylabel('temperatura.[grade C]'),grid,...
subplot(2,1,2),plot(t,T,'o',ti,Ti2),...
title ( 'Variatia temperaturii - spline'),...
xlabel('timp [s]'), ylabel('temperatura.[grade C]'), grid

% Aplicația 12.3.2

t=[0:10:60]
T=[0 33 40 50 68 79 90]

ti=27.3

Ti1v=interp1(t,T,ti,'linear');

Ti2v=interp1(t,T,ti,'spline');

P a g . | 75
INTERPOLAREA DATELOR. REPREZENTĂRI GRAFICE

% Aplicația 12.4.3

%varianta 1

x=[15 20 25 30]
y=[10 20 30]
[X,Y]=meshgrid(x,y)

M=[100 121 133 110;...


120 125 140 189;...
134 145 130 135]

xi=[15:30]
yi=[10:30]
[Xi,Yi]=meshgrid(xi,yi)
Mi=griddata(X,Y,M,Xi,Yi)

figure, surf(X,Y,M)

figure, surf(Xi,Yi,Mi)

%varianta 2

x=[15 20 25 30];
y=[10 20 30]';
M=[100 121 133 110;...
120 125 140 189;...
134 145 130 135];

figure,surf(x,y,M)

xi=[15:30];
yi=[10:30]';
Mi=interp2(x,y,M,xi,yi);
Mi1=interp2(x,y,M,15,22,'cubic')
figure,surf(xi,yi,Mi)

P a g . | 76

S-ar putea să vă placă și