You are on page 1of 10

Introducci al MATLAB

Introducci al MATLAB

1. Introducci
Aquesta prctica t com a objectiu introduir algunes nocions bsiques sobre
ls de leina comercial MATLAB (Matrix Laboratory) de cara a poder-ne treure
partit durant la segona part de lassignatura, en especial en el clcul de
vibracions de sistemes amb N-graus de llibertat. Es tracta duna presentaci
informal i molt breu a aquesta potent eina de clcul, especialment dirigida a
aquells que no lhagueu fet servir mai.

2. La finestra inicial 1
En obrir el programa us trobareu amb una finestra similar a la que es presenta
a continuaci.

Figura 1. Una possible finestra inicial

Les captures de pantalla presentades a continuaci sn per al cas de la versi 2012b del programa.
Versions anteriors/posteriors poden tenir canvis en la disposici de les icones i opcions.

1/10

Introducci al MATLAB
En el cas presentat es poden diferenciar:
-

Les pestanyes superiors, de les que ara destaquem lopci de crear un


nou script i la de editar el conjunt de finestres (Layout) que observem
inicialment.

La carpeta actual (Current folder) on ens trobem i la seva ruta

Lespai de treball (Workspace), on es mostren el conjunt de dades que


hem definit/calculat en el nostre codi (i que potser ens interessa
guardar).

La finestra de comandes (Command window, seleccionat en el nostre


cas) i lhistorial de comandes executades. En ella podem anar executant
linies de codi que involucrin les variables guardades en el nostre
workspace simplement polsant enter desprs de cada lnia.

Leditor, on podem observar la funci o script actualment en edici. A no


ser que noms es vulguin executar un redut nombre de comandes,
2/10

Introducci al MATLAB
limplementaci dun algoritme te lloc en leditor i no en la finestra de
commandes.

Dentre les diferents pestanyes superiors, usarem aqu les opcions de la


pestanya EDITOR. Dins de les opcions que cont aquesta pestanya, cal
destacar Run i Run Section (veure figura inferior), les quals usarem per
executar els codis que generem. Amb aquestes opcions executarem els
nostres scripts, els quals a la vegada poden cridar les funcions que haguem
creat. Ms endavant explicarem aquest fet i comentarem tamb a que es
refereix lopci Run Section.

Tamb us ser molt til (no noms durant la prctica) fer s de lajuda del
programa, la qual presenta detallades definicions i un gran nombre dexemples
tils per cada comanda usada. No totes les comandes que susen en els
exemples daquesta prctica estan explicades. Quan no tingueu clar que fa una
certa comanda, busqueu a lajuda informaci de la mateixa.

3. Escalars, vectors i matrius


3.1 - Definici
En MATLAB les variables poden ser directament definides especificant el valor
que prenen, sense haver de definir prviament el tipus dinformaci que
emmagatzemen. Aix, si en el nostre script volem fer clculs on sinvolucri la
massa duna partcula, podem definir el seu valor escrivint:
m1 = 10; % massa partcula 1 [kg]

on tot el que queda a la dreta del smbol % s un comentari destinat a ajudar a


la persona que llegeixi el codi.
3/10

Introducci al MATLAB
Noteu que cada lnia a executar sha dacabar amb ; si no es vol veure el
resultat de la seva execuci a la finestra de comandes (Podeu provar
dexecutar lopci Run amb i sense la aquesta terminaci).
Les variables tamb poden prendre valors complexes. Per exemple:
cVar = 2 + 4i; % variable amb valor complex

Busqueu a lajuda del MATLAB la informaci de com usar les funcions del
MATLAB real(cVar), imag(cVar), angle(cVar) i abs(cVar).
(Informe) Calculeu els seus valors per a la variable anterior.
Hi ha diferents formes de definir un vector, per exemple:
acc = [0 1 2 3 4]; % vector explicit
acc2 = 0:4; % vector compacte

En el segon cas la comanda : indica que es realitza una llista de 0 a 4 amb


increments de 1. Altres increments tamb poden ser usats (fins i tot negatius),
per exemple, un vector temps amb increments de 0.2 s es pot definir com:
t = 0:0.2:4; % Vector amb increments no unitaris

