Curso MATLAB 6 Instrutor Marcelo Escobar Introduo escobar
Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar 029@hotmail. com
Introdução a Programação: Entradas Processamento Dados Fornecidos ao Programa Lógica de Programação Algoritmo Dados Fornecidos pelo Programa Argumentos de Entrada Linguagem Argumentos de Retorno Ex: Dados x 1, x 2 , x 3 Seqüência de comandos ? ? ? Saídas Retornar menor Valor
Algoritmo: Sequência de Passos Lógicos: 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: Dúvidas? Referências/Lógica de Programação no CD rom
Linguagem MATLAB: Núcleo da Linguagem formada por vetores e Matrizes. Recursos de Programação. Ferramenta de Interface Gráfica com o Usuário. Caixas de Ferramentas. Comand Window: [ área de trabalho] >>demo [apresenta uma série de demonstrações de uso] >>tour [apresenta um tour pelo matlab]
Janelas MATLAB: 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 Variáveis criadas na Comand Window. M-file Editor: Área de Edição de arquivos. Launch Pad: Caixas de Ferramentas do matlab. Simulink: Ferramenta do Matlab para Sistemas Dinâmicos.
Tipos de Variáveis : Real , Inteira: double array- variáveis numéricas. Complexa: double array (complex)-variáveis numéricas. Caracter: Char array-variáveis de texto. Célula: cell array-Permite armazenamento de variáveis de tipos diferentes no formato celular do Matlab. Estrutura: struct array-Permite armazenamento de variáveis de tipos diferentes no formato estrutural do Matlab.
Formato de Variáveis Numéricas : >>help format >>format short [5 dígitos] >>format short e [5 dígitos +expoente] >>format long [16 dígitos] >>format long e [16 dígitos +expoente] >>format + [positivo, negativo ou 0] >>format rat [Aproximação racional]
Comandos do MATLAB : Na comand Window: ( >> “sinal de prompt” ) >>helpdesk [documentação] >>helpwin [help on line] >> help [ lista os tópicos de ajuda] Ex: >>help elfun [ funções matemáticas] Fornece uma listagem de funções. Para verificar o funcionamento de cada função: Ex: >>help sin [sin(X) is the sine of the elements of X. ] De maneira Geral: [saída 1, . . . , saídan]=comando(entrada 1, . . . , entradan) lookfor: procura de comandos com alguma palavra.
Primeiros Passos: Após abrir o Matlab e fazer um reconhecimento geral, a primeira coisa a se fazer após editar as suas preferências, é selecionar o diretório de trabalho. Caso isso não seja feito, o Matlab salva os arquivos na pasta Work dentro do diretorio no qual o Matlab se encontra instalado. Como mudar o Diretório? Opção 1: Na barra de ferramentas, em current directory, clicar no botão [. . . ] e selecionar o diretorio como no explorer. Opção 2: usando o comando [ cd ] e digitar todo o caminho do diretorio, lembrando que nesse caso, não deve haver espaços nem caracteres especiais. [help cd]. >>cd c: meus_documentos
Como criar Variáveis: Atribuição: [ = ] x Equivalência: [==] : Ex: >>A=2 [atribui a A o valor numérico 2] >>A==2[A=2 ? , retorna 1 se verdadeiro e 0 se falso] Matlab é case Sensitive. [ Variável A é diferente de a] Caso não se forneça o nome da variável de atribuição, o Matlab cria uma variável chamada ans. [answer]. Se a variável já existe, o matlab armazena sempre a ultima atribuição feita. Deve-se evitar dar nomes às variáveis usando nomes de comandos internos do matlab ou usando variáveis especiais que controlam o fluxo da programação. O nome da variável deve começar por uma letra e não deve conter caracteres especiais nem espaço.
Como criar Variáveis: Variáveis Especiais: For end if while function elseif case otherwise switch continue else try catch global persistent break Dica: Para saber se o nome da variável é um comando interno do matlab, basta dar um >>help [nome da variável]. Caso não seja, o matlab retorna uma mensagem dizendo que a variável [nome] não 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 variável. 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.
Como criar Variáveis: Execução de comandos: [; ]-no final do comando executa e não exibe resultado. [, ]-permite a execução de dois comandos na mesma linha, lembrando que eles são executados seqüencialmente. [Crtl+C] -interrompe a execução do comando, usado no caso de travamento durante a execução. [ ] -retorna as linhas executadas anteriormente. [%]-indica comentário [. . . ]-permite continuação de escrita do comando na linha seguinte ex: A=2. 1; B=3*A; Comandos de Dimensionamento: length: dimensão do vetor size: dimensão da matriz
Vetores: Criando um vetor: Opção 1: >> C=[1 2 3 4 5] ou >> C=[1 , 2 , 3 , 4 , 5] Opção 2: Usando comando linspace, ou logspace. linspace(valor inicial, valor final, número de pontos) linspace cria um vetor linearmente espaçado. >>C=linspace(1, 5, 5) Opção 3: >>C=1: 1: 5 Valor inicial: incremento: valor final Opção 4: Usando estrutura for For i=1: 5 C(i)=i; end Obs: >>A=2; O matlab encara a variável A como uma matriz 1 x 1.
Manipulação de Vetores: Operações Básicas: +, - , * , /, ^ Operações Ponto a Ponto: . /, . *, . ^ Transposição: C’ [ transposta de C-usa aspas simples] Operações elementares: Log exp sin cos tan etc. . . >>help elfun Ex: >> a=[ 1 2 3]; b=[ 4 5 6]; >> a. *b >>a*b’
Matrizes: Como criar: Opção 1: a partir de vetores C=[ 2 3]; D=[ 3 4]; M=[C; D] Opção 2: M= [ 2 3; 3 4] ou M=[ 2, 3; 3, 4]; Opção 3: usando estrutura for For i=1: 2 For j=1: 2 M(i, j)=i+j; end >>help printmat [ exibição da matriz na tela]
Manipulação de Matrizes: Além das operações 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.
Indexação de Matrizes: M(linha, coluna) M(1, 1)- retorna elemento M 11 Caso não seja especificado a coluna da matriz, o que não é necessário no caso de vetores, ele considera o vetor coluna 1. Ex: A=[ 1 2; 3 4] A(1)=1 A(2)=3 Pode-se também 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.
Matrizes Celulares: Opção 1: Criando matriz celular vazia e depois preencher M=cell( num linhas, num colunas), M=cell(2, 3) Opção 2: Preencher direto M(1, 1)={ [ 1 2; 3 4]} Indexação de posições celulares: M{ linha 1, coluna j}: M{1, 2}=[ 1 2; 3 4]; Indexando elemento internos das células: M{1, 2}(2, 1)=3 >>cellpisp – exibe toda a célula Utilizada para armazenar variáveis matriciais ou de diferentes tipos com fácil indexação.
Estruturas: Como criar? Variável: Marcelo. idade=25 Marcelo. peso=70 Marcelo. altura=1. 70 Variável utilizada para armazenar variaveis de tipos diferentes de uma forma estruturada. Utilizada por exemplo em Banco de dados com fácil acesso de informações.
Variáveis de Texto: Como criar? D=‘valores’ E=‘ resultados obtidos’ >>disp(D); exibe o texto contido em D >>eval(‘D’) ; avalia o conteúdo do string. Ex: >>T=‘D=2’; >>eval(T); cria a variável D. Concatenação: Str=[ ‘valor=‘ ‘D’] Vamos ver melhor para que a concatenação em interfaces.
Conversão de Variáveis: >>help datatypes >>help strfun >>Char [ converte para caracter] >>Double [ converte para número] >>int 2 str [ converte de inteiro para string] >>str 2 int [converte de string para inteiro] >>num 2 str [converte de real para string] >>str 2 num [converte de string para real]
Funções de Arredondamento: >>help elmat >>help fix >>help floor >>help ceil >>help round [Arredonda na direção do zero] [Arredonda na direção de -oo] [Arredonda na direção de +oo] [na direção do inteiro mais próximo] >>help rem >>help abs >>help singn [ resto de divisão] [ modulo] [ sinal ]
Operações Relacionais e Lógicas: >>help ops Operadores Relacionais: < - menor que <= -menor ou igual > - maior que >= -maior ou igual == - equivalência ~= -diferente Operadores lógicas: & -e | -ou ~ -não
Operações Relacionais e Lógicas: Retornam sempre 1 se verdadeiro e 0 se falso Exemplos: v=[ 1 -2 3 -4 5] V>0: [ 1 0 1] (V>0) & (V<4): [ 1 0 0] (V==1) | (V<0): [ 1 1 0 10] ~(V<0): [ 10 10 1] Comando find: n=find(v>0) Ou [n, m]=find(v>0) N-linha M-coluna Encontra os índices da matriz que satisfazem operações relacionais e lógicas.
Funções Relacionais e Lógicas: Retornam sempre 1 se verdadeiro e 0 se falso. xor: [ ou] any: [ qualquer] all: [todos] isreal: [ verdadeiro se real] iscomplex: [ verdadeiro se complexo] isprime: [ verdadeiro se primo] isifinite: [ verdadeiro se infinito] isnan: [ verdadeiro se não é um número]
Controle de Fluxo: >>help lang Teste condicional: If else end Teste múltiplo: Switch case Exemplos: If A==0 B=3 Else B=4 end otherwise switch A case 0 ; B=3; otherwise; B=4; end Se A é igual a zero B=3 senão B=4.
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 número de iterações, ou seja, o número de vezes que os comandos são executados. it=0; While it<10 it=it+1; A(it)=it; End A=[ 1 2 3 4 5 6 7 8 9 10] A estrutura while permite a execução até que um critério seja satisfeito.
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 genérico com entradas e saídas] Ex: Script [soma. m] A=2; B=3; Soma=A+B Execução: >>soma Função [som. m] function S=soma(A, B) S=A+B; ou >>som(2, 3) >>help type [ exibe m-file na tela]
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] Saída de dados: >> help diary [registro do log da sessão] Pode ser usado para armazenar resultados em arquivo txt. >>help disp [exibição de texto e de variáveis na tela] Interfaces mais avançadas será vista no capitulo Interfaces com o usuário
Argumentos de Arquivos M: >>help nargin [numero de argumentos de entrada de uma função] >>help nargout [numero de argumentos de uma função] Nargin pode ser usado para usar entradas opcionais. Nargout pode ser usado para limitar a execução de linhas de comando desnecessaria se um dos argumentos de saída não é pedido na chamada da função. Quando criamos as nossas funções, podemos inserir um texto de ajuda antes da primeira linha de comando, assim quando executarmos help nome_da_função esse texto será exibido na tela. function [s 1, s 2]=nome(e 1, e 2) %Digite aqui o help da função if nargin<2; e 2=0. 001; end S 1=e 1+e 2; if nargout<1; s 2=2*e 2; end
Execução de Arquivos M: >>help pause [permite uma pausa durante a execução] >>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 execução até que o teclado seja acionado] >>help waitforbuttonpress [suspende execução até que o mouse seja acionado]
Variáveis Globais e Locais: A execução de um arquivo m como um script, lê as variáveis existentes no workspace e salva todas as variáveis criadas durante sua execução. No entanto, quando executamos um arquivo m tipo function, este não lê as variáveis existentes no workspace, lê apenas as variáveis dadas na entrada do programa ou aquelas definidas internamente. Além disso, a function pode até exibir na tela resultados se não usarmos [; ] no final da linha, mas ela só retorna os argumentos assinados em sua saída e não salva as demais variáveis no workspace. Para que uma function leia uma variável definida externamente, é necessário definir essa variável como global em todos os arquivos em que ela é utilizada, ou passar como parâmetro de entrada.
Variáveis Globais e Locais: A desvantagem de passar como parâmetro, é que se usarmos uma sub-rotina pronta sendo chamada pelo nosso arquivo principal, precisamos alterar a mesma para esta receber as variáveis. Ex: Queremos resolver uma equação na forma F(x)= x 2 –ax+2, onde a é fornecido pelo usuário. 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); Ou Sub-rotina: Function y=f(x, a) Y= x 2 –ax+2; Programa principal: Function s=main(a) s=fsolve(‘f’, 0, [], a);
Variáveis Globais e Locais: Nesse caso, a função fsolve, já possui uma entrada parâmetros, mas muitas vezes quando usamos uma rotina genérica para resolver nosso problema, temos que redefinir a entrada da função e a depender da complexidade do programa temos que alterar em varias linhas e isso deixa a nossa sub rotina menos genérica. O sugerido é usar variáveis globais, e sempre no inicio dos programas usar um clear all para limpar as variáveis existentes no workspace evitando confusão na memória durante a execução de nossos problemas.
Debugando Arquivos M: Debugar, consiste em depurar o programa, ou seja, verificar a existência de erros. >>help depfun [ dependências do arquivo] Permite o retorno de diretórios utilizados, funções utilizadas, dentre outras informações. >>help profile [ Perfil de desempenho] Traça um perfil de desempenho, com o tempo associado à execução de cada comando, dentre outras informações. Uso: >>profile on >>minha_função >>profile report
- Slides: 35