Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução [email protected]

of 35 /35
Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução [email protected]

Embed Size (px)

Transcript of Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução [email protected]

  • Slide 1
  • Curso MATLAB 6 Instrutor: Marcelo Escobar Introduo [email protected]
  • Slide 2
  • Introduo a Programao: ProcessamentoEntradasSadas Dados Fornecidos ao Programa Argumentos de Entrada Lgica de Programao Algoritmo Linguagem Seqncia de comandos Dados Fornecidos pelo Programa Argumentos de Retorno Ex: Dados ??? Retornar x 1, x 2, x 3 menor Valor
  • Slide 3
  • Algoritmo: Sequncia de Passos Lgicos: Independente da Linguagem. Dados: x 1, x 2, x 3 Ler x 1 Comparar x 1 e x 2 Se x 1 < x 2, min = x 1 Se x 2 < x 1, min = x 2 Comparar min e x 3 Se min < x 3, min = min Se x 3 < min, min = x 3 Retornar : min Obs: Dvidas? Referncias/Lgica de Programao no CD rom
  • Slide 4
  • Linguagem MATLAB: Ncleo da Linguagem formada por vetores e Matrizes. Recursos de Programao. Ferramenta de Interface Grfica com o Usurio. Caixas de Ferramentas. Comand Window: [ rea de trabalho] >>demo [apresenta uma srie de demonstraes de uso] >>tour [apresenta um tour pelo matlab]
  • Slide 5
  • Comand Window: rea de Trabalho. Comand History: Registro de Comandos executados na C.W. Current Directory: Mostra Arquivos presentes no Diretorio Atual. Worspace: Armazenamento de Variveis criadas na Comand Window. M-file Editor: rea de Edio de arquivos. Launch Pad: Caixas de Ferramentas do matlab. Simulink: Ferramenta do Matlab para Sistemas Dinmicos. Janelas MATLAB:
  • Slide 6
  • Tipos de Variveis : Real, Inteira: double array- variveis numricas. Complexa: double array (complex)-variveis numricas. Caracter: Char array-variveis de texto. Clula: cell array-Permite armazenamento de variveis de tipos diferentes no formato celular do Matlab. Estrutura: struct array-Permite armazenamento de variveis de tipos diferentes no formato estrutural do Matlab.
  • Slide 7
  • Formato de Variveis Numricas : >>help format >>format short [5 dgitos] >>format short e [5 dgitos +expoente] >>format long [16 dgitos] >>format long e [16 dgitos +expoente] >>format + [positivo, negativo ou 0] >>format rat [Aproximao racional]
  • Slide 8
  • Comandos do MATLAB : Na comand Window: ( >> sinal de prompt ) >>helpdesk [documentao] >>helpwin [help on line] >> help [ lista os tpicos de ajuda] Ex: >>help elfun [ funes matemticas] Fornece uma listagem de funes. Para verificar o funcionamento de cada funo: Ex:>>help sin [sin(X) is the sine of the elements of X.] De maneira Geral: [sada 1,...,sada n ]=comando(entrada 1,...,entrada n ) lookfor: procura de comandos com alguma palavra.
  • Slide 9
  • Primeiros Passos: Aps abrir o Matlab e fazer um reconhecimento geral, a primeira coisa a se fazer aps editar as suas preferncias, selecionar o diretrio de trabalho. Caso isso no seja feito, o Matlab salva os arquivos na pasta Work dentro do diretorio no qual o Matlab se encontra instalado. Como mudar o Diretrio? Opo 1: Na barra de ferramentas, em current directory, clicar no boto [...] e selecionar o diretorio como no explorer. Opo 2: usando o comando [ cd ] e digitar todo o caminho do diretorio, lembrando que nesse caso, no deve haver espaos nem caracteres especiais. [help cd]. >>cd c:\meus_documentos
  • Slide 10
  • Como criar Variveis: Atribuio: [ = ] x Equivalncia: [==] : Ex: >>A=2 [atribui a A o valor numrico 2] >>A==2[A=2 ?, retorna 1 se verdadeiro e 0 se falso] Matlab case Sensitive.[ Varivel A diferente de a] Caso no se fornea o nome da varivel de atribuio, o Matlab cria uma varivel chamada ans.[answer]. Se a varivel j existe, o matlab armazena sempre a ultima atribuio feita. Deve-se evitar dar nomes s variveis usando nomes de comandos internos do matlab ou usando variveis especiais que controlam o fluxo da programao. O nome da varivel deve comear por uma letra e no deve conter caracteres especiais nem espao.
  • Slide 11
  • Como criar Variveis: Variveis Especiais: For end if while function elseif case otherwise switch continue else try catch global persistent break Dica: Para saber se o nome da varivel um comando interno do matlab, basta dar um >>help [nome da varivel]. Caso no seja, o matlab retorna uma mensagem dizendo que a varivel [nome] no foi encontrada. Comandos de Gerenciamento: >> help general Who: lista as variaveis atuais Whos: lista as variaveis atuais com seus respectivos tipos. What: lista os arquivos no diretorio atual. Cd: seta o diretorio. Pwd: retorna o caminho do diretorio atual em uma varivel. Clear: limpa as variaveis atuais[clear all] Clc: limpa a tela de comando sem deletar as variaveis. Close all: fecha as janelas de figuras abertas.
  • Slide 12
  • Como criar Variveis: Execuo de comandos: [;]-no final do comando executa e no exibe resultado. [,]-permite a execuo de dois comandos na mesma linha, lembrando que eles so executados seqencialmente. [Crtl+C] -interrompe a execuo do comando, usado no caso de travamento durante a execuo. [ ] -retorna as linhas executadas anteriormente. [%]-indica comentrio [...]-permite continuao de escrita do comando na linha seguinte ex: A=2.1;B=3*A; Comandos de Dimensionamento: length: dimenso do vetor size: dimenso da matriz
  • Slide 13
  • Vetores: Criando um vetor: Opo 1: >> C=[1 2 3 4 5] ou >> C=[1,2,3,4,5] Opo 2: Usando comando linspace, ou logspace. linspace(valor inicial, valor final, nmero de pontos) linspace cria um vetor linearmente espaado. >>C=linspace(1,5,5) Opo 3: >>C=1:1:5 Valor inicial: incremento: valor final Opo 4: Usando estrutura for For i=1:5 C(i)=i; end Obs: >>A=2; O matlab encara a varivel A como uma matriz 1x 1.
  • Slide 14
  • Manipulao de Vetores: Operaes Bsicas: +, -,*,/, ^ Operaes Ponto a Ponto:./,.*,.^ Transposio: C [ transposta de C-usa aspas simples] Operaes elementares: Log exp sin cos tan etc... >>help elfun Ex: >> a=[ 1 2 3]; b=[ 4 5 6]; >> a.*b >>a*b
  • Slide 15
  • Matrizes: Como criar: Opo 1: a partir de vetores C=[ 2 3];D=[ 3 4]; M=[C;D] Opo 2: M= [ 2 3; 3 4] ou M=[ 2,3; 3, 4]; Opo 3: usando estrutura for For i=1:2 For j=1:2 M(i,j)=i+j; end >>help printmat [ exibio da matriz na tela]
  • Slide 16
  • Manipulao de Matrizes: Alm das operaes j citadas anteriormente para vetores. >>help elmat >>help matfun >>help sparfun Produto Matricial: A*B Inversa: inv(A) Determinante: det(A) Posto: rank(A) Valores Caracteristicos: eig(A) rand, eye, zeros, ones- criam matrizes de ordens definidas.
  • Slide 17
  • Indexao de Matrizes: M(linha, coluna) M(1,1)- retorna elemento M11 Caso no seja especificado a coluna da matriz, o que no necessrio no caso de vetores, ele considera o vetor coluna 1. Ex: A=[ 1 2; 3 4] A(1)=1 A(2)=3 Pode-se tambm usar incrementos: C=[ 1 2 3; 4 5 6]; C(1:2,2)=[2 ;5]; C(1,1:2:3)=[1 3]; C(1,2:3)=[2 3]; C(:,3)=[3; 6]; [:] indica todas as linhas ou colunas.
  • Slide 18
  • Matrizes Celulares: Opo 1: Criando matriz celular vazia e depois preencher M=cell( num linhas, num colunas), M=cell(2,3) Opo 2: Preencher direto M(1,1)={ [ 1 2; 3 4]} Indexao de posies celulares: M{ linha 1, coluna j}: M{1,2}=[ 1 2; 3 4]; Indexando elemento internos das clulas: M{1,2}(2,1)=3 >>cellpisp exibe toda a clula Utilizada para armazenar variveis matriciais ou de diferentes tipos com fcil indexao.
  • Slide 19
  • Estruturas : Como criar? Varivel: Marcelo Marcelo.idade=25 Marcelo.peso=70 Marcelo.altura=1.70 Varivel utilizada para armazenar variaveis de tipos diferentes de uma forma estruturada. Utilizada por exemplo em Banco de dados com fcil acesso de informaes.
  • Slide 20
  • Variveis de Texto : Como criar? D=valores E= resultados obtidos >>disp(D); exibe o texto contido em D >>eval(D) ; avalia o contedo do string. Ex: >>T=D=2; >>eval(T); cria a varivel D. Concatenao: Str=[ valor= D] Vamos ver melhor para que a concatenao em interfaces.
  • Slide 21
  • Converso de Variveis: >>help datatypes >>help strfun >>Char [ converte para caracter] >>Double [ converte para nmero] >>int2str [ converte de inteiro para string] >>str2int [converte de string para inteiro] >>num2str [converte de real para string] >>str2num [converte de string para real]
  • Slide 22
  • Funes de Arredondamento: >>help elmat >>help fix [Arredonda na direo do zero] >>help floor [Arredonda na direo de -oo] >>help ceil [Arredonda na direo de +oo] >>help round [na direo do inteiro mais prximo] >>help rem [ resto de diviso] >>help abs [ modulo] >>help singn [ sinal ]
  • Slide 23
  • Operaes Relacionais e Lgicas: >>help ops Operadores Relacionais: < - menor que - maior que >= -maior ou igual == - equivalncia ~= -diferente Operadores lgicas: & -e | -ou ~ -no
  • Slide 24
  • Operaes Relacionais e Lgicas: Retornam sempre 1 se verdadeiro e 0 se falso Exemplos: v=[ 1 -2 3 -4 5] V>0: [ 1 0 1 0 1] (V>0) & (V
  • Controle de Fluxo: >>help lang Teste condicional: If else end Teste mltiplo: Switch case otherwise Exemplos: If A==0 switch A B=3 case 0 ; B=3; Else otherwise; B=4; end B=4 end Se A igual a zero B=3 seno B=4.
  • Slide 27
  • Controle de Fluxo: Loops: For i=1:10 A(i)=i; end A=[ 1 2 3 4 5 6 7 8 9 10] O uso da estrutura for, limita o nmero de iteraes, ou seja, o nmero de vezes que os comandos so executados. it=0; While it
  • Arquivos M: >> edit Ou Menu File New--- M-file O uso do editor permite que os comandos a serem executados sejam salvos em um arquivo. Tipos de arquivos: Script [ entradas definidas internamente ou interativamente] Function [ arquivo genrico com entradas e sadas] Ex: Script [soma.m] Funo [som.m] A=2; B=3; function S=soma(A,B) Soma=A+B S=A+B; Execuo: >>soma ou >>som(2,3) >>help type [ exibe m-file na tela]
  • Slide 29
  • Argumentos de Arquivos M : >>help iofun Entrada de dados: >> help xlsread [ l dados de uma planilha em excel] >>help input [ recebe entrada de dados na Comand Window] >>help dlmread [ l dados em arquivo de texto] >>help save [salva dados em arquivo.mat] >>help load [carrega dados de arquivos.mat] Sada de dados: >> help diary [registro do log da sesso] Pode ser usado para armazenar resultados em arquivo txt. >>help disp [exibio de texto e de variveis na tela] Interfaces mais avanadas ser vista no capitulo Interfaces com o usurio
  • Slide 30
  • Argumentos de Arquivos M : >>help nargin [numero de argumentos de entrada de uma funo] >>help nargout [numero de argumentos de uma funo] Nargin pode ser usado para usar entradas opcionais. Nargout pode ser usado para limitar a execuo de linhas de comando desnecessaria se um dos argumentos de sada no pedido na chamada da funo. Quando criamos as nossas funes, podemos inserir um texto de ajuda antes da primeira linha de comando, assim quando executarmos help nome_da_funo esse texto ser exibido na tela. function [s1,s2]=nome(e1,e2) %Digite aqui o help da funo if nargin
  • Execuo de Arquivos M : >>help pause [permite uma pausa durante a execuo] >>help echo [escreve na tela as linhas de comando] >>help beep [emite um sinal sonoro] >>help error [emite uma mensagem de erro na tela] >>help warning [emite uma mensagem de warning na tela] >>help keyboard [suspende execuo at que o teclado seja acionado] >>help waitforbuttonpress [suspende execuo at que o mouse seja acionado]
  • Slide 32
  • Variveis Globais e Locais : A execuo de um arquivo m como um script, l as variveis existentes no workspace e salva todas as variveis criadas durante sua execuo. No entanto, quando executamos um arquivo m tipo function, este no l as variveis existentes no workspace, l apenas as variveis dadas na entrada do programa ou aquelas definidas internamente. Alm disso, a function pode at exibir na tela resultados se no usarmos [;] no final da linha, mas ela s retorna os argumentos assinados em sua sada e no salva as demais variveis no workspace. Para que uma function leia uma varivel definida externamente, necessrio definir essa varivel como global em todos os arquivos em que ela utilizada, ou passar como parmetro de entrada.
  • Slide 33
  • Variveis Globais e Locais : A desvantagem de passar como parmetro, que se usarmos uma sub-rotina pronta sendo chamada pelo nosso arquivo principal, precisamos alterar a mesma para esta receber as variveis. Ex:Queremos resolver uma equao na forma F(x)= x 2 ax+2, onde a fornecido pelo usurio. Sub-rotina: Function y=f(x) global a Y= x 2 ax+2; Programa principal: Function s=main(a) global a s=fsolve(f,0); Sub-rotina: Function y=f(x,a) Y= x 2 ax+2; Programa principal: Function s=main(a) s=fsolve(f,0,[],a); Ou
  • Slide 34
  • Variveis Globais e Locais : Nesse caso, a funo fsolve, j possui uma entrada para parmetros, mas muitas vezes quando usamos uma rotina genrica para resolver nosso problema, temos que redefinir a entrada da funo e a depender da complexidade do programa temos que alterar em varias linhas e isso deixa a nossa sub rotina menos genrica. O sugerido usar variveis globais, e sempre no inicio dos programas usar um clear all para limpar as variveis existentes no workspace evitando confuso na memria durante a execuo de nossos problemas.
  • Slide 35
  • Debugando Arquivos M : Debugar, consiste em depurar o programa, ou seja, verificar a existncia de erros. >>help depfun [ dependncias do arquivo] Permite o retorno de diretrios utilizados, funes utilizadas,dentre outras informaes. >>help profile [ Perfil de desempenho] Traa um perfil de desempenho, com o tempo associado execuo de cada comando, dentre outras informaes. Uso: >>profile on >>minha_funo >>profile report