Busqueu a lajuda com usar les funcions del MATLAB linspace(...) i


logspace(...) per a definir vectors linealment i logartmicament espaiats.
(Informe)Definiu dos vectors amb el mateix valor inicial i final, el mateix nombre
delements per uns equiespaiats i els altres amb un espaiat logartmic.
Tots aquests vectors sn vectors fila. Els vector columna corresponents es
poden obtenir aplicant la comanda transposici, definida per .
transT = t';

(Informe) Quina diferencia hi ha entre les dues comandes i . en el cas duna


variable complexa? Quina heu dusar per transposar el vector?
Les matrius es poden definir duna forma anloga al cas de la definici dun
vector explcit.
A = [1 2 pi;
4 5 6*rand;
0.7e1 8 9];

En aquest cas el separar en tres lnies la definici noms sha fet per clarificar
el codi (podem escriure tot un script en una nica lnia). Observeu tamb com
usar la constant , ls dun nombre generat aleatriament i la notaci cientfica
dun nmero (el 7 en aquest cas).
Mireu com definir matrius identitat, matrius de zeros i matrius de nombres
aleatoris de les dimensions desitjades mitjanant les funcions eye(...), zeros(...)
i rand(...).
4/10

Introducci al MATLAB
(Informe) Sumeu una matriu 3x3 de cada un daquests tres tipus i guardeu el
valor en una variable nova.
Extreure la part que ens interessi dun vector o matriu es pot fer de la segent
forma:
Arow1 = A(1,:); % Primera fila de A
Acol1 = A(:,1); % Primera columna de A
row1Reduced = Arow1(2:end); % De l'element 2 a l'ltim

En el cas de la matriu, la coma serveix per separar lndex referent a les files
del referent a les columnes. En lltima operaci, estem obtenint els ndex del 2
a lltim (end) del vector fila.
(Informe) Definiu una matriu de nombres aleatoris 4x4 i extraieu la matriu
formada per els dos ltims elements de les dues primeres files.
3.2 - Operacions
El producte de vectors i matrius es quasi directe de realitzar. Per exemple,
seguint fent s de la matriu A definida anteriorment, podem realitzar el segent
clcul:
v = [0 1 1].';
b = A*v;

Per al cas del producte de dues matrius tindrem:


B = eye(3) + ones(3);
C = A*B;
squareC = C^2;

Un tipus doperaci enormement til s la realitzaci doperacions punt a punt.


En un cas com lanterior, si en comptes de voler calcular el producte de dues
matrius i fer el quadrat del resultat anterior el que volem es aplicar aquestes
operacions a cada element de les matrius, el codi per fer-ho ser
squareCi = (A.*B).^2;

Es a dir, afegir . abans de qualsevol operaci significar que realitzem aquella


operaci per cada element del vector o matriu.
Apart de la facilitat en que es pot implementar aquest tipus de clculs, el
MATLAB s especialment eficient aplicant aquest tipus doperacions per a
vectors amb moltes dades.
Un exemple per comprovar les dues afirmacions s el segent.
%% Nova cel.la
clc; % Netejem la finestra de comandes
clear; % Netejem el workspace

5/10

Introducci al MATLAB
At = 0.001;
Tmax = 10;
t = 0:At:Tmax;
omega = 2*pi;

%
%
%
%

Incremet de temps
Temps mxim
Vector temps
Freqncia angular

% 1 - Clcul usant les operacions punt a punt del vector


tic
x1 = t.*sin(omega*t);
toc
% 2 - Clcul usant un bucle
tic
Nt = length(t);
x2 = zeros(1,Nt);
for iT = 1:Nt
x2(iT) = t(iT)*sin(omega*t(iT));
end
toc

Hi ha diverses coses a comentar en aquest codi:


-

Al usar la comanda %% hem definit una nova cella del nostre script, la
qual podem executar separadament mitjanant lopci run section
mencionada anteriorment. Aix s molt til per quan tinguem diversos
exemples a calcular i noms ens interessa executar-ne alguns.

