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

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

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

Page 1: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Curso MATLAB 6

Instrutor: Marcelo Escobar

Introdução

[email protected]

Page 2: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Introdução a Programação:

ProcessamentoEntradas Saídas

Dados Fornecidosao Programa

Argumentos deEntrada

Lógica de ProgramaçãoAlgoritmo

Linguagem

Seqüência de comandos

Dados Fornecidospelo Programa

Argumentos deRetorno

Ex:Dados ??? Retornarx1, x2, x3 menor Valor

Page 3: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Algoritmo:

Sequência de Passos Lógicos:Independente da Linguagem.

Dados: x1, x2, x3

Ler x1

Comparar x1 e x2

Se x1 < x2, min= x1

Se x2 < x1, min= x2

Comparar min e x3

Se min<x3 , min=min

Se x3 <min,min=x3

Retornar: min

Obs: Dúvidas? Referências/Lógica de Programação no CD rom

Page 4: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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]

Page 5: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Janelas MATLAB:

Page 6: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Page 7: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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]

Page 8: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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ída1,...,saídan]=comando(entrada1,...,entradan)

lookfor: procura de comandos com alguma palavra.

Page 9: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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

Page 10: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Page 11: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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 generalWho: lista as variaveis atuaisWhos: 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.

Page 12: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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

Page 13: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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 1x 1.

Page 14: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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’

Page 15: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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

end

>>help printmat [ exibição da matriz na tela]

Page 16: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Page 17: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Indexação de Matrizes:

M(linha, coluna)

M(1,1)- retorna elemento M11

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.

Page 18: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Page 19: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Estruturas:

Como criar? Variável: Marcelo

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.

Page 20: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Page 21: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Conversão de Variáveis:

>>help datatypes

>>help strfun

>>Char [ converte para caracter]>>Double [ converte para número]>>int2str [ converte de inteiro para string]>>str2int [converte de string para inteiro]>>num2str [converte de real para string]>>str2num [converte de string para real]

Page 22: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Funções de Arredondamento:

>>help elmat

>>help fix [Arredonda na direção do zero]>>help floor [Arredonda na direção de -oo]>>help ceil [Arredonda na direção de +oo]>>help round [na direção do inteiro mais próximo]

>>help rem [ resto de divisão]>>help abs [ modulo]>>help singn [ sinal ]

Page 23: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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

Page 24: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Operações Relacionais e Lógicas:

Retornam sempre 1 se verdadeiro e 0 se falsoExemplos: v=[ 1 -2 3 -4 5]

V>0: [ 1 0 1 0 1](V>0) & (V<4): [ 1 0 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-linhaM-colunaEncontra os índices da matriz que satisfazem operações relacionais e lógicas.

Page 25: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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]

Page 26: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Controle de Fluxo:

>>help lang

Teste condicional:

If else end

Teste múltiplo:

Switch case otherwise

Exemplos: If A==0 switch AB=3 case 0 ; B=3;Else otherwise; B=4; endB=4end

Se A é igual a zero B=3 senão B=4.

Page 27: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Controle de Fluxo:

Loops:

For i=1:10A(i)=i;endA=[ 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<10it=it+1;A(it)=it;EndA=[ 1 2 3 4 5 6 7 8 9 10]A estrutura while permite a execução até que um critério seja satisfeito.

Page 28: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Arquivos M:

>> edit

Ou Menu File– New--- M-fileO 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] Função [som.m]A=2; B=3; function S=soma(A,B)Soma=A+B S=A+B;

Execução:>>soma ou >>som(2,3)

>>help type [ exibe m-file na tela]

Page 29: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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

Page 30: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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 [s1,s2]=nome(e1,e2)%Digite aqui o help da funçãoif nargin<2;e2=0.001;endS1=e1+e2; if nargout<1; s2=2*e2;end

Page 31: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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]

Page 32: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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.

Page 33: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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)= x2 –ax+2, onde a é fornecido pelo usuário.

Sub-rotina:Function y=f(x)global aY= x2 –ax+2;

Programa principal:Function s=main(a)global as=fsolve(‘f’,0);

Sub-rotina:Function y=f(x,a)Y= x2 –ax+2;

Programa principal:Function s=main(a)s=fsolve(‘f’,0,[],a);

Ou

Page 34: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

Variáveis Globais e Locais:

Nesse caso, a função fsolve, já possui uma entrada para 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.

Page 35: Curso MATLAB 6 Instrutor: Marcelo Escobar Introdução escobar029@hotmail.com.

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