Professional Documents
Culture Documents
Guio Intro Matlab 1415
Guio Intro Matlab 1415
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.
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:
-
Introducci al MATLAB
limplementaci dun algoritme te lloc en leditor i no en la finestra de
commandes.
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.
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 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;
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
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.
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:
-
. 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)
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.
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]
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
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)
ii)
10/10