Você está na página 1de 35

Curso MATLAB 6

Instrutor: Marcelo Escobar


Introduo
escobar029@hotmail.com

Introduo a Programao:
Entradas

Processamento

Dados Fornecidos
ao Programa

Lgica de Programao
Algoritmo

Dados Fornecidos
pelo Programa

Argumentos de
Entrada

Linguagem

Argumentos de
Retorno

Ex:
Dados
x1, x2, x3

Seqncia de comandos

???

Sadas

Retornar
menor Valor

Algoritmo:
Sequncia de Passos Lgicos:
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: Dvidas? Referncias/Lgica de Programao no CD rom

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]

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

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.

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]

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:
[sada1,...,sadan]=comando(entrada1,...,entradan)
lookfor: procura de comandos com alguma palavra.

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

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.

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.

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

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.

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

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
end
>>help printmat [ exibio da matriz na tela]

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.

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.

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.

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.

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.

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]

Funes de Arredondamento:
>>help elmat
>>help fix
>>help floor
>>help ceil
>>help round

[Arredonda na direo do zero]


[Arredonda na direo de -oo]
[Arredonda na direo de +oo]
[na direo do inteiro mais prximo]

>>help rem
>>help abs
>>help singn

[ resto de diviso]
[ modulo]
[ sinal ]

Operaes Relacionais e Lgicas:


>>help ops
Operadores Relacionais:
< - menor que
<= -menor ou igual
> - maior que
>= -maior ou igual
== - equivalncia
~= -diferente
Operadores lgicas:
& -e
| -ou
~ -no

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<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 operaes
relacionais e lgicas.

Funes Relacionais e Lgicas:


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 no um nmero]

Controle de Fluxo:
>>help lang
Teste condicional:
If

else

end

Teste mltiplo:
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 seno 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 nmero de iteraes, ou
seja, o nmero de vezes que os comandos so 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 execuo at que um critrio
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 genrico com entradas e sadas]
Ex:
Script [soma.m]
A=2; B=3;
Soma=A+B
Execuo:
>>soma

Funo [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]
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

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<2;e2=0.001;end
S1=e1+e2;
if nargout<1; s2=2*e2;end

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]

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.

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)= x2 ax+2, onde a fornecido pelo usurio.
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);

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.

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

Você também pode gostar