Notas de Aula MatLab - 2



Documentos relacionados
Tutorial de Matlab Francesco Franco

Programação em MATLAB

Aula 2P - Comandos básicos do Matlab aplicados a PDS

COMPUTAÇÃO E PROGRAMAÇÃO

Oficina de MATLAB Nível Básico Aula 1

Algoritmos e Programação _ Departamento de Informática

Métodos Numéricos em Finanças

PIP/CA - Programa Interdisciplinar de Pós-Graduação em Computação Aplicada da UNISINOS ALGORITMOS & ESTRUTURAS DE DADOS

Algoritmo e Programação

Sistemas e Sinais (LEE & LETI)

Departamento: Matemática Curso: Eng a Madeiras Ano: 1 o Semestre: 2 o Ano Lectivo: 2006/2007. Aula prática n o 1 - Introdução ao MATLAB

Programa. Linguagem MATLAB Métodos Computacionais para EDO Métodos Computacionais para EDP. Critérios

Introdução ao Matlab. 1 Algumas regras e comandos do Matlab. 3 de março de Docente Responsável : Prof. Dr. Antônio C. Roque

Utilidades Diversas. Aplicações Informáticas para Engenharia. SérgioCruz

Primeiro Curso de Programação em C 3 a Edição

Breve Introdução à Programação em MATLAB

MATLAB Avançado. Melissa Weber Mendonça

Notas de Aula MatLab - 5

Algoritmos e Estruturas de Dados I 01/2013. Arquivos. Pedro O.S. Vaz de Melo

UNIVERSIDADE GAMA FILHO Laboratório de Controle I - MATLAB

I-3 Introdução ao Matlab

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

TUTORIAL MATLAB MATEMÁTICA COMPUTACIONAL Aula 20-Novembro-2013

Algoritmos e Programação Estruturada

Programação Básica em Arduino Aula 2

Projeto de Redes Neurais e MATLAB

Algoritmos de Busca em Tabelas

Tópicos avançados sobre funções (cont.)

Universidade Federal de Juiz de Fora Programa de Pós-Graduação em Modelagem Computacional. Rodrigo Barbosa de Santis

Introdução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza

Aluísio Eustáquio da Silva

Computação e Programação

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Introdução ao Scilab 3.0 Parte 4

Nesta aula serão apresentados alguns comandos de condição, repetição e gráficos.

MATLAB Avançado. Melissa Weber Mendonça Universidade Federal de Santa Catarina. M. Weber Mendonça (UFSC) MATLAB Avançado 2011.

Notas de Aula MatLab - 3

Introdução ao Javascript. Parte 2 Prof. Victor Hugo Lopes

Computação Científica com MATLAB. Melissa Weber Mendonça

Funções em Matlab. Subprogramas em Matlab são funções.

20 Caracteres - Tipo char

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

Algoritmos e Estruturas de Dados I. Arquivos. Pedro O.S. Vaz de Melo

Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org

OPERADORES E ESTRUTURAS DE CONTROLE

INTRODUÇÃO AO MATLAB. Hélder P. Oliveira

Computação e Programação

Comunicação. O Modelo de Fluxo de Dados (Streams)

Folha de Cálculo TECNOLOGIAS DA T IINF CO RM 1 A 0 ÇÃO E COMUNICAÇÃO TIC 10

Pesquisa Sequencial e Binária. Introdução à Programação SI2

Mini-curso Octave/MATLAB

INTRODUÇÃO AO AMBIENTE DE PROGRAMAÇÃO MATLAB

SPSS Statistical Package for the Social Sciences Composto por dois ambientes:

Matlab Noções introdutórias. Roteiro para aula

Programação WEB I Estruturas de controle e repetição

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL

Introdução a PHP (Estruturas de Controle)

9. Arquivos em C. Prof. Renato Tinós. Departamento de Computação e Matemática (FFCLRP/USP) Introdução à Computação II

Curso de C. Procedimentos e Funções. 6/4/200901/04/09 09:42 Copyright@Arnaldo V Moura, Daniel F Ferber 1

Estrutura de um programa em linguagem C

