Curso MATLAB 6
Instrutor: Marcelo Escobar
Introdução
[email protected]
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
x1, x2, x3
Seqüência de comandos
???
Saídas
Retornar
menor Valor
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
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ída1,...,saídan]=comando(entrada1,...,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 1x 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
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 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.
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
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]
>>int2str [ converte de inteiro para string]
>>str2int [converte de string para inteiro]
>>num2str [converte de real para string]
>>str2num [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 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-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 [s1,s2]=nome(e1,e2)
%Digite aqui o help da função
if nargin<2;e2=0.001;end
S1=e1+e2;
if nargout<1; s2=2*e2;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)= x2 –ax+2, onde a é fornecido pelo usuário.
Sub-rotina:
Function y=f(x)
global a
Y= x2 –ax+2;
Programa principal:
Function s=main(a)
global a
s=fsolve(‘f’,0);
Ou
Sub-rotina:
Function y=f(x,a)
Y= x2 –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 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.
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
Download

Curso MATLAB 6 Introducao - Programa de Engenharia Química