Les comandes clc i clear netejen la finestra de comandes i el


workspace.
Mireu a lajuda altres opcions per a la comanda clear per si noms volem
eliminar algunes de les variables.

tic i toc calcula el temps que ha tardat a executar-se el codi que hi ha


entre elles.

En la definici del vector de valors que pren lndex del bucle (iT = 1:Nt)
podriem haver usat un increment no unitari (del tipus usat en t =
0:At:Tmax). En tot cas lndex iT ha de ser sempre enter positiu, ja que
el matlab considera la primera posici dun vector/matriu com la posici
1.

(Informe) Ara es demana que realitzeu aquesta mateixa comparativa per al cas
de dues dimensions. Els passos a realitzar sn:
-

Definiu dues matrius NxM delements aletoris A i B.

Per cada element daquestes matrius calculeu el segent

. Realitzeu el clcul fent servir dos bucles que recorrin les files i
columnes de la matriu i fent servir loperador ..
Compareu els temps de clcul a mesura que els valors N i M de les
dimensions de les matrius augmenten i comproveu que el resultat
obtingut s el mateix.

6/10

Introducci al MATLAB
3.3 - Vectors i valors propis duna matriu
En el clcul de sistemes de N-graus de llibertat adquirir gran importncia ls
dels valors i vectors propis duna matriu. En matlab aquests es poden calcular
fent s de la funci eig()
[V,D] = eig(A)

Busqueu al help del MATLAB a que corresponen les matrius V i D.


(Informe) Definiu una matriu 3x3 hermtica. Comproveu numricament que:
- Els valors propis sn reals
- Els vectors propis sn ortogonals.
3.4 - Sistemes lineals
La resoluci de sistemes dequacions de la forma , essent una matriu
i i dos vectors columna, tamb ser una operaci mpliament usada en la
resoluci numrica de problemes vibracions de N-graus de llibertat. Per a
realitzar aquest clcul en matlab susa la comanda \. :
x = A\b

(Informe) Definiu una matriu A i un vector de dades b i calculeu lexpressi de x


segons:
- I) Lexpressi mencionada dos lnies mes amunt.
- II) Calculant primer la inversa de la matriu A i multiplicant el resultat per
el vector b. Busqueu al help del MATLAB informaci de la comanda inv()
per a realitzar la inversa de A.
(Informe) Compareu el valor obtingut en cada cas i la eficincia del clcul per al
cas duna matriu de dimensions considerable (Podeu definir fcilment una
matriu gran usant les opcions de la operaci rand(N,N)).

4. Grfics
La presentaci de resultats elegants s especialment fcil amb el MATLAB. La
funci plot(...) presenta multitud dopcions diferents a usar. Tot seguit es
presenta un exemple amb algunes opcions bsiques especificades
t = 0:0.01:2;
freq = 1;
ASin2 = sin(2*pi*freq*t).^2./t;
ASin4 = sin(2*pi*freq*t).^4./t;
figure('Name', 'Nice plot');
plot(t, ASin2, 'r', t, ASin4, 'b');
legend('sin2', 'sin4')
xlabel('time [s]','Interpreter', 'Latex');
ylabel('Amplitude [m]', 'Interpreter', 'Latex');

7/10

Introducci al MATLAB
Comentem breument les opcions definides, per a ms informaci de cada una
delles novament exploreu el help del programa.
-

Figure demana una nova figura a la que hem anomenat Nice plot.
Plot efectua els grfics de les dues funcions respecte a la variable t
(noteu que t i la funci han de tenir el mateix nombre delements per a
poder dibuixar-les). La comanda r o b especifica el color que volem per
a cada grfic. En aquest cas hem dibuixat els dos grfics en la mateixa
figura.
Legend especifica la llegenda del grfic. Lordre dels textos ha de ser el
mateix que lordre dels grfics dins la comanda plot.
xlabel i ylabel especifiquen les etiquetes dels eixos.

El resultat daplicar aquest codi es mostra a continuaci:


5
sin2
sin4

4.5
4

A mplitude [m]