INF 1005 Programação I

14. Arquivos. W. Celes e J. L. Rangel. Estruturas de Dados PUC-Rio 13-1

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

I-3 Introdução ao Matlab

MC-102 Algoritmos e Programação de Computadores

Introdução ao MATLAB. Parte II. Afonso Paiva ICMC-USP

MATLAB Avançado. Melissa Weber Mendonça

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

Tutorial 1 - Básico do VBA do Excel

Mini Curso Introdução ao MATLAB

Introduçã o ão MATLAB e Octave

TUTORIAL SIMPLIFICADO DE MATLAB

Capítulo 10 Estruturas de controle de fluxo. Introdução ao MATLAB p.1/21

Vetores, Matrizes e Gráficos

INTRODUÇÃO AO MATLAB - PARTE 2

MATLAB. Programação básica

GEO742: Tópicos Especiais em Geologia Exploratória II Métodos semiquantitativos

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

INTRODUÇÃO AO SCILAB

O código JavaScript deve ser colocado entre tags de comentário para ficar escondido no caso de navegadores antigos que não reconhecem a linguagem.

17 - Funções e Procedimentos em C Programação Modular

FAÇA FÁCIL: DRIVER IGS PARA COMUNICAÇÃO DE PROTOCOLOS PROPRIETÁRIOS INTRODUÇÃO

MATLAB. Programação básica. Abordagem topo-base. Início. Definição das. Divisão em Sub-problemas. Divisão em Sub-problemas. Abordagem topo-base

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Informática I. Aula 6. Aula 6-12/09/2007 1

INF 1005 Programação I

Aula Teórica 12. Material Didático Proposto

Semana da Matemática. Luiz A. F. Coelho Fernando Deeke Sasse DMAT MatLab para Iniciantes

Manipulação de Arquivos

Programação em MATLAB

UFERSA Universidade Federal Rural do Semi-Árido. R Project R Project Criando e manipulando objetos.

Conceitos de Programação

Implementação de Métodos Recursivos. Jefferson Bertolai

Transcrição:

Notas de Aula MatLab - 2 Routo Terada www.ime.usp.br/~rt Depto. C. da Computação - USP Bibliografia: E. Y. Matsumoto, MatLab6 Fundamentos de Programação, Edit. Érica, 2000 K. Chen et al., Mathematical explorations with MatLab, Cambridge University Press 1999 D. Hanselman et al., MatLab 5 -- Guia do Usuário, Editora Makron 1999 conteúdo Arquivos: fopen(), fclose(), fscanf(), fprintf() for-, while, if, switch Exemplo de gráfico 2D Scripts e funções Exemplo de função - MaxVetor nargin, nargout Outro exemplo de gráfico 2D Exemplo de sobreposição de gráficos 2D Números aleatórios - rand() randperm(), unirand(), normrand(), exprand() MatLab (Routo) 2 1

fopen, fscanf, fclose Forma geral de fopen é fopen('nome arquivo', 'permissão') onde a permissão pode ser (em binary mode) 'r'(read), 'w' (write), 'a' (app) (em text mode) 'rt'(read), 'wt' (write), 'at' (app) % Forma geral de fscanf é fscanf(na, '%f ou %d', Nnúmeros) fscanf(na, '%f ou %d', [nlin,ncol]) Se não houver Nnúmeros ou [nlin,ncol], leitura é até o fim do arquivo. Narqu= fopen('c:\matentra.txt', 'rt') % abre [Matriz, contador]= fscanf(narqu, '%f', [2,4]) fclose(narqu); % fecha MatLab (Routo) 3 fopen, fscanf, fclose Narqu= fopen('c:\matentra.txt', 'rt') % abre [Matriz, contador]= fscanf(narqu, '%f', [2,4]) fclose(narqu); % fecha arquivo 'c:\matentra.txt' 1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 10 11.1 12.2 Narqu = 3 Matriz = 1.1000 3.3000 5.5000 7.7000 2.2000 4.4000 6.6000 8.8000 contador = 8 MatLab (Routo) 4 2

