Você está na página 1de 54

Tópico Especial 1

Introdução ao MatLab

AGA0521 Manobras
Orbitais
Introdução a Programação

Entradas Processamento Saídas

Dados Fornecidos Lógica de Programação Dados Fornecidos


ao Programa Algoritmo pelo Programa

Argumentos de Linguagem Argumentos de


Entrada Retorno
Seqüência de comandos

Ex:
Dados ??? Retornar
x1, x2, x3 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
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.
Como criar Variáveis

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


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.
Variáveis Globais e Locais

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: Sub-rotina:
Function y=f(x) Function y=f(x,a)
global a Y= x2 –ax+2;
Y= x2 –ax+2; Ou
Programa principal:
Programa principal: Function s=main(a)
Function s=main(a) s=fsolve(‘f’,0,[],a);
global a
s=fsolve(‘f’,0);
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
Funções Gráficas
Funções elementares de
gráfico
§ O MatLab suporta muitos tipos de gráficos
para gráficos e superfíciesMATLAB :
§ Linhas bi-dimensionais (xversus y), a cheio,
gráfico de barras, queijos, desenhos
paramêtricos, eixos logarítmicos, suprfícies,
paramêtricos 3D, esféricos
§ Para pré-visualizar alguma dessas
potencialidades podemos olhar para as
DEMOs
Funções elementares de
gráfico
Gráficos simples 2D
X e Y dois vectores com as mesmas
dimensões
O comando plot(x,y)

Abre uma janela gráfica

Desenha um gráfico dos elementos de X
contra Y
Funções elementares de
gráfico
Gráficos simples 2D
Funções elementares de
gráfico
>>%Exemplo do gráfico de uma sequência
>>t=-1:0.01:1;
>>f=4.5*cos(2*pi*t - pi/6);
>>%Instruções para gráfico, nomes dos eixos …
>>plot(t,f),title('Fig.E1.2a');
>>axis([-1,1,-6,6]);
>>xlabel('t');
>>ylabel('f(t)');
>>text(-0.6,5,'f(t) = A cos(wt + phi)');
>>grid;
Funções elementares de
gráfico
Gráfico do exemplo anterior
Funções elementares de
gráfico
PLOT(X,Y) desenha o vector Y versus o vector X
TITLE('text') adiciona texto no topo do desenho
actual.
XLABEL('text') adiciona texto junto do eixo dos X.
YLABEL('text') adiciona texto junto do eixo dos Y.
GRID, automaticamente monta os principais dos eixos
GTEXT('string') ??
SUBPLOT(m,n,p),ou SUBPLOT(mnp), divide a janela da
figura numa matriz mxn de eixos pequenos.

STEM(Y) faz o gráfico da sequência de dados Y como


stems do eixo dos x terminando como círculos para os
valores de dados.
Funções elementares de
gráfico
Se nada for indicado, a escala dos eixos é feita
automaticamente.
Isto pode ser redefinido pelo comando axis. If c =
[xmin,xmax,ymin,ymax] for um vetor de 4 elementos,
então axis(c) estabelece a escala dos eixos para os
limites definidos.
Automaticamente, o comando axis disponibiliza a
escala atual para os gráficos subsequentes. Colocando
novamente axis regressa à escala automática.
O comando axis('square') assegura o uso da mesma
escala para ambos os eixos.
Para mais informação ver comando help axis.
Funções elementares de
gráfico
>>%Example 1.2
>>t=-0.5:0.01:3;
>>t0=0
>>u=stepfun(t,t0)
>>gprime=3.17*exp(-1.3*t).*cos(10.8*t + 1.15).*u;
% NOTE the use of the .* operator. The terms 3.17*exp(-1.3*t),
% cos(10.8*t + 1.15), and u are all vectors. We want the
% components of these vectors to be multiplied by the corresponding
% components of the other vectors, hence the need to use .* rather than *.
% The following statements plot the sequence and label the plot
>>plot(t,gprime);
>>axis([-.5,3,-3,2]);
>>title('Fig.E1.2d');
>>xlabel('t in seconds');
>>ylabel('gprime(t)');
>>text(-0.6,5,'f(t) = A cos(wt + phi)');
>>grid;
Funções elementares de
gráfico
Gráfico
Funções elementares de
gráfico
Duas formas de fazer múltiplos plots num único grafo

>>t = 0:.01:2*pi;
>>y1 = sin(t); y2=sin(2*t); y3=sin(4*t)
>>plot(t,y1,y2,y3)

E formando a matriz Y com os valores das funções como colunas.

>>t = 0:.01:2*pi;
>>y = [sin(t)', sin(2*t)', sin(4*t)']
>>plot(t,y)

Outra forma é o comando hold. O comando hold mantém a tela atual


dos gráficos de tal forma que os gráficos subsequentes possam ser
sobrepostos.
Funções elementares de
gráfico
Colors Line Styles
y yellow . point
M magenta o circle
C cyan x x-mark
R red + plus
G green - solid
B blue * star
W white : dotted
K black -. Dashdot
-- dashed

Mais tipos de marcas são ; square(s), diamond(d), up-triangle(v), down-


triangle(^), left-triangle(<), right-triangle(>), pentagram(p), hexagram(h)

Ver também help plot para mais cores de linhas e marcas.


Funções elementares de
gráfico
O comando subplot pode ser usado para dividir a tela de
forma a visualizar vários gráfcos simultaneamente. Ver help
subplot.
Examplo para uso de subplot:

>>% Line plot of a chirp


>> x=0:0.05:5;
>> y=sin(x.^2);
>> subplot(2,2,1), plot(x,y);
>> % Bar plot of a bell shaped curve
>> x = -2.9:0.2:2.9;
>> subplot(2,2,2), bar(x,exp(-x.*x));
>> % Stem plot
>> x = 0:0.1:4;
Funções elementares de
gráfico
Exemplo subplot
Salvar e ler arquivos

Quando se usa o MATLAB, pode desejar slavar os vetores e


matrizes que foram definidas.

SAVE, salva as variáveis do espaço de trabalho para disco


SAVE FILENAME salva todas as variáveis do espaço de
trabalho para um arquivo binário "MAT “designado por
FILENAME.mat.

Os dados podem ser recuperados com LOAD.

Se FILENAME não tiver extensão, é assumido.mat .

SAVE, sem mais nada cria o arquivo binário "MAT"


designado'matlab.mat'.
Salvar e ler arquivos

LOAD carrega as variáveis do espaço de trabalho do disco.


LOAD FILENAME carrega todas as variáveis dum ficheiro dado
o nome de ficheiro absoluto ou relativo
Se FILENAME não tiver extensão LOAD verifica FILENAME e
FILENAME.mat e trata-a como uma "MAT-file“binária.
Se FILENAME tiver uma extensão diferente de.mat, é tratada
como ASCII.
LOAD, por si só usa uma "MAT-file" designada por
'matlab.mat'. Devolve erro se 'matlab.mat' não existir.
LOAD FILENAME X carrega só o X.
LOAD FILENAME X Y Z ... Carrega as varáveis especificadas.
>>load x, y, z
Ver help save e help load para mais informações.
Arquivos .M

Os arquivos .M são macros de comandos


do MATLAB que são armazendas como
arquivos de texto com extensão "m",
isto é nomearquivo.m.

Um arquivo .M tanto pode ser uma


função com variáveis de E/S ou uma
lista de comandos.