3.5
3
2.5
2
1.5
1
0.5
0

0.2

0.4

0.6

0.8

1.2

1.4

1.6

1.8

t ime [s]

Figura 2. Exemple de grfic

(Informe) Busqueu a lajuda com usar les opcions subplot, semilogx(),


semilogy() i loglog() per a presentar, en quatre subfinestres separades, el
resultat anterior quan un dels eixos s logartmic i quan els dos ho son.
Comproveu que passa si en comptes de calcular el sinus elevat a una potencia
parella, leleveu a una potencia senar.

5. Funcions
Sovint pot ser interessant, a mesura que el codi realitzat va prenent forma i/o
complexitat, empaquetar parts dun clcul en funcions que podem cridar
sempre que les necessitem. Per exemple, si hem de dividir molt sovint un
vector de dades per el seu valor absolut mxim, doncs podem definir una funci
que fagi aix i ens doni el vector de dades normalitzat.
Per crear una nova funci i veurela en lEditor hem de seguir les segents
opcions en les pestanyes superiors: New Function (opci que podem escollir

8/10

Introducci al MATLAB
tant des de la pestanya Home com des de la pestanya Editor). Un exemple de
funci que realitzi les operacions que hem dit s el segent:
function vector = ourNorm(vector)
vecAbs = abs(vector);
maxAbs = max(vecAbs);
vector = vector/maxAbs;
end

Aquest codi no el podrem executar directament amb lopci Run. Simplement


lhem de guardar (el nom del fitxer ha de ser igual al nom de la funci, es a dir
ourNorm.m) i posteriorment, des del nostre script ser suficient cridar-la.
Ens haurem dassegurar que el Matlab sap on anar a buscar la nostra funci,
en el nostre exemple ser suficient amb tenir ourNorm.m en la mateixa carpeta
que la que treballem. En cas de treballar amb funcions que es troben en altres
carpetes, lopci addpath() permet ficar aquestes dins del conjunt de
directoris en que el Matlab la buscar.
Des dun script extern, podem cridar a la nostra funci tal com es mostra en la
segent instrucci:
thisVec = 5:-1:-5
newVec = ourNorm(thisVec);

Noteu que no tenim perqu conservar el nom del vector, la funci s una caixa
negra.
No noms s prctic definir funcions per a evitar repetir clculs
innecessariament sino que tamb ens simplifica enormement el problema de
canviar com estem calculant els nostres vectors normalitzats en cas de
necesitar-ho. Ser molt ms senzill canviar una funci que no pas anar buscant
tots els llocs on fem aquest clcul i canviar-los un per un.
(Informe) Busqueu a lajuda del MATLAB la informacin de com usar la opci
xlsread() i escriviu una funci a la que sintrodueixi com a entrada la ruta duna
fulla de clcul Excel i que doni com a sortida el valor mxim i mnim que hi ha
dins la mateixa. Un exemple de nomenclatura per dues sortides s el seguent
(feu servir el que vulgueu vosaltres).
pathFile = 'C:/Uni/Mecanica2/excel.xslx';
[minValue, maxValue] = searchExcel(pathFile);

9/10

Introducci al MATLAB

6. Informe de la prctica
En linforme daquesta prctica no heu de seguir lestructuraci especificada en
la normativa i simplement heu de presentar el conjunt de resultats que shan
anat demanant en els diferents apartats, els quals han anat precedits de la
paraula Informe.
Tot i que linforme s en grup, seria molt convenient que tots els integrants del
mateix provssiu de realitzar els exemples que es demanen, de cara a tenir
dominats els clculs tpics que es faran en la segona part de lassignatura.
En la realitzaci de linforme podeu procedir de dues formes diferents:
i)

Responent a les diferents qestions en linforme i adjuntat els fitxers


de MATLAB usats durant la prctica

ii)

Escrivint directament els codis de cada secci en el mateix informe.


Lnic requisit es que tant linforme com el codi siguin fcils de seguir.
Escriviu explicacions concretes i precises i afegiu cometaris en el
codi quan no sigui intutiu el clcul que esteu realitzant.

10/10

You might also like