fopen, fscanf, fclose Narqu2=fopen('c:\matsai.txt','wt') contador=fprintf(narqu2,'%4.2f %4.1f %5.2f \n',matriz) fclose(narqu2) Arquivo 'c:\matsai.txt' 1.10 2.2 3.30 4.40 5.5 6.60 7.70 8.8 Narqu2 = 3 contador = 44 ans = 0 contador é o número de bytes gravados Matriz é transformado em vetor no arquivo MatLab (Routo) 5 Matlab possui os comandos de fluxo for --, while -- if -- elseif -- else -- que têm sintaxe parecida com a da C, exemplificada a seguir. Lembre-se de não escrever a 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); n=9 ; fatn=1; while(n>1) fatn=fatn*n; n=n-1; x=-1.1 ; if(x<0) sinx= -1; elseif(x>0) sinx=1; else sinx=0; MatLab (Routo) 6 3

Matlab possui também o comando swith-case que também tem sintaxe parecida com a da C, exemplificada a seguir. switch <expressão> case <teste-expressão-1> comandos-1 case { <teste -expr-2,teste -expr-3, } comandos-2 otherwise comandos-3 x=1.75; % x em metros unidade= 'pol'; Resposta: y = 68.8976 switch unidade % esseswitch p/ converter x para case{'polegadas','pol'} % y em polegadas y= x/2.54*100 case{'centímetros','cm'} % y em centímetros y=x/100 otherwise disp(['unidade desconhecida']) MatLab (Routo) 7 Exemplo de gráfico 2D: "sobe -e-desce" x=zeros(140,1);% reserva memória para vetor 140x1 x(1)= round(abs(input('digite um número > '))); k=1; while(x(k)>1) & (k<140) if rem(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 k=k+1; gradex=1:1:140; % vetor c/ 1,2,3, 140 plot(gradex,x) % gráfico do vetor x gerado Gráfico a seguir para valor x(1)=1234 MatLab (Routo) 8 4

MatLab (Routo) 9 Scripts e funções Subrotina (macro) deve ser guardado como M-file no sub-diretóriomatlab\work Editar e depurar na janela M-file editor/debugger Há dois tipos: scripts e funções Script é apenas uma seqüência de comandos que são executados como se tivessem sido digitados na janela MatLab A=[1 2; 3.1 4.2], det(a) arquivo matrou1.m já editado» matrou1 A = 1.0000 2.0000 3.1000 4.2000 ans = -2.0000 MatLab (Routo) 10 5

Scripts e funções Função deve começar com a declaração da forma: function [ps1,ps2, psm]=nomefunc(pe1,pe2, pen) parâmetros de saída arquivo AREACirc.m já editado: parâmetros de entrada (variáveis locais à função) function [area] = AREACirc(raio) area=pi*raio*raio; Na janela MatLab:» A=AREACirc(2) A = 12.5664 valor 2 passado para 'raio' MatLab (Routo) 11 Scripts e funções Chamada de função: [as1,as2, asm]=nomefunc[ae1,ae2, aen] Os argumentos ae1,ae2, aen são passados por valor aos (i.e., copiados nos) parâmetros de entrada arquivo Circulo.m: function [area,perimetro] = Circulo(raio) area=pi*raio*raio;perimetro=2*pi*raio;» [A,P]=Circulo(3.14) A = 30.9748 P = 19.7292 janela MatLab MatLab (Routo) 12 6

Exemplo de função function [elemax, indmax] = MaxVetor(vetor) % procura o elemento máximo dentro de um % vetor linha ou coluna, em valor absoluto % elemax -- elemento max em valor absoluto % indmax -- índice doelemax [m,n]=size(vetor); if (m ~=1 & n ~= 1) erro; % não é vetor else ultind=max( [m,n] ); elemax = abs(vetor(1)); indmax= 1; for k = 2:ultind if( abs(vetor(k))>elemax) elemax= abs(vetor(k)); indmax= k; % if %for %else MatLab (Routo) 13 Exemplos de execução de MaxVetor ()» [elem,ind]=maxvetor([-2.2 1.1-4.4 2.2 0]) elem = 4.4000 ind = 3» [elem,ind]=maxvetor([-2.2 1.1; -4.4 2.2])??? Undefined function or variable 'erro'. não é vetor Error in ==> C:\MATLABR11\work\MaxVetor.m On line 8 ==> erro; % não é vetor MatLab (Routo) 14 7

nargin nomefunc nargout nomefunc resulta número de args de entrada da função nomefunc idem para args de saída» nargout AREACirc ans = 1» nargin AREACirc ans = 1» nargin Circulo ans = 1» nargout Circulo ans = 2 MatLab (Routo) 15» gradex=0:.05:1; x=gradex*pi; y=cos(x);» plot(x,y) MatLab (Routo) 16 8

Sobreposição de gráficos 2D gradex= 0:.05:1; x=gradex*pi; title('gráfico de y=seno(x)') xlabel('eixo x') ylabel('eixo y') y= sin(x) plot(x,y) y1=2*x hold on % para "segurar" o gráfico plot(x,y1,'r') % r de red; sobrepõe % o gráfico de y1 MatLab (Routo) 17 MatLab (Routo) 18 9

x= rand(1,30); % 30 números em (0,1) a=12; b=99; y= a+ (b-a)*x; % 30 números em (a,b) gradex=1:1:30; plot(gradex,y) MatLab (Routo) 19 r=randperm(5) % gera vetor permutação A= ceil( rand(5,5)*5)+5 % gera matriz em [6,10] B= A(r,:) % permuta linhas via "r" r = 3 1 2 5 4 A = 7 9 6 9 6 8 10 10 7 6 6 8 6 8 9 8 10 9 8 8 7 9 9 9 7 B = 6 8 6 8 9 7 9 6 9 6 8 10 10 7 6 7 9 9 9 7 8 10 9 8 8 MatLab (Routo) 20 10

Distribuição uniforme (unirand() rand('seed',19); % semente =19 z=unirand(0.5,6.499,5000,3); % gera matriz 5000 por 3 % em [0.5,6.499], uniforme r=round(z); hist(r,6) % 3 histogramas c/ intervalos iguais MatLab (Routo) 21 function values=unirand(a,b,n,m); % Usage:V = unirand( a,b) % for 1 x 1 % or V = unirand( a,b, n) % for n x n % or V = unirand( a,b, n, m) %for n x m % computes a matrix of size n x m, % uniformly distributed in (a,b) if nargin < 2, help unirand, return, if nargin == 2, n=1; m=1; elseif nargin == 3, m=n; z=rand(n,m); z=z*(b-a)+a; values=z; MatLab (Routo) 22 11

MatLab (Routo) 23 Distribuição normal normrand() randn('seed',12);% semente da distr normal y= normrand(3,5,4000,2); % gera 2 normais c/ méd=3,desv=5 % 4000 números hist(y) MatLab (Routo) 24 12

function values=normrand(mu,sigma,n,m); % Usage: V = normrand( mu, sigma) % for 1 x 1 % or V = normrand( mu, sigma, n) % for n x n % or V = normrand( mu, sigma, n, m) % for n x m % % computes a matrix of size n x m, % normally distributed % with mean mu and % standard deviation sigma. if nargin < 2, help normrand, return, if nargin == 2, n=1; m=1; elseif nargin == 3, m=n; z=randn(n,m); z=mu+z*sigma; values=z; MatLab (Routo) 25 MatLab (Routo) 26 13

Distribuição exponencial (exprand()) rand('seed',7);% semente y= exprand(1.2,90000,3); % gera 1 exponencial c/ méd=1.2 hist(y) MatLab (Routo) 27 function values=exprand(mu,n,m); % Usage: V = exprand( mu) % for 1 x 1 % or V = exprand( mu, n) % for n x n % or V = exprand( mu, n, m) % for n x m % % computes a matrix of size n x m, % exponentially distributed % with mean mu if nargin < 1, help exprand, return, if nargin == 1, n=1; m=1; elseif nargin == 2, m=n; z=rand(n,m); z=-log(1-z)*mu; values=z; MatLab (Routo) 28 14

MatLab (Routo) 29 15