REPREZENTĂRI GRAFICE TRIDIMENSIONALE UTILIZÂND MATLAB Funcţie de o singură variabilă y=f(x) linie Reprezentare grafică bidimensională 2D Funcţie cu două variabile z=f(x,y) suprafaţă Reprezentare grafică tridimensională 3D Reprezentări grafice 3D: 1. Linii de contur 2. Reţele spaţiale 3. Suprafeţe spaţiale Pentru a putea reprezenta o funcţie de două variabile z=f(x,y) este necesară generarea unei reţele de noduri în planul x-y. În nodurile reţelei se calculează valoarea funcţiei de reprezentat. [X,Y]=meshgrid(x,y) Această funcţie transformă domeniul plan definit de cei doi vectori x şi y monoton crescători şi cu pas constant în matricele (tablourile) X şi Y. Acestea din urmă practic conţin perechile de coordonate ale nodurilor definite în planul respectiv, şi pot fi utilizate atât la evaluarea funcţiilor de două variabile, cât şi pentru reprezentările grafice tridimensionale. Dacă vectorul x este de lungime n, iar y are m elemente, atunci matricele X şi Y vor avea dimensiunea nxm. Cele m linii ale matricei X vor coincide cu vectorul x. Cealaltă matrice generată, Y, va avea n coloane identice cu vectorul y. Aceste două matrice se vor putea utiliza pentru definirea unei funcţii de două variabile în nodurile definite 1
x=-1:1; y=-2:0.5:3; [X,Y]=meshgrid(x,y); X = Y = -1 0 1-1 0 1-1 0 1-1 0 1-1 0 1-1 0 1-2 -2-2 -1-1 -1 0 0 0 1 1 1 2 2 2 3 3 3 În toate exemplele care vor urma se va reprezenta următoarea funcţie de două variabile: peaks.m 2 2 2 x ( y+ 1) z( x, y) = 3(1 x) e x 2 2 2 2 3 3 x y 1 ( x+ 1) y 10 x y e e 5 3 1. REPREZENTĂRI CU LINII DE CONTUR contour(x,y,z) C=contour(X,Y,Z) [C,h]=contour(X,Y,Z) contour(x,y,z,n) contour(x,y,z,v) 1. Desenează 10 linii de contur 2. Pe lângă cele 10 linii de contur se obţine şi matricea liniilor de contur (C) 3. Se obţine şi identificatorul grafic al obiectului grafic desenat (h) 4. Se prescrie numărul liniilor de contur de desenat (n) 5. Se vor desena liniile de contur aferente valorilor date în vectorul v % Generarea retelei de noduri pe domeniului considerat [X,Y]=meshgrid(-3.75:0.05:3.5); % Evaluarea functiei de doua variabile de reprezentat Z=peaks(X,Y); % Reprezentarea liniilor de contur contour(x,y,z) 2
Dacă se doreşte să se reprezinte 50 de linii de contur funcţia trebuie apelată astfel: contour(x,y,z,50) Cu ajutorul următoarei secvenţe de program se vor desena liniile de contur aferente vectorului v cu linii de grosime 1,5 şi de culoare galbenă: % Specificarea nivelelor de reprezentat v=[-1:2:7]; % Lansarea comenzii pentru reprezentarea grafica [C,h]=contour(X,Y,Z,v,'y'); % Setarea grosimii liniilor de contur set(h,'linewidth',1.5); Există posibilitatea desenării liniilor de contur aferente valorilor pozitive şi negative cu diferite tipuri de linii. Pentru acesta după încărcarea matricei Z se lansează următoarea secvenţă de program: % Incarcarea nivelelor negative de reprezentat v_neg=-3:0.5:-1; % Incarcarea nivelelor pozitive de reprezentat v_poz=1:0.5:7; % Desenarea liniilor de contur corespunzatoare % - nivelelor negative cu linii intrerupte albastre contour(x,y,z,v_neg,'b--'); hold on % - nivelelor pozitive cu linii continue rosii contour(x,y,z,v_poz,'r-'); hold off 3
Prin utilizarea comenzii clabel există posibilitatea etichetării liniilor de contur desenate clabel(c) clabel(c,v) clabel(c,'manual') 1. Etichetează automat liniile de contur deja desenate 2. Etichetează doar liniile de contur aferente valorilor cuprinse în vectorul v 3. Etichetarea manuală clabel(c) Cu ajutorul funcţiei contour3 se pot desena linii de contur tridimensionale. Toate sintaxele prezentate în cazul funcţiei contour sunt valabile şi în acest caz. Să se reprezinte funcţia dată cu 30 de linii contur spaţiale de grosime 1,5 şi să se personalizeze reprezentarea grafică obţinută prin: Specificarea unui titlu Etichetarea axelor Plasare unui caroiaj peste figură % Evaluarea functiei considerate [X,Y]=meshgrid(-3.75:0.25:3.5); Z=peaks(X,Y); % Comanda destinata desenarii a 30 de linii de % contur spatiale corespunzatoare functiei date [C,h]=contour3(X,Y,Z,30); % Setarea grosimii liniilor de contur la 1,5 puncte set(h,'linewidth',1.5) % Plasarea unui grid (3D in acest caz) grid on % Determinarea limitelor axelor de coordonate axis([-3,3,-3,3,-6,6]) % Etichetarea celor trei axe xlabel('x') ylabel('y') zlabel('z') % Scrierea unui titlu deasupra figurii title('reprezentarea CU LINII DE CONTUR SPATIALE') 4
a. Reprezentarea cu o reţea spaţială 2. DESENAREA SUPRAFEŢELOR SPAŢIALE mesh(x,y,z,c) Matricea de culoare C defineşte modul de colorare al reţelei Funcţia mesh mai are alte trei variante: 1. meshc desenează suplimentar sub reţeaua spaţială liniile de contur 2. meshz sub reţeaua mai trasează suplimentar un plan de referinţă până la valoarea minimă a funcţiei (un fel de piedestal) 3. waterfall desenaeză o figură foarte asemănătoare cu cea obţinută cu ajutorul funcţiei meshz, cu singura diferenţă că în acest caz se desenează dintre liniile care formează reţeaua doar cele de pe axa y. % Evaluarea functiei date pe domeniul considerat [X,Y]=meshgrid(-3.75:0.2:3.5); Z=peaks(X,Y); % Lansarea comenzii mesh destinata % reprezentarii grafice dorite mesh(x,y,z) b. Reprezentarea cu suprafeţe netede surf(x,y,z,c) Funcţia surface are de asemenea o serie de variante: 1. surfc sub suprafaţa netedă desenează şi liniile de contur 2. surfl se poate specifica punctul de iluminare a suprafeţei 3. surfnorm - pe lângă suprafaţa generată se mai desenează şi normala la fiecare element al reţelei 5
surf(x,y,z) Legendă de culori Reprezentărilor spaţiale se poate ataşa o legendă de culori, care indică la ce nivele ce nuanţe de culori corespund în reprezentarea dată. colorbar('orientare') unde orientare poate fi: vert horz mesh(x,y,z) colorbar surf(x,y,z) colorbar('horz') 3. Alte grafice tridimensionale plot3(x,y,z) Uneşte cu drepte punctele spaţiale definite de coordonatele x, y şi z (stocate în cei trei vectori x, y, respectiv z). Toate variantele de apelare ale funcţiei plot sunt valabile şi aici. Să se reprezinte în spaţiu spirala lui Arhimede dată de următorul sistem de ecuaţii: x( t) = r( t)sin( t) y( t) = r( t)cos( t) unde: r( t) = c t pentru c=0,3 pe intervalul t [0, 100]. 6
% Incarcarea variabilei c si a vectorului t c=0.3; t=0:0.1:100; % Determinarea coordonatelor punctelor % definite de sistemul de ecuatii r=c.*t; x=r.*sin(t); y=r.*cos(t); % Trasarea liniei spatiale reprezentand spirala lui % Arhimede cu o linie rosie de grosime 1,5 plot3(x,y,t,'r','linewidth',1.5) % Plasarea unui rastru spatial grid % Etichetarea celor trei axe xlabel('x') ylabel('y') zlabel('t') fill3(x,y,z,c) Desenează poliedre spaţiale. Vârfurile poliedrelor sunt determinate de vectorii x, y, z, Variabila c defineşte culoarea de desenare a feţeloor poliedrului. Să se reprezinte un poliedru spaţial cu trei feţe perpendiculare, de diferite culori. % Incarcarea vectorilor cu coordonatele varfurilor % celor trei dreptunghiuri care vor forma % poliedrul spatial x1=[0,1,1,0]; y1=[0,0,-1,-1]; z1=[0,0,0,0]; x2=[1,1,1,1]; y2=[0,0,-1,-1]; z2=[0,1,1,0]; x3=[0,1,1,0]; y3=[0,0,-1,-1]; z3=[1,1,1,1]; % Comanda formata din trei unitati, fiecare % desemnand cate-o fata a poliedrului spatial fill3(x1,y1,z1,'r',x2,y2,z2,'g',x3,y3,z3,'b'); cylinder(r,n) [X,Y,Z]=cylinder(r,n) Generează un obiect de tip cilindru (practic o suprafaţă de revoluţie) de înălţime, măsurată pe direcţia z, unitară. Vectorul r precizează punctele care definesc dreapta sau curba rotită în jurul axei z. Scalarul n indică numărul punctelor de pe circumferinţa corpului generat Implicit se consideră n=20 şi r=[1,1]. Alegând corespunzător r şi n se pot desena diferite corpuri spaţiale: con, trunchi de con, piramidă, trunchi de piramidă, etc. 7
cylinder Să se deseneze un con cu raza 2 şi înălţime 10. % Precizarea punctelor de pe dreapta care defineste % suprafata de rotatie si a inaltimii corpului r=[2,0]; hm=10; % Incarcarea celor trei matrice cu datele suprafetelor [X,Y,Z]=cylinder(r,50); % Impunerea inaltimii corpului Z=hm*Z; % Desenarea corpului h=surf(x,y,z); % Setarea colorilor utilizate la desenare: % - albastru pentru desenarea laturilor % - galben pentru culoarea suprafetelor set(h,'edgecolor','b') set(h,'facecolor','y') sphere Desenează o sferă unitară. sphere axis equal 4. FUNCŢII UTILE ÎN REPREZENTĂRI SPAŢIALE Reprezentările grafice tridimensionale, fiind obiecte spaţiale, pot fi vizionate din diferite puncte (sub diferite unghiuri) ale spaţiului. Controlul acesteia se poate face cu funcţia: view(v,h) view([x,y,z]) 1. Se fixează unghiul din care se vede obiectul prezentat, compus din unghiul de rotire în plan, pe orizontală (azimutul) şi unghiul pe verticală, făcut cu planul orizontal (elevaţia). 2. Se stabilesc cele trei coordonate ale punctului de observare. 8
view([1,0,0]) view(30,65) Modul de desenare şi de colorare al reprezentărilor grafice spaţiale ajută mult la interpretarea lor corectă. Funcţia shading setează modul de desenare a lor shading flat shading faceted shading interp 1. Fiecare ochi al reţelei este colorat cu culoarea corespunzătoare nivelului vârfului din stângasus al ochiului 2. Ca şi în cazul precedent, cu diferenţa că pe figură se desenează şi reţeaua spaţială (este setarea implicită) 3. Fiecare element este colorat cu o nuanţă rezultată din interpolarea liniară a culorilor corespunzătoare liniilor sau colţurilor suprafeţei, rezultând o trecere de la o nuanţă la alta mai plastică Pentru colorarea suprafeţelor se utilizează hărţi de culori (color maps), stocate în matrice de dimensiuni mx3. O asemenea matrice defineşte m culori. Pe fiecare dintre cele m rânduri ale matricei este un triplet RGB. Primul rând din această matrice defineşte culoarea corespunzătoare nivelului cel mai mic din figură Cele trei valori de pe ultimul rând specifică componentele culorii ataşată celui mai mare nivel Restul nivelelor se colorează interpolând scara de culori în funcţie de valoarea nivelului. colormap(nume_harta(m)) colormap(c) C=colormap 1. Se utilizează harta colorată nume_harta conţinând m combinaţii de culori (implicit m=64) 2. Se utilizează harta colorată C definită de utilizator 3. Returnează matricea c aferentă hărţii colorate implicite Există 17 hărţi de culori predefinite dintre care amintim: bone (cu nuanţe de albastru) cool (culori albastru-mov) copper (nuanţe de arămiu) flag (alternativ roşu, alb, albastru şi negru) gray (nuanţe de gri) hot (combinaţii de negru, roşu, galben şi alb) hsv (culori determinate sub forma HSV nuanţăsaturaţie-luminozitate, Hue-Saturation-Value) jet (nuanţe saturate date sub formă HSV) pink (nuanţe de pastel) prism (repetă ciclic cele şase culori ale curcubeului: roşu, portocaliu, galben, verde, albastru şi violet) 9
Alte funcţii utile: Cu caxis se poate utiliza doar o parte a matricei de culori Cu brighten se poate seta luminozitatea (stărlucirea) repfrezentării grafice contrast reglează contarcstul reprezentării garfice Toate acestea practic modifică harta de culori utilizată. shading flat colormap(jet(250)) surfl(x,y,z,[0,90]) colormap(pink) shading interp 3. Utilizarea graficelor spaţiale la reprezentarea caracteristicilor în funcţie de un parametru ale maşinilor electrice a. Reprezentarea caracteristicilor de viteză ale maşinilor de c.c. cu excitaţie serie şi derivaţie Caracteristicile de viteză ale maşinilor de c.c. cu excitaţie serie şi derivaţie pentru caul în care în există rezistenţe externe în circuit sunt date de U ( R + Ω = a Rext ) Ia KeΦ Ω viteza U tensiunea la borne R a rezistenţa indusului R ext rezistenţa externă I a curentul din indus K e constanta comună a maşinii Φ fluxul util de excitaţie Să se reprezinte pentru diferite valori ale rezistenţei exterioare caracteristicile de viteză ale maşinii de c.c. având următoarele date: U N =220 V R a =0.82 Ω Ω N =50*π rad/s I N =22 A K e Φ=1.285 Vs Rezistenţa exterioară să se varieze între 0 şi 7 Ω (din 1 în 1 Ω). 10
Varianta 1. Reprezentarea grafică bidimensională clear all; clf % datele masinii UN=220; %[V] Ra=0.82; %[ohm] OmegaN=50*pi; %[rad/s] IN=22; %[A] KeFi=1.285; %[Vs] % Ciclu pentru desenarea diferitelor caracteristici for Rext=0:7; I=0:0.1:25; Omega=(UN-(Rext+Ra)*I)/KeFi; plot(i,omega,'b','linewidth',1.5) hold on end axis([0,30,0,180]) xlabel('i [A]') ylabel('\omega [rad/s]') hold off % Ciclu pentru etichetarea caracteristicilor desenate for Rext=0:7; I=25; Omega=(UN-(Rext+Ra)*I)/KeFi; text(i,omega,[' R_{ext}=',num2str(Rext),' \Omega']) end Varianta 2. Reprezentarea grafică în spaţiu clear all; clf Rext=0:0.5:7; I=0:25; [X,Y]=meshgrid(I,Rext); nrx=0; for x=i nrx=nrx+1; nry=0; for y=rext nry=nry+1; Z(nry,nrx)=mcc1(x,y); end;end; mesh(x,y,z,'linewidth',1.25) view([1,1,1]) axis([0,25,0,7,0,175]) set(gca,'xtick',0:5:25) set(gca,'ytick',[0,2,4,6,7]) set(gca,'ztick',0:25:175) xlabel('i [A]') ylabel('r_{ext} [\Omega]') zlabel('\omega [rad/s]') hidden off grid on În programul precedent s-a utilizat pentru calcularea vitezei maşinii o funcţie (mcc1.m) având două variabile la intrare: function Omega=mcc1(I,Rext) UN=220; %[V] Ra=0.82; %[ohm] OmegaN=50*pi; %[rad/s] IN=22; %[A] KeFi=1.285; %[Vs] Omega=(UN-(Rext+Ra)*I)/KeFi; 11
Compararea figurilor b. Reprezentarea caracteristicilor mecanice ale maşinilor asincrone cu rotorul bobinat Caracteristica mecanică a maşinii asincrone cu rotorul bobinat, M=f(s), este dată de relaţia: 2 m1 p R2 U f M = 1 2 π f 2 1 s R R 2 1 + + s ( X + X ) 2 m 1 numărul fazelor p numărul perechilor de poli U f1 tensiunea de alintare f 1 frecvenţa tensiunii de alimentare R 1 rezistenţa statorică R ' 2 rezistenţa rotorică raportată la stator X 1 reactanţa de scăpări ale înfăşurărilor statorice X ' 2 reactanţa de scăpări ale înfăşurărilor rotorice raportată la stator 1 2 Să se reprezinte caarcteristicile mecanice ale maşinii asincrone cu rotorul bobinat având datele următoare: m 1 =3, p=3 U f1 =220 V, f 1 =50 Hz R 1 =0,472 Ω, R 2 '=0,568 Ω X 1 =2,3 Ω, X 2 '=2,272 Ω, Varianta 1. Reprezentarea grafică bidimensională Se vor considera rezistenţele rotorice având valorile cuprinse între limitele R 2 ' şi 11 R 2 '. 12
clear all; clf UN=220; % V m=3; p=3; f=50; % Hz R1=0.472; R2=0.568; % ohm X1=2.3; X2=2.272; %ohm nr=0; for k=1:2:11; nr=nr+1; s=-2:0.005:2; if s==0 M=0; else M=m*p/2/pi/f*k*R2./s*UN^2./((R1+k*R2./s).^2+(X1+X2)^2); end MM(:,nr)=M'; SS(:,nr)=s'; end plot(ss,mm,'linewidth',1.5) xlabel('s'); ylabel('m [Nm]') h=legend('r2','3r2','5r2','7r2','9r2','11r2'); grid on axes(h); refresh Varianta 2. Reprezentarea grafică în spaţiu clear all; clf k=1:0.5:11; s=-2:0.25:2; [X,Y]=meshgrid(s,k); nrx=0; for x=s nrx=nrx+1; nry=0; for y=k nry=nry+1; Z(nry,nrx)=mas1(x,y); end;end; surf(x,y,z) colorbar view(15,50) axis([-2,2,1,11,-175,125]) set(gca,'ytick',[1,2,3,5,7,9,11]) set(gca,'ztick',[-150,-100,- 50,0,50,100,150]) xlabel('s') ylabel('k \cdot R2 [\Omega]') zlabel('m [Nm]') grid on Programul precedent utilizează funcţia msa1.m destinată calculării cuplului maşinii sincrone cu rotorul bobinat. Are ca variabile de intrare alunecarea (s), respectiv multiplicatorul rezistenţei rotorice (k). function M=mas1(s,k) UN=220; %[V] m=3; p=3; f=50; % Hz R1=0.472; %ohm R2=0.568; % ohm X1=2.3; %ohm X2=2.272; %ohm if s==0 M=0; else M=m*p/2/pi/f*k*R2./s*UN^2./((R1+k*R2./s).^2+(X1+X2)^2); end 13
Compararea figurilor Vă mulţumesc pentru atenţia acordată! 14