Apostila de Matlab part 2

Apostila de Matlab part 2

(Parte 1 de 3)

Notas de Aula MatLab - 2

Routo Terada w.ime.usp.br/~rt Depto. C. da Computação -USP

Bibliografia: E. Y. Matsumoto, MatLab6FundamentosdeProgramação,

Edit.Érica, 2000

K. Chen et al., Mathematical explorations withMatLab,

Cambridge University Press 1999

D. Hanselman et al., MatLab 5 -- Guia do Usuário, Editora Makron1999

MatLab (Routo)2 conteúdo

•for-end, while, if, switch • Exemplo degráfico 2D

•Scripts efunções

• Exemplo de função - MaxVetor

• nargin, nargout

• Outro exemplo degráfico 2D

• Exemplo desobreposição de gráficos 2D • Números aleatórios - rand()

MatLab (Routo)3

Narqu= fopen('c:\matentra.txt', 'rt') % abre [Matriz, contador]= fscanf(Narqu, '%f', [2,4]) fclose(Narqu); % fecha

Forma geral de fopen é fopen('nome arquivo', 'permissão') ondeapermissão pode ser (em binary mode) 'r'(read), 'w' (write), 'a' (append) (em text mode) 'rt'(read), 'wt' (write), 'at' (append)

% Forma geral de fscanf é fscanf(Na, '%f ou %d', Nnúmeros) fscanf(Na, '%fou%d', [nlin,ncol])

Senão houver Nnúmeros ou[nlin,ncol], leitura é até o fim do arquivo.

fopen, fscanf, fclose

MatLab (Routo)4

Narqu= fopen('c:\matentra.txt', 'rt') % abre [Matriz, contador]= fscanf(Narqu, '%f', [2,4]) fclose(Narqu); % fecha

Narqu=3
1.10003.3000 5.5000 7.7000
2.20004.4000 6.6000 8.8000
contador=8

Matriz =

1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10 1.1 12.2 arquivo 'c:\matentra.txt' fopen, fscanf, fclose

MatLab (Routo)5

Narqu2=fopen('c:\matsai.txt','wt') contador=fprintf(Narqu2,'%4.2f %4.1f %5.2f \n',Matriz) fclose(Narqu2)

Narqu2 =3
contador=4
ans=0

Arquivo 'c:\matsai.txt' contadoré o númerode bytes gravados Matriz é transformado em vetor no arquivo

1.10 2.2 3.30 4.40 5.5 6.60 7.70 8.8 fopen, fscanf, fclose

MatLab (Routo)6

Matlab possui os comandosde fluxo for --end, while --end if --elseif--else --end que têmsintaxeparecidacom a daC, exemplificadaa seguir. Lembre-se de nãoescrevera palavra elseif como duas palavras separadas.

n=9;m=3 ; for i=1:n for j=1:m H(i,j)=1/(i+j+1); end end x=-1.1 ; if(x<0) sinx= -1; elseif(x>0) sinx=1; else sinx=0; end n=9 ;fatn=1; while(n>1) fatn=fatn*n; n=n-1; end

MatLab (Routo)7

Matlab possui tambémocomando swith-case que tambémtemsintaxe parecidacom adaC,exemplificadaaseguir.

switch <expressão> case <teste-expressão-1> comandos-1 … case { <teste-expr-2,teste-expr-3,…} comandos-2 … … otherwise comandos-3 … endx=1.75; % x em metros unidade= 'pol'; switchunidade%esseswitch p/ converter xpara case{'polegadas','pol'} % y empolegadas y= x/2.54*100 case{'centímetros','cm'} % y emcentímetros y=x/100 otherwise disp(['Unidade desconhecida']) end

Resposta: y = 68.8976

MatLab (Routo)8 x=zeros(140,1);%reserva memória para vetor140x1 x(1)= round(abs(input('Digite um número > '))); k=1; while(x(k)>1) & (k<140) ifrem(x(k),2) ==0 % x(k) é par x(k+1)= x(k)/2; %desce else % x(k) éímpar x(k+1)= 3*x(k)+1; %sobe end k=k+1; end gradex=1:1:140; %vetorc/ 1,2,3,…140 plot(gradex,x) %gráficodovetorxgerado

Gráficoaseguir paravalor x(1)=1234

Exemplo degráfico 2D: "sobe-e-desce"

MatLab (Routo)9

MatLab (Routo)10

Scripts efunções

Subrotina(macro)deve ser guardado comoM-file no sub-diretório MATLAB\work Editaredepurar na janelaM-file editor/debugger

Há dois tipos: scripts efunções

Script éapenas uma seqüênciadecomandos que são executados comosetivessem sido digitados na janela MatLab

1.02.0
3.10004.2000

» matrou1 A = ans = -2.0

A=[1 2; 3.1 4.2],det(A) arquivo matrou1.m já editado

MatLab (Routo)1

Scripts efunções

Função deve começarcom adeclaração daforma: function [ps1,ps2,… psm]=nomefunc(pe1,pe2,…pen) parâmetros desaída parâmetros deentrada (variáveis locais à função)

» A=AREACirc(2) A = 12.5664 function [area] = AREACirc(raio) area=pi*raio*raio; arquivo AREACirc.mjá editado:

(Parte 1 de 3)

Comentários