Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Crearea fisierelor MATLAB (.m files)

Matlab



+ Font mai mare | - Font mai mic



Crearea fisierelor MATLAB (.m files)

Deoarece este mult mai comod si util decat introducerea comenzilor linie dupa linie la prompterul MATLAB, se lucreaza cu fisiere text care contin aceste linii program cu comenzile necesare.



Aceste fisiere contin cod in limbajul MATLAB si sunt denumite .m files (sau M-files). Fisierele se creeaza utilizand un editor de text si apoi se utilizeaza ca o comanda MATLAB obisnuita.

Sunt doua tipuri de fisiere .m:

Fisiere Script, care nu accepta argumente de intrare si nu returneaza argumente de iesire. Aceste fisiere opereaza cu datele din spatiul de lucru.

Rutine (functii), care accepta argumente de intrare si returneaza argumente de iesire. Variabilele utilizate sunt variabile locale (interne) ale functiei.

Pentru a vedea continutul unui fisier MATLAB, de exemplu evolutie_studii.m, se foloseste comanda:

 type evolutie_studii

Fisiere Script

Atunci cand se apeleaza la un fisier script, MATLAB-ul executa comenzile gasite in fisierul respectiv. Fisierele script pot lucra cu date din spatiul de lucru (workspace) sau pot crea date noi cu care opereaza. Script-urile nu furnizeaza argumente de iesire, iar variabilele create raman in workspace, pentru a fi eventual folosite in calculele ulterioare.

Fisierele script pot furniza iesiri grafice folosind functii cum ar fi plot,bar.

Exemplu de fisier script: magicrank.m, cu urmatoarele comenzi MATLAB:

% Investigate the rank of magic squares
r = zeros(1,32);
for n = 3:32
 r(n) = rank(magic(n));
end
r
bar(r)

La tastarea numelui fisierului script (fara extensia .m):

 magicrank

MATLAB-ul executa comenzile, calculeaza rangul unor matrici (matricile magice), si traseaza graficul cu rezultatele calculului. Dupa ce se termina executia fisierului, variabilele n si r raman in spatiul de lucru.

Graficul rezultat este prezentat in continuare:

Functii (rutine)

Aceste fisiere accepta argumente de intrare si furnizeaza argumente de iesire. Numele fisierului MATLAB (M-file) si cel al functiei (subrutinei) respective trebuie sa fie identice. Functiile (subrutinele) lucreaza cu variabile proprii separate de spatiul de lucru uzual al MATLAB-ului.

Exemplu: functia rank. Fisierul M-file rank.m este disponibil in directorul

toolbox/matlab/matfun

Se poate vizualiza fisierul cu comanda:

 type rank
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of 
% linearly independent rows or columns of a matrix A
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default
% tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
 tol = max(size(A)) * max(s) * eps;
end
r = sum(s > tol);

Prima linie a unei functii M-file incepe cu cuvantul cheie function. Aceasta linie da numele functiei, ordinea si numarul argumentelor.

Liniile urmatoare (care incep cu caracterul %) sunt linii de comentariu, care de fapt sunt si liniile afisate atunci cand se apeleaza la comanda

 help rank

Restul liniilor sunt executabile. Variabila s, ca si r, A, tol sunt variabile locale ale functiei si sunt separate de variabilele din workspace.

Functia rank poate fi utilizata in diferite moduri:

 rank(A)
 r = rank(A)
 r = rank(A,1.e-6)

Variabile globale

Daca se doreste ca mai multe astfel de subrutine sa utilizeze o anume variabila comuna, se declara variabila respectiva ca globala utilizand comanda global in toate functiile respective.

Exemplu: fisierul falling.m:

function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;

Se introduc apoi in mod interactiv liniile:

 global GRAVITY
 GRAVITY = 32;
 y = falling((0:.1:5)');

Functia eval

Functia eval lucreaza cu variabila text pentru implementarea unei facilitati puternice de tip macro text.

Expresia

eval(s)

foloseste interpreter-ul MATLAB pentru evaluarea expresiei sau executia declaratiei din sirul de caractere s.

Vectorizarea

Pentru a obtine o viteza de calcul mare, este foarte importanta asa-numita vectorizare a algoritmilor in fisierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip for sau DO, MATLAB-ul poate utiliza operatii matriceale sau vectoriale.

Un exemplu simplu este urmatorul:

x = 0;
for k = 1:1001
 y(k) = log10(x);
 x = x + .01;
end

Versiunea vectorizata a aceluiasi program este

x = 0:.01:10;
y = log10(x);

Programatorii MATLAB spun uneori:

'Viata este prea scurta pentru a ti-o petrece scriind bucle!'

Atunci cand nu se poate elimina complet folosirea unei bucle se utilizeaza procedura de prealocare.

Functii de functii

In MATLAB exista o clasa de functii care lucreaza cu functii neliniare ca argument. Functiile de functii includ:

Gasirea zerourilor

Optimizare

Integrare numerica

Ecuatii diferentiale ordinare

MATLAB-ul reprezinta functia neliniara ca o functie M-file care poate fi ulterior utilizata ca argument de alte functii MATLAB.

Exemplu:

Urmatorul fisier creeaza o functie neliniara:

function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

Aceasta functie poate fi evaluata pentru un set de puncte in intervalul 0 x 1 cu programul:

x = 0:.002:1;
y = humps(x);

si apoi se poate reprezenta grafic functia cu comanda

plot(x,y)

Graficul arata ca functia are un minim local la aproximativ x = 0.6. Daca de exemplu utilizam functia fmins putem gasi imediat valoarea exacta a lui x . Primul argument al functiei fmins este chiar numele functiei pentru care calculam minimul (al doilea parametru este o aproximare grosiera a localizarii minimului).

 p = fmins('humps',.5)
p =
 0.6370

Se poate acum evalua valoarea functiei in punctul de minim local:

 humps(p)
ans =
 11.2528



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2998
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved