Você está na página 1de 76

C

C
U
U
R
R
S
S
O
O
I
I
N
N
T
T
R
R
O
O
D
D
U
U
T
T

R
R
I
I
O
O


D
D
E
E


M
M
A
A
T
T
L
L
A
A
B
B
6
6
.
.
5
5







Prof. Silmara Alexandra da Silva Vicente
silmara@mackenzie.com.br
Janeiro/2003
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
2
Sumrio

1. Introduo
1.1 Histria do MATLAB
1.2 Toolboxes
1.3 Aprendendo a Utilizar o MATLAB
1.4 MATLAB no Ambiente Windows
1.5 Comandos Bsicos e Declaraes de Variveis
1.6 Nmeros e Expresses Aritmticas
1.7 Formato de Sada
1.8 Matrizes Simples
1.9 Elementos das Matrizes
1.10 Indexao de Elementos de Matrizes
1.11 Dimenso de Vetores e Matrizes
1.12 Matrizes Especiais
1.13 Nmeros e Matrizes Complexas
1.14 Funes Matemticas Elementares
1.15 Facilidades do Help

2. Operaes com Matrizes
2.1 Transposta
2.2 Adio e Subtrao
2.3 Multiplicao
2.4 Diviso
2.5 Potenciao

3. Operaes Relacionais e Lgicas
3.1 Operadores Relacionais
3.2 Operadores Lgicos
3.3 Arquivos M de Comandos

4. Controle de Fluxo
4.1 Lao For
4.2 Lao While
4.3 Estrutura If-Else-End
4.4 Estrutura Switch-Case

5. Arquivos M de Funes
5.1 Porque usar funes?
5.2 Diferena entre Arquivo M de Funes e Arquivo M de Comandos
5.3 Como escrever uma Funo
5.4 Regras e Propriedades


6. Anlise Numrica
6.1 Otimizao
6.2 Integrao Numrica
6.3 Soluo de Equaes Diferenciais
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
3

7. Polinmios
7.1 Razes
7.2 Multiplicao
7.3 Adio
7.4 Diviso
7.5 Clculo de Polinmios
7.6 Derivada de Polinmios

8. Grficos
8.1 Grficos Bidimensionais
8.2 Estilos de Linhas e Smbolos
8.3 Nmeros Complexos
8.4 Escala Logartmica, Coordenada Polar e Grfico de Barras
8.5 Grficos Tridimensionais
8.6 Anotaes no Grfico

9. Simulink
9.1 Introduo ao Simulink
9.2 Exemplos

10. Referncias Bibliogrficas

11. Anexos



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
4
1 INTRODUO
1.1. HISTRIA DO MATLAB

- Desenvolvido no final da dcada de 70 na Universidade do Novo Mxico e na Universidade de
Stanford, onde a primeira verso foi lanada em 1984;

- destinado aos cursos de teoria matricial, lgebra linear e anlise numrica;

- Atualmente esse software est to desenvolvido que sua capacidade se estende muito alm do
"Laboratrio de Matrizes" traduo para a palavra MATLAB;

- MATLAB um software interativo e uma linguagem de programao aplicada tanto para
computao tcnica como cientfica em geral;

- Ele integra a capacidade de fazer clculos, visualizao grfica e programao em um ambiente
fcil de usar. O elemento bsico uma matriz e no requer dimensionamento priori. Isso
permite solucionar muitos problemas numricos em uma frao de tempo menor do que seria
necessrio para escrever um programa em uma linguagem como FORTRAN, Basic ou C;

- A forma de expressar a soluo de problemas no MATLAB quase a mesma na qual eles so
escritos matematicamente;

- A matemtica a linguagem comum de grande parte das cincias e da engenharia. As matrizes,
equaes diferenciais, conjuntos de dados, grficos e diagramas so os blocos bsicos tanto da
matemtica aplicada quanto do MATLAB. Sendo essa base matemtica que torna o MATLAB
acessvel e poderoso;

Alguns exemplos das muitas reas onde o MATLAB tem sido utilizado:

Um estudante de ps-graduao em Fsica analisando e visualizando dados de seus
experimentos com campos magnticos de super condutores;
Um parque de diverses modelando os sistemas de controle para seus brinquedos;
Um estudante de primeiro grau aprendendo multiplicao;

- J existem mais de 500.000 usurios ao redor do mundo, no Brasil o MATLAB tem estado
presente nas Universidades e Faculdades de primeira linha bem como nos departamentos de
engenharia e desenvolvimento das principais empresas e instituies do pas: Companhia Vale do
Rio Doce, Embraer, Renault do Brasil, Motorola do Brasil, Petrobrs, BankBoston, Banco do
Brasil, Banco Central do Brasil e outros.

- Em todos esses casos e em milhares de outros, o fundamento matemtico do MATLAB torna-o
til em locais e aplicaes muito alm do que se pode imaginar.




Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
5
1.2. TOOLBOXES

O MATLAB tanto um ambiente quanto uma linguagem de programao e um de seus aspectos
mais poderosos o fato de que a linguagem MATLAB permite-lhe construir suas prprias
ferramentas reutilizveis. Pode-se facilmente criar suas prprias funes e programas especiais
(conhecidos como arquivos M) em linguagem MATLAB.
TOOLBOX: uma coleo especializada de arquivos M para trabalhar em classes
particulares de problemas, traduzindo, so bibliotecas de rotinas MATLAB (m-files), aplicadas a
reas especficas tais como: controle, estatstica, lgebra, lgica nebulosa (lgica fuzzy). Essas
bibliotecas so construdas usando a linguagem do MATLAB e isso tem algumas implicaes:

possvel uma integrao direta e perfeita com o Simulink e quaisquer outras toolboxes
que se tenha disponvel;

Como todas as toolboxes esto escritas em linguagem MATLAB, pode-se tirar proveito
da caracterstica de sistema aberto do MATLAB e tambm examinar os arquivos M, edit-los ou
utiliz-los como modelos de referncia quando estiver criando suas prprias funes;

Toda toolbox disponvel para qualquer tipo de sistema que execute o MATLAB;

Alguns exemplos de toolboxes:

- Toolbox de Processamento de Sinais

- Toolbox de Identificao de Sistemas

- Toolbox de Otimizao

- Toolbox de Sistemas de Controle

- Toolbox de Estatstica

Existem ainda muitas outras toolboxes tais como:

Lgica Fuzzy Fuzzy Logic
Redes Neurais Neural Network
Matemtica Simblica e Algbrica Simbolic Math Toolbox

1.3. APRENDENDO A UTILIZAR O MATLAB

Uma maneira fcil de visualizar o MATLAB pensar (imaginar) que se est trabalhando com
uma calculadora cientfica. Lembrando que nessa calculadora alm das operaes elementares
como: adio, subtrao, multiplicao e diviso ela tambm opera com nmeros complexos,
razes quadradas, potenciaes, logaritmos e simulaes complexas de sistemas lineares e no
lineares entre outras aplicaes. Uma grande vantagem do MATLAB a facilidade em
programar na sua prpria linguagem e com isso armazenar e recuperar dados, criar, executar e
armazenar seqncias de comandos para automatizar os clculos. Tambm possvel plotar
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
6
dados de diversas maneiras, manipular polinmios, integrar funes, manipular equaes
simbolicamente e ainda programar suas prprias funes de acordo com a necessidade.

Na realidade, o MATLAB oferece muitas outras caractersticas e muito mais verstil do que
qualquer calculadora:
uma ferramenta para fazer clculos matemticos;
uma linguagem de programao com caractersticas mais avanadas;
Fcil de aplicar quando comparado s linguagens de programao como: BASIC, Pascal
ou C/C++.
Esse software apresenta um ambiente rico para a visualizao de dados graas sua poderosa
capacidade grfica. uma plataforma de desenvolvimento de aplicaes, na qual conjuntos de
ferramentas inteligentes para soluo de problemas em aplicaes especficas, podem ser
desenvolvidos de forma relativamente fcil.
1.4. MATLAB NO AMBIENTE WINDOWS
Para iniciar o MATLAB muito simples; basta clicar no cone:

Ou menu: iniciar/programas/Matlab6.5/Matlab6.5


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
7
A Janela inicial do MATLAB a seguinte:

1. Comand Window:
a rea de trabalho onde os comandos (as instrues) so digitados; as operaes
podem ser realizadas e seus resultados so mostrados;
Tambm nessa janela que se pode executar um arquivo m-file;
O prompt >> indica que o programa est pronto aguardando uma instruo;
Com as teclas (seta para cima) e (seta para baixo) possvel recuperar
todos os comandos j digitados.
2. Workspace:
a rea na qual so exibidas todas as variveis definidas na rea de trabalho;
Essa janela possui quatro colunas indicando o nome, dimenso, nmero de bytes e
a classe de cada varivel;
As variveis podem ser editadas e visualizadas nessa prpria janela, basta dar um
click-duplo para edit-las;
H um menu flutuante que possvel:
1. Open - abrir a janela
2. Graph criar grficos a partir dos dados contidos na varivel
3. Select All selecionar todas as variveis
4. Import Data importar variveis de um arquivo para o workspace
5. Save Selection As salvar as variveis selecionadas em um arquivo
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
8
6. Save Workspace As salvar todas as variveis do workspace em um
arquivo
7. Copy copiar a varivel para a rea de transferncia de dados do
Windows
8. Delete apagar a varivel do workspace
9. Clear Workspace apagar todas as variveis do workspace
10. Rename renomear a varivel.
3. Current Directory
rea onde exibida uma lista dos arquivos contidos no diretrio corrente;

4. Command History
rea onde ficam armazenadas todas as instrues executadas no MATLAB;





Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
9
5. Menus pop-up
So os comandos de configurao do ambiente MATLAB;

1.5. COMANDOS BSICOS NO COMMAND WINDOW E DECLARAES DE VARIVEIS
Para iniciar o nosso trabalho no MATLAB necessrio aprender alguns comandos essenciais da
janela de trabalho (command window) e na seqncia vamos aplic-los.
who Mostra as variveis do espao de trabalho.
whos Mostra as variveis do espao de trabalho com detalhes.
clear Limpa a memria do espao de trabalho.
clc Limpa a tela.
dir ou
ls
Mostra o contedo do diretrio que se encontra.
cd ou
pwd
Informa ou altera diretrio corrente.
what Exibe os arquivos MATLAB contidos no diretrio.
which Identifica e localiza arquivo
Assim como qualquer outra linguagem de programao, o MATLAB tem regras a respeito do
nome de variveis. Os nomes devem ser palavras nicas, sem incluso de espaos e no devem
conter caracteres acentuados.
Mais especificamente, as regras para variveis so:
Regras para Nomes de Variveis Comentrios e Exemplos
As variveis so sensveis a maisculas e
minsculas;
Itens, itens, itEns e ITEns. So todas variveis
diferentes.
As variveis podem conter no mximo 31
caracteres; o que ultrapassar esse nmero
ignorado.
oquevoceachadessenomedevariavel
Os nomes das variveis devem comear com
uma letra, podem ser seguidos de um nmero,
letras ou sublinhados.
O_que_voc_acha_deste_nome
X51483



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
10
Alm dessas regras de nomes de variveis, o MATLAB possui algumas variveis especiais:
Varivel Valor
ans Varivel-padro usada para resultados
pi 3.14159265358979...
inf Infinito ex:1/0
NaN (ou) nan No Numrico ex: 0/0
i (e) j i=j=sqrt(-1) raiz imaginria
realmin Menor nmero real utilizvel (2.2251e-308)
realmax Maior nmero real utilizvel (1.7977e+308)

Exemplos de declaraes de variveis:

>>A=5
>>borrachas=7
>>blocos=6;

H uma diferena na execuo dessas trs variveis, est relacionada com o ponto e vrgula ;
no final da atribuio. Se o ltimo caractere da declarao um ponto e vrgula ";" a impresso
na tela suprimida, mas a tarefa realizada. Esse procedimento usado em arquivos com
extenso ".m" e em situaes onde o resultado uma matriz de grandes dimenses e h interesse
em apenas alguns dos seus elementos.

Se acaso no for declarado o nome de uma varivel o MATLAB tem como padro uma varivel
chamada ans (answer). Exemplo:

>>borrachas+blocos

ans=
13

Isso s ocorre porque no foi atribudo o resultado da soma a uma varivel especfica.

>>s=borrachas+2*blocos
s=
19
Todas as funes devem ser escritas em letras minsculas:
>> who
Your variables are:

A blocos borrachas s

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
11
e no WHO em letra maiscula.
Para saber os detalhes dessas variveis, s digitar:

whos
Name Size Bytes Class

A 1x1 8 double array
blocos 1x1 8 double array
borrachas 1x1 8 double array
s 1x1 8 double array

Grand total is 4 elements using 32 bytes

As variveis do espao de trabalho podem ser excludas incondicionalmente usando-se o
comando clear:

>> clear A % exclui somente a varivel A.
>> clear blocos s % exclui as variveis blocos e s.
>> clear b* % exclui as variveis que iniciam com a letra b.

Obs.: No h solicitao de confirmao, todas as variveis sero apagadas e no podero ser
recuperadas.
>>borrachas=5;
>>canetas=8;
>>lapiseiras=3;
>>r=borrachas+canetas+lapiseiras

Para salvar os dados do Command Window:
Uma das alternativas ir at o menu: File/ Save Workspace As / digitar o nome do arquivo:
Por exemplo: exe1.mat
Para recuperar os dados s ir no menu: File / Open e abrir o arquivo desejado:

>>clear

Em seguida abrir o arquivo exe1.mat.

Se desejar salvar algumas variveis em especfico tambm possvel a partir da Janela de
Comandos:

>> save nome do arquivo variveis desejadas

>>save exe2 borrachas lapiseiras
>>clear

Para carregar essas variveis da Janela de Comandos s digitar:
>> load exe2.mat
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
12
1.6. NMEROS E EXPRESSES ARITMTICAS
A seguir so mostrados alguns exemplos de nmeros aceitos no MATLAB:
3 -99 0.00001
9.637458638 1.602E-20 6.06375e23
As expresses podem ser construdas usando os operadores aritmticos usuais e as regras de
precedncia:
1 + Adio
2 - Subtrao
3 * Multiplicao
4 / Diviso
5 ^ Potenciao
Exemplos:
>> a=6;
>>b=8;
>>c=a-b
-2
>>d=a-2*b
-10
>>e=2*a-2^b
-244
Para expresses utilizar sempre os parnteses:
>>resp=2*(a-3*b)^1/2-5*(2*a-sqrt(b))
-63.858


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
13
1.7. FORMATO DE SADA
O formato numrico exibido na tela pode ser modificado utilizando-se o comando format, que
afeta somente o modo como as matrizes so mostradas, e no como elas so computadas ou
salvas.
Se todos os elementos das matrizes so inteiros exatos, a matriz mostrada em um formato sem
qualquer ponto decimal. Por exemplo,
>> x = [-1 0 1]
resulta em:
x =
-1 0 1
Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias possibilidades de
formatar a sada. O formato "default", chamado de formato short, mostra aproximadamente 4
dgitos decimais ou usam notao cientfica. Por exemplo, a matriz:
>> x = [4/3 1.2345e-6]
mostrada , para cada formato usado, da seguinte maneira:
format short 1.3333 0.0000 4 dgitos decimais
format short e 1.3333e+000 1.2345e-006 4 dgitos em notao cientfica
format long 1.33333333333333 0.000000123450000 15 dgitos decimais
format long e 1.333333333333333e+000 1.234500000000000e-006 15 dgitos em notao cientfica
format hex 3ff5555555555555 3eb4b6231abfd271 Hexadecimal
format rat 4/3 1/810045 Frao
format bank 1.33 0.00 2 dgitos decimais
format + ++ Positivos + e negativos -
O formato + uma maneira compacta de mostrar matrizes de grandes dimenses. Os smbolos
"+", "-", e "espao em branco" so mostrados, respectivamente para elementos positivos,
elementos negativos e zeros.


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
14
Exemplo:
a=[1.23 125.365 -115845
125.025 0 -22114.025
154.024 0.2025 0
01.0114 -1.0025 -1121]

a =

++-
+ -
++
+--

Exerccios Numricos:

1) Considere o problema de estimar a altura de um edifcio como ilustrado na figura. Estando o
observador est a uma distncia D do edifcio, com um ngulo e sendo a altura do observador h
deseja-se saber a altura do edifcio.
Dados: h=1.83m
=60
D=46m




2) Vc decidiu comprar um carro novo por R$18500.00. O vendedor est oferecendo duas opes
de financiamento:
a) Uma taxa mensal de juros de 0.99% paga durante 4 anos;

b) Uma taxa mensal de juros de 1.30% paga durante 4 anos e um desconto de fbrica de
R$1800.00.
Pergunta-se: Qual das duas opes o melhor negcio? E qual a economia?

+
+
=
1 ) R 1 (
) R 1 ( R
A P
M
M


T=P.M

P=pagamento mensal
R=taxa de juros
M=nmero de meses
T=total a ser pago



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
15
1.8. MATRIZES SIMPLES
As matrizes podem ser introduzidas no MATLAB por diferentes caminhos:
- digitadas na Janela de Comando (lista explcita de elementos),
- geradas por comandos e funes,
- criadas em arquivos ".m",
- carregadas a partir de um arquivo de dados externo.
O mtodo mais fcil de entrar com pequenas matrizes no MATLAB usando uma lista explcita.
Os elementos de cada linha da matriz so separados por espaos em branco ou vrgulas e as
colunas separadas por ponto e vrgula, colocando-se colchetes em volta do grupo de elementos
que formam a matriz. Por exemplo, entre com a expresso:
>> A=[ 1 2 3;4 5 6;7 8 9 ]
Pressionando <enter> o MATLAB mostra o resultado
A =
1 2 3
4 5 6
7 8 9
As matrizes podem, tambm, ser introduzidas linha a linha, o que indicado para matrizes de
grande dimenso. Por exemplo:
>>A = [1 2 3
4 5 6
7 8 9]
Com o comando load pode-se ler matrizes geradas pelo MATLAB, armazenadas em arquivos
binrios ou matrizes geradas por outros programas armazenadas em arquivos ASCII.
Nos exemplos anteriores, os valores dos elementos de um vetor so digitados um a um, isto s
fcil quando se tm poucos elementos, e o que se faz para inmeros elementos?
>> x=[0:0.1:1]*pi
x =

0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416

>> x=linspace(0,pi,11)
x =

0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
16
No primeiro exemplo de x, utilizada a forma do valor inicial do vetor, o passo, ou seja, o
incremento desse vetor e o ltimo valor.
x=[valor inicial : incremento : valor final]
No segundo exemplo utilizada a funo linspace, primeiramente o valor inicial, depois o valor
final e por ltimo o nmero de pontos que se deseja desse vetor.
linspace(valor inicial, valor final, nmero de pontos)
1.9. ELEMENTOS DAS MATRIZES
Os elementos das matrizes podem ser qualquer expresso do MATLAB, por exemplo:
>> x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2]
resultando em :
x =
-l.3000 1.4142 23.0400
Um elemento individual da matriz pode ser reverenciado com ndice entre parnteses.
Continuando o exemplo,
>> x(6) = abs(x(1))
o que produz:
x =
-1.3000 1.4142 23.0400 0 0 1.3000
Note que a dimenso do vetor x aumentada automaticamente para acomodar o novo elemento e
que os elementos do intervalo indefinido so estabelecidos como zero.
Grandes matrizes podem ser construdas a partir de pequenas matrizes. Por exemplo, pode-se
anexar outra linha na matriz A usando:
>> r= [ 10 11 12];
>> A= [A;r]



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
17
que resulta em:
A =
1 2 3
4 5 6
7 8 9
10 11 13
Note que o vetor r no foi listado porque ao seu final foi acrescentado ";".
Pequenas, matrizes podem ser extradas de grandes matrizes usando ":". Por exemplo,
>>A = A(1:3,:);
seleciona as trs primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua
forma original.
1.10. INDEXAO DE ELEMENTOS DE MATRIZES
O MATLAB utiliza a forma tradicional para indexar matrizes:
) j , i ( a a
j , i
= onde i representa nmero de linhas e j nmero de colunas
Exemplo:
>>A=[1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15]
15 14 13 12 11
10 9 8 7 6
5 4 3 2 1
A =
>>A(2,4) % o elemento da segunda linha e quarta coluna
ans= 9
>>A(11) % o dcimo primeiro elemento
ans= 9
15 ) 15 ( 14 ) 12 ( 13 ) 9 ( 12 ) 6 ( 11 ) 3 (
10 ) 14 ( 9 ) 11 ( 8 ) 8 ( 7 ) 5 ( 6 ) 2 (
5 ) 13 ( 4 ) 10 ( 3 ) 7 ( 2 ) 4 ( 1 ) 1 (
A =

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
18
>>b=A(2,2:4) % cria uma matriz utilizando a segunda linha de A e as colunas 2, 3 e 4 de A
b=
7 8 9

>>c=A(:,3) % gera uma matriz c utilizando todas as linhas de A e somente a terceira coluna
c=
3
8
13

>>d=A(1, :) %gera uma matriz d utilizando a primeira linha de A e todas as colunas
d=
1 2 3 4 5

>>e=A(3,3:end) %gera uma matriz e utilizando a terceira linha de A e da terceira at a
ltima coluna de A
e=
13 14 15

1.11. DIMENSO DE VETORES E MATRIZES

As funes mais utilizadas para fornecer informaes de uma matriz so:
Size que mostra a ordem da matriz, nmero de linhas e nmero de colunas;
Length mostra o nmero de linhas ou nmero de colunas, mostra somente o maior valor.

Por exemplo:
>> A=[1 2 3; 4 5 6; 7 8 9]'
A =
1 4 7
2 5 8
3 6 9

>> B=[ -1 4 -7
2 -5 8
-3 6 -9]
B=
-1 4 -7
2 -5 8
-3 6 -9]

>> C=1:9
C =

1 2 3 4 5 6 7 8 9




Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
19
>> B=[B; 1 1 1]
B =

-1 4 -7
2 -5 8
3 6 9
1 1 1
1 1 1

>> size(B)
ans =

5 3

>> length(B)
ans =

5

1.12. MATRIZES ESPECIAIS

O MATLAB dispe de algumas matrizes especiais, onde algumas delas so de uso geral,
enquanto outras so matrizes voltadas para aplicaes especializadas. As matrizes de uso geral
incluem:

Find => retorna os ndices de uma matriz, por exemplo, dos elementos no nulos.

>> B=[B; 1 1 1; 1 2 3]
B =

-1 4 -7
2 -5 8
3 6 9
1 1 1
1 2 3

>> c=find(B<0)
c =

1
7
11

zeros => retorna uma matriz nula na ordem que o usurio especificar:

>> zeros(2,3)
ans =

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
20
0 0 0
0 0 0

>> zeros (3)
ans =

0 0 0
0 0 0
0 0 0

ones => retorna uma matriz de elementos iguais a 1:

>> ones(3,1)
ans =

1
1
1

>> ones(4)
ans =

1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1

rand => retorna uma matriz de nmeros aleatrios uniformemente distribudos entre 0 e 1.
>> rand(3)
ans =

0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214

>> rand(2,3)
ans =

0.4447 0.7919 0.7382
0.6154 0.9218 0.1763

randn => retorna uma matriz de nmeros aleatrios que seguem a distribuio normal, com
mdia zero e varincia igual a 1.





Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
21
>> randn(3,4)
ans =

-0.4326 0.2877 1.1892 0.1746
-1.6656 -1.1465 -0.0376 -0.1867
0.1253 1.1909 0.3273 0.7258

eye => retorna uma matriz identidade da ordem desejada:

>> eye(5)
ans =

1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1

>> eye(3,4)
ans =

1 0 0 0
0 1 0 0
0 0 1 0

Funes Sintaxe
Det determinante de uma matriz det(A)
Diag diagonal de uma matriz ou matriz diagonal a partir de um vetor diag(A)
Inv retorna a inversa da matriz inv(A)
Reshape reformata as dimenses de uma matriz, mantendo o nmero original de elementos reshape(A, m,n)
Numel Retorna o nmero de elementos de uma matriz numel(A)
Ndims retorna o nmero de dimenses da matriz ndims(A)
Tril retorna a matriz triangular inferior da matriz dada tril(A)
Triu retorna a matriz triangular superior da matriz dada triu(A)

1.13. NMEROS E MATRIZES COMPLEXAS
Nmeros complexos so permitidos em todas operaes e funes no MATLAB. Os nmeros
complexos so introduzidos usando-se as funes especiais i e j. Por exemplo
>> z= 3 + 4*i
ou
>> z= 3 +4*j
As seguintes declaraes mostram dois caminhos convenientes para se introduzir matrizes
complexas no MATLAB:
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
22
>> A= [1 2; 3 4]+i*[5 6;7 8]
e
>> A= [1+5*i 2+6*i; 3+7*i 4+8*i]
que produzem o mesmo resultado.
1.14. FUNES MATEMTICAS ELEMENTARES
A "fora" do MATLAB vem de um conjunto extenso de funes. O MATLAB possui um grande
nmero de funes intrnsecas que no podem ser alteradas pelo usurio. Outras funes esto
disponveis em uma biblioteca externa distribuda com o programa original (MATLAB
TOOLBOX), que so na realidade arquivos com a extenso ".m" criados a partir das funes
intrnsecas. A biblioteca externa (MATLAB TOOLBOX) pode ser constantemente atualizada
medida que novas aplicaes so desenvolvidas. As funes do MATLAB, intrnsecas ou
arquivos ".m", podem ser utilizadas apenas no ambiente MATLAB.
As categorias gerais de funes matemticas disponveis no MATLAB incluem:
Matemtica elementar;
Funes especiais;
Matrizes elementares;
Matrizes especiais;
Decomposio de matrizes;
Polinmios;
Soluo de equaes diferenciais;
Equaes no-lineares e otimizao;
Integrao numrica;
Alguns exemplos:
>>x=0.5
>>sin(x)
>>cos(x)
>>sqrt(x)
>>exp(x)
1.15. AS FACILIDADES DO HELP (AJUDA)
O MATLAB possui um comando de ajuda (help) que fornece informaes sobre a maior parte
dos tpicos.
Digitando:
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
23
>> help
Obtm-se uma lista desses tpicos disponveis:
matlab\general - General purpose commands.
matlab\ops - Operators and special characters.
matlab\lang - Programming language constructs.
matlab\elmat - Elementary matrices and matrix manipulation.
matlab\elfun - Elementary math functions.
matlab\specfun - Specialized math functions.
matlab\matfun - Matrix functions - numerical linear algebra.
matlab\datafun - Data analysis and Fourier transforms.
matlab\audio - Audio support.
matlab\polyfun - Interpolation and polynomials.
matlab\funfun - Function functions and ODE solvers.
matlab\sparfun - Sparse matrices.
matlab\graph2d - Two dimensional graphs.
matlab\graph3d - Three dimensional graphs.
matlab\specgraph - Specialized graphs.
matlab\graphics - Handle Graphics.
matlab\uitools - Graphical user interface tools.
matlab\strfun - Character strings.
matlab\iofun - File input/output.
matlab\timefun - Time and dates.
matlab\datatypes - Data types and structures.
matlab\verctrl - Version control.
matlab\winfun - Windows Operating System Interface Files
(DDE/ActiveX)
matlab\demos - Examples and demonstrations.
toolbox\local - Preferences.
simulink\simulink - Simulink
simulink\blocks - Simulink block library.
.
.
.
MATLABR12\work - (No table of contents file)
For more help on directory/topic, type "help topic".
Para obter informaes sobre um tpico especfico, digite help tpico. Por exemplo:
>> help plot
que fornece uma lista de todos os comandos relacionados com grficos bidimensionais:
PLOT Linear plot.
PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
then the vector is plotted versus the rows or columns of the matrix,
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
24
whichever line up. If X is a scalar and Y is a vector, length(Y)
disconnected points are plotted.
PLOT(Y) plots the columns of Y versus their index.
If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).
In all other uses of PLOT, the imaginary part is ignored.

Various line types, plot symbols and colors may be obtained with
PLOT(X,Y,S) where S is a character string made from one element
from any or all the following 3 columns:

b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus
at each data point; PLOT(X,Y,'bd') plots blue diamond at each data
point but does not draw any line.

PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
the (X,Y,S) triples, where the X's and Y's are vectors or matrices
and the S's are strings.

For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a
solid yellow line interpolating green circles at the data points.

The PLOT command, if no color is specified, makes automatic use of
the colors specified by the axes ColorOrder property. The default
ColorOrder is listed in the table above for color systems where the
default is blue for one line, and for multiple lines, to cycle
through the first six colors in the table. For monochrome systems,
PLOT cycles over the axes LineStyleOrder property.

PLOT returns a column vector of handles to LINE objects, one
handle per line.

The X,Y pairs, or X,Y,S triples, can be followed by
parameter/value pairs to specify additional properties
of the lines.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
25

See also SEMILOGX, SEMILOGY, LOGLOG, PLOTYY, GRID, CLF, CLC, TITLE,
XLABEL, YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, SUBPLOT, STEM.

Overloaded methods
help cfit/plot.m
help cgrules/Plot.m
help xregtwostage/plot.m
help xregtransient/plot.m
help xregmodel/plot.m
help localmod/plot.m
help sweepset/plot.m
help mdevtestplan/plot.m
help cgdatasetnode/plot.m
help cgdatadisplay/plot.m
help idmodel/plot.m
help iddata/plot.m
help ntree/plot.m
help dtree/plot.m
help wvtree/plot.m
help rwvtree/plot.m
help edwttree/plot.m
Finalmente, para obter informaes sobre um comando especfico, por exemplo title, digite:
>> help title
e informaes mais detalhadas sobre este comando sero exibidas:
>> help title

TITLE Graph title.
TITLE('text') adds text at the top of the current axis.

TITLE('text','Property1',PropertyValue1,'Property2',PropertyValue2,...)
sets the values of the specified properties of the title.

H = TITLE(...) returns the handle to the text object used as the title.

See also XLABEL, YLABEL, ZLABEL, TEXT.
Note que no exemplo mostrado para adicionar o ttulo em um grfico, TITLE (text) est escrito
em letras maisculas somente para destacar. Deve-se lembrar que todos os comandos do
MATLAB devem ser escritos em letras minsculas, portanto, para adicionar o texto "Ttulo do
Grfico" em um grfico, digite:
>> title (Ttulo do Grfico)
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
26
2. OPERAES COM MATRIZES
As operaes com matrizes no MATLAB so as seguintes:
Adio;
Subtrao;
Multiplicao;
Diviso direita;
Diviso esquerda;
Potenciao;
Transposta;
As operaes sero mostradas com mais detalhes e um exemplo de cada.
2.1 TRANSPOSTA
O caracter apstrofo, " ' " , indica a transposta de uma matriz. A declarao de:
>> A = [1 2 3; 4 5 6; 7 8 0]
>> B = A'
que resulta em:
A = 1 2 3
4 5 6
7 8 0
B = 1 4 7
2 5 8
3 6 0
e
>> x = [-1 O 2]'
produz|:
x =
-1
0
2
Se Z uma matriz complexa, Z ser o conjugado complexo composto. Para obter simplesmente
a transposta de Z deve-se usar Z., como mostra o exemplo:
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
27
>> Z = [1 2; 3 4] + [5 6; 7 8]*i
>> Z1 = Z
>> Z2 = Z.
que resulta em:
Z =
1.0000 + 5.0000i 2.0000 + 6.0000i
6.0000 + 7.0000i 4.0000 + 8.0000i

Z1 =
1.0000 - 5.0000i 3.0000 - 7.0000i
2.0000 - 6.0000i 4.0000 - 8.0000i

Z2 = 1.0000 + 5.0000i 3.0000 + 7.0000i
2.0000 + 6.0000i 4.0000 + 8.0000i
2.2 ADIO E SUBTRAO
A adio e subtrao de matrizes so indicadas, respectivamente, por "+" e "-". As operaes so
definidas somente se as matrizes tm as mesmas dimenses. Por exemplo, a soma com as
matrizes mostradas acima, A + x, no correta porque A 3x3 e x 3x1. Porm,
>> C = A + B
aceitvel, e o resultado da soma :
C =
2 6 10
6 10 14
10 14 0
A adio e subtrao tambm so definidas se um dos operadores um escalar, ou seja, uma
matriz l x l. Neste caso, o escalar adicionado ou subtrado de todos os elementos do outro
operador. Por exemplo:
>> y = x - 1
resulta em:
y =
-2
-1
1

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
28
2.3 MULTIPLICAO
A multiplicao de matrizes indicada por "*". A multiplicao x*y definida somente se a
segunda dimenso de x for igual primeira dimenso de y, ou seja, o nmero de colunas da
primeira matriz for igual ao nmero de linhas da segunda matriz. Assim a multiplicao pode ser
executada como:
>> x'* y
aceitvel, e resulta em:
ans =
4
evidente que o resultado da multiplicao y'*x ser o mesmo. Existem dois outros produtos que
so transpostos um do outro.
>> x*y
Ans =
2 l -l
0 0 0
-4 -2 2
>> y*x
Ans =
2 0 -4
1 0 -2
-1 0 2
O produto de uma matriz por um vetor tambm pode ser executado, por exemplo, A e x:
>> b = A*x
que resulta em:
b =
5
8
-7
Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.
>> pi*x
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
29
Ans =
-3.1416
0
6.2832
Para realizar a multiplicao de elemento por elemento de duas matrizes necessrio utilizar o
smbolo de multiplicao escalar pontuada .*. O ponto precede o asterisco, smbolo padro da
multiplicao, diz ao MATLAB para fazer a multiplicao elemento por elemento. A
multiplicao sem o ponto significa multiplicao matricial.
>> g=[1 2 3 4
5 6 7 8
9 10 11 12]
g =

1 2 3 4
5 6 7 8
9 10 11 12

>> h=[1 1 1 1; 2 2 2 2; 3 3 3 3]
h =

1 1 1 1
2 2 2 2
3 3 3 3

>> g.*h
ans =

1 2 3 4
10 12 14 16
27 30 33 36
2.4 DIVISO
Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma matriz
quadrada no singular, ento A\B e A/B correspondem respectivamente a inv(A)*B e A*inv(B),
por exemplo:
>>A=[1 2; 3 4]
>>B=[5 6; 7 8]






Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
30
>>A/B
ans =
3.0000 -2.0000
2.0000 -1.0000

>>A\B
ans =
-3.0000 -4.0000
4.0000 5.0000

>> g./h
ans =

1.0000 2.0000 3.0000 4.0000
2.5000 3.0000 3.5000 4.0000
3.0000 3.3333 3.6667 4.0000

2.5 POTENCIAO
A expresso A^p eleva A p-sima potncia e definida se A matriz quadrada e p um escalar.
Se p um inteiro maior do que um, a potenciao computada como mltiplas multiplicaes.
Por exemplo:
>> A^3
ans =
279 360 306
684 873 684
738 900 441

>> g.^2
ans =

1 4 9 16
25 36 49 64
81 100 121 144



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
31
>> 2.^g
ans =

2 4 8 16
32 64 128 256
512 1024 2048 4096

>> g.^h
ans =

1 2 3 4
25 36 49 64
729 1000 1331 1728

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
32

3. OPERAES RELACIONAIS E LGICAS

3.1. OPERADORES RELACIONAIS

< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
= = Igual a
~= Diferente de

Exemplos:

>> A=1:9
>> B=9-A
A=1 2 3 4 5 6 7 8 9
B=8 7 6 5 4 3 2 1 0

>> vf=A>4
vf =
0 0 0 0 1 1 1 1 1

>> vf1=(A==B)
vf1 = 0 0 0 0 0 0 0 0 0
A comparao feita entre os pares de elementos correspondentes e o resultado uma matriz
composta dos nmeros um e zero, com um representando VERDADEIRO e zero, FALSO. Por
exemplo,
>> 2 + 2 ~= 4
ans =
0
3.2. OPERADORES LGICOS
& E
| Ou
~ No
Pode-se usar, tambm os operadores lgicos como mostrados a seguir:
>> 1= = 1 & 4 = = 3
ans =
0
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
33
>> 1 = = 1 | 4 = = 3
ans =
1

3.3. ARQUIVOS M DE COMANDOS

Para problemas simples, mais rpido introduzir comandos no prompt do MATLAB, ou seja, no
prprio Command Window. Entretanto, se o nmero de comandos grande e voc vai precisar
repetir tais clculos, ento melhor abrir um arquivo de texto simples e depois pedir para o
MATLAB executar esse programa. Esses arquivos so chamados de arquivos M ou arquivos de
comandos. So salvos com a extenso .m. Para criar um arquivo basta selecionar New do menu
File e, ento, selecione M-File. Esse procedimento abre uma janela do editor de texto na qual
voc pode escrever os comandos do MATLAB.
Em virtude da grande utilidade dos arquivos de comandos o MATLAB possui vrias funes
apropriadas para o uso em arquivos M. Essas funes so:

Comandos Descrio
disp(ans) Mostra os resultados sem identificar o nome das variveis
echo Controla a exibio dos comandos dos arquivos M na janela de comandos
input Solicita ao usurio que fornea um dado de entrada
pause Suspende a execuo at que o usurio pressione alguma tecla
pause (n) Suspende a execuo por n segundos
waitforbuttonpress Suspende a execuo at que o usurio pressione uma tecla ou um boto do
mouse.
Exemplos de arquivos M

1) Calcular a soma de trs nmeros:

%Exemplo da soma de tres numeros
%
echo on
n1=input('Entre com o primeiro numero: ');
n2=input('Entre com o segundo numero: ');
n3=input('Entre com o terceiro numero: ');
soma=n1+n2+n3;
disp(' ' )
disp(' ')
disp(['o resultado da soma : ' num2str(soma)])


2)Utilizando a funo sum, elaborar um programa que calcule:
5 4 3 2 1
x
3
2
x
2
5
x
8
4
x
5
3
x s + =
Entrada de dados: 1 x
1
= x
2
=-3 x
3
=12 x
4
=-1/8 x
5
=20/7

3) Calcular o somatrio dos nmeros mpares de 3 a 65 e o produtrio dos nmeros pares de 8 a
64. O aluno deve usar as funes: sum e prod.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
34

4. CONTROLE DE FLUXO
Os comandos que controlam o fluxo especificam a ordem em que a computao feita. No
MATLAB estes comandos so semelhantes aos usados na linguagem C, mas com uma estrutura
diferente (mais simples).
4.1. LAO FOR
O lao for o controlador de fluxo mais simples e usado na programao MATLAB.
Estrutura Geral
for x = <valor inicial>:<incremento>:<valor final>
comandos
end
Os comandos entre as instrues for e end so executados uma vez para cada coluna do
vetor. Por exemplo:
>> for i=1:5,
X(i)=i^2;
end
O lao for possibilita que uma srie de comandos seja repetida por um nmero de vezes fixo e
pr-definido. O comando end usado como limite inferior do corpo do lao.
comum construes com conjuntos de laos for aplicados a implementaes de matrizes:
for i= 1:8
for j= 1:8,
A(i,j)= i+j;

B(i,j)= i-j;
end
end

C=A +B;

Exemplos:
1) Calcular a tabuada do nmero 17.
for n=0:10
tab(n+1)=17*n;
end
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
35
disp(tab)
2) Mostrar todos os nmeros pares de 0 a 100.
soma=0;
for n=0:2:100
soma=soma+n;
end
disp(soma)
3) Calcular o fatorial de um nmero n.
n=input(Digite um valor para calcular o fatorial: ) ;
fatorial=1;
for a=1:n
fatorial=fatorial*a;
end
disp(fatorial)
4.2. LAO WHILE
Ao contrrio do Lao For, que executa um grupo de comandos um nmero fixo de vezes, o lao
while executa um grupo de comandos um nmero indefinido de vezes.
A estrutura geral :
while expresso
comandos
end
Os comandos entre as instrues while e end so executados enquanto todos os elementos de
expresso forem verdadeiros.
Exemplos:
1) Calcular o fatorial de um nmero qualquer.
%Fatorial com While
x=input('Digite um valor: ');
fat=1;
while x>0
fat=fat*x;
x=x-1;
end
disp(fat)
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
36
2) Calcule a seguinte srie com 50 termos:
....
2
7
2
5
2
3
2
1
+ + + + = x
%Clculo da Srie
n=0;
x=1;
serie=0;
while n<50
serie=serie+x/2;
x=x+2;
n=n+1;
end
disp(serie)
1250
No lao while apenas a condio testada. Por exemplo, na expresso:
a = l; b = 15;
while a<b,
clc
a = a+l
b = b-l
pause(l)
end
disp(fim do loop)
a condio a<b testada. Se ela for verdadeira o corpo do lao, ser executado.
Ento a condio testada novamente, e se verdadeira o corpo ser executado novamente.
Quando o teste se tornar falso o lao terminar, e a execuo continuar no comando que segue o
lao aps o end.
4.3. ESTRUTURA IF-ELSE-END
Em diversas situaes, as seqncias de comandos tm de ser executadas condicionalmente, com
base em um teste relacional. Essa lgica implementada por meio de uma das diversas formas da
estrutura if-else-end. A mais simples :
if expresso
comandos
end
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
37
Os comandos entre as instrues if e end so executados se todos os elementos na expresso
forem Verdadeiros.
Exemplo:
Calcular o desconto de 20% para um nmero de cadeiras maior que 5. Sendo que o custo de cada
cadeira de R$55,00.
cadeiras=input('digite o numero de cadeiras desejadas: ');
preco=55;
custo=cadeiras*preco;
if cadeiras>5
custo=(1-20/100)*custo;
end
disp(custo)

Outra forma de usar a estrutura :
if expresso
comandos executados se Verdadeiro
else
comandos executados se Falso
end
Exemplos:
1) Dado qualquer distncia que um veculo deve percorrer (valor real em km), a capacidade do
tanque de combustvel (valor real em l) e a mdia de consumo de combustvel do veculo (valor
real em km/l). Supondo que o tanque estar cheio na partida, mostrar umas das mensagens:
DEVE HAVER REABASTECIMENTO
OU
NO DEVE HAVER REABASTECIMENTO
% DISTNCIA
%
d=input('Digite a distncia a ser percorrida: ');
mc=15; %media de consumo
ct=45; %capacidade do tanque
if mc*ct>=d
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
38
disp('No deve haver reabastecimento')
else
disp('Deve haver reabastecimento')
end
testar para 780km e 600km
15*45=675km
2) Os funcionrios contratados pela prefeitura de uma cidade so classificados em 3 (trs) nveis
conforme a pontuao obtida em 2 (duas) provas aplicadas de acordo com o seguinte critrio:
Nvel Pontuao
A Superior a 8 em pelo menos uma das provas ou soma dos pontos superior a 14.
B Superior a 6 em pelo menos uma das provas ou soma dos pontos superior a 9.
C Nenhum dos casos acima.
Em cada prova a pontuao um valor real de 0 a 10. Desenvolva um programa que receba 2
(duas) notas de um funcionrio e mostre como resposta o nvel em que est classificado.
%Classificao de Funcionrios
nota1=input('Digite a primeira nota: ');
nota2=input('Digite a segunda nota: ');
if nota1>=8 | nota2>=8 | (nota1+nota2)>=14
disp('aluno nvel A')
elseif nota1>=6 | nota2>=6 | (nota1+nota2)>=9
disp('aluno nvel B')
else
disp('aluno nivel C')
end
4.4. ESTRUTURA SWITCH-CASE
Essa estrutura funciona como uma chave seletora, escolhendo a expresso correta para
executar os comandos.
Estrutura geral
switch expresso
case teste_expresso1
comandos 1
case {teste_expresso2, teste_expresso3, teste_expresso4}
comandos 2
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
39
otherwise
comandos 3
end
A expresso pode ser um escalar ou string de caracteres. Quando expresso um escalar o
comando case testa se expresso == teste_expresso e quando um string o teste efetuado pelo
comando strcmp que compara duas strings e retorna 1 se so iguais e o caso contrrio.
Exemplos:
1) Converso de unidades:
%Converso de unidades
%
x=input('Entre com o valor numrico: ');
unidades=input('Digite a unidade desejada: ');
switch unidades
case{'polegadas','pol'}
y=x/2.54;
disp([num2str(y) 'pol'])
case{'pes', 'p'}
y=x/(2.54*12);
disp([num2str(y) 'pes'])
case{'metros','m'}
y=x/100;
disp([num2str(y) 'm'])
case{'centimetros','cm'}
y=x;
disp([num2str(y) 'cm'])
otherwise
disp(['Unidade Desconhecida: ' unidades])
end

2) Faa um programa que o usurio possa digitar qualquer ms do ano e como resultado seja
mostrado o nmero de dias do ms correspondente.

%Programa para saber quantos dias tem o mes
%
mes=input('digite o mes desejado: ');
switch mes
case {'Janeiro','Marco','Maio','Julho','Agosto','Outubro','Dezembro'}
disp('31 dias')
case {'Fevereiro'}
disp('28 ou 29 dias')
case {'Abril','Junho','Setembro','Novembro'}
disp('30 dias')
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
40
otherwise
disp('Esse mes nao existe')
end

Nesse caso em especial a varivel ms uma string, portanto a entrada de dados deve ser tambm
uma string para que haja comparao em cada caso. Pode-se usar ao invs de uma string
simplesmente um escalar, s nomear cada varivel ms como um escalar.

%Programa para saber quantos dias tem o mes
%
janeiro='Janeiro';
marco='Marco';
fevereiro='Fevereiro';
abril='Abril';
maio='Maio';
junho='Junho';
julho='Julho';
agosto='Agosto';
setembro='Setembro';
novembro='Novembro';
dezembro='Dezembro';
mes=input('digite o mes desejado: ');
switch mes
case {'Janeiro','Marco','Maio','Julho','Agosto','Outubro','Dezembro'}
disp('31 dias')
case {'Fevereiro'}
disp('28 ou 29 dias')
case {'Abril','Junho','Setembro','Novembro'}
disp('30 dias')
otherwise
disp('Esse mes nao existe')
end

3) Outro exemplo seria entrar com um nmero de 1 a 12 e o programa lhe fornecer o ms
correspondente.
%Programa para saber quantos dias tem o mes
mes=input('digite o mes desejado em numero: ');
switch mes
case 1
disp('Janeiro')
case 2
disp('Fevereiro')
case 3
disp('Marco')
case 4
disp('Abril')
case 5
disp('Maio')
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
41
case 6
disp('Junho')
case 7
disp('Julho')
case 8
disp('Agosto')
case 9
disp('Setembro')
case 10
disp('Outubro')
case 11
disp('Novembro')
case 12
disp('Dezembro')
otherwise
disp('Esse mes nao existe')
end
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
42
5. ARQUIVOS M DE FUNES

um programa elaborado como arquivo.m e que calcula algo desejado pelo programador,
devolvendo somente o valor da resposta. Os comandos executados por esse programa ficam
ocultos. Voc s visualiza o que entra e o que sai, ou seja, uma funo uma caixa preta.






5.1. PORQUE USAR FUNES?

So necessrias quando existe uma seqncia de comandos que so sempre teis para serem
calculados ou mesmo funes matemticas.

Exemplo de uma funo do prprio Matlab:

flipud => inverte as linhas de uma matriz

=
1 0 3
1 2 1
0 2 1
X flipud(X)=

0 2 1
1 2 1
1 0 3


5.2. PRINCIPAL DIFERENA ENTRE ARQUIVO.M DE FUNES E ARQUIVO.M DE COMANDOS:

A principal diferena que o arquivo.m de funo se comunica com o Matlab apenas por meio
das variveis de entrada e sada que ela cria. As variveis intermedirias definidas internamente
pela funo no aparecem nem interage com o espao de trabalho do Matlab.

5.3. COMO ESCREVER UMA FUNO

Linha 1 indica que o arquivo M contm uma funo e especifica seu nome (que vem a ser o
nome do arquivo sem a extenso .m) . Essa linha tambm define as variveis de entrada e sada.

Prximas Linhas So comentrios (texto) explicando o que essa funo calcula.

5.4. REGRAS E PROPRIEDADES

1) O nome da funo tem que ser idntico ao nome do arquivo. Por exemplo, a funo flipud
armazena em um arquivo denominado flipud.m.
2) Cada funo possui seu prprio espao de trabalho, separada do espao de trabalho do
Matlab. A nica ligao em relao as variveis de entrada e sada da funo.
3) Pode-se verificar se a quantidade de argumentos de entrada e sada de uma funo est
correta atravs da varivel nargin e nargout, so variveis dentro do espao de trabalho
das funes. So usadas para atribuir valores pr-definidos variveis de entrada e
determinar que variveis de sada o usurio deseja.
Entrada
Clculo
Sada
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
43
Por exemplo, a funo linspace.
Se os argumentos de entrada for igual a 2 ele usa nmeros de pontos igual a 100 como
padro.
Os arquivos m de funes podem conter mais funes dentro deles, ou seja, uma funo dentro
de outra funo.

Exemplos:

1) Calcular o fatorial de um nmero usando funo:
% Calculo do Fatorial de um numero
g=input('digite um numero: ');
f=fatorial(g);
disp(['Este eh o resultado: ' num2str(f)])

function fat=fatorial(x)
%Calcula o fatorial
fat=1;
for n=1:x
fat=fat*n;
end

2) Calcular as razes de uma equao de segundo grau:

%Calcula as raizes de uma equacao de segundo grau.
%
g=input('entre com 1 numero: ');
h=input('entre com 2 numero: ');
i=input('entre com 3 numero: ');
[r1,r2,t]=baskara(g,h,i)


function [x1,x2,m]=baskara(a,b,c)
delta=b^2-4*a*c;
x1=(-b+sqrt(delta))/2*a;
x2=(-b-sqrt(delta))/2*a;
if delta>0
m='raizes distintas e reais';
elseif delta==0
m='raizes reais e iguais';
else
m='raizes complexas';
end






Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
44
3) Colocar trs nmeros quaisquer em ordem crescente:

%Coloca em ordem crescente tres numeros quaisquer
%
x=input('numero 1: ');
y=input('numero 2: ');
w=input('numero 3: ');
[a1,a2,a3]=ordem(x,y,w)

function [a,b,c]=ordem(a,b,c)
if a>b
temp=a;
a=b;
b=temp;
end
if b>c
temp=b;
b=c;
c=temp;
end
if a>b
temp=a;
a=b;
b=temp;
end


4) Colocar trs nmeros quaisquer em ordem crescente, mas usando duas funes (funo de
funo):

%Programa principal
%Ler trs nmeros e coloc-los em ordem crescente usando funo de funo:
%
g=input(entre com o primeiro numero: );
h= input(entre com o segundo numero: );
i= input(entre com o terceiro numero: );
[a1,a2,a3]=ordem2(g,h,i);
a1
a2
a3

%Funo 1
%inverte os valores colocando em ordem crescente
[a,b]=troca(a,b);
[b,c]=troca(b,c);
[a,b]=troca(a,b);


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
45
%Funo 2
%realiza a troca dos valores
if x>y
temp=x;
x=y;
y=temp;
end
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
46

6. ANLISE NUMRICA

Nos casos em que dificil integrar, derivar ou determinar analticamente algum valor especfico
de uma funo, o computador pode ser utilizado para aproximar de uma forma numrica a
soluo desejada. Essa rea da cincia da computao e da matemtica conhecida como anlise
numrica e claro que o MATLAB possui ferramentas para resolver esses problemas.

6.1. OTIMIZAO

fminbnd = retorna a coordenada X do valor mnimo de uma funo de uma varivel F(X) em um
intervalo fixo.

Exemplo:
Achar o valor mnimo da funo f(x)=x
2
-x+cos(x) implementada em func01.m:
No intervalo [0:pi]
No intervalo [2:3]
func01.m: y=func01(x)= x
2
-x+cos(x)

function y=func01(x)
%funcao para integrar
y=x.^2-x+cos(x);

>> xm1=fminbnd('func01',0,pi)

xm1 =

0.8879

>> xm2=fminbnd('func01',2,3)

xm2 =

2.0001

>> x=0:0.1:pi;
>> plot(x,func01(x),xm1,func01(xm1),'r*',xm2,func01(xm2),'go')

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
47



fzero = retorna coordenada X, tal que F(X)=0. Inicia busca a partir de um valor inicial, X0,
fornecido.

Exemplo:
Achar o f(x)=0 da funo f(x)=x
3
-2x+1 implementada em func02.m:
Comeando a busca com 1.5
Comeando a busca com 0.
>> xz1=fzero('func02',-1.5) % f(xz1)=0 , a partir de -1.5

xz1 =

-1.6180

>> xz2=fzero('func02',0) %f(xz2)=0, a partir de 0

xz2 =

0.6180

>> x=-2:0.1:2;
>> plot(x,func02(x),xz1,func02(xz1),'r*',xz2,func02(xz2),'go')

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
48


6.2. INTEGRAO NUMRICA
Os dois comandos do MATLAB para integrao usando quadratura so:
quad Calcular integral numrica, mtodo de ordem baixa.
quadl Calcular integral numrica, mtodo de ordem alta.

Exemplo: integral de func01.mentre 2 e 1 (rea abaixo da curva).

>> q=quad('func01',-2,1)

q =

6.2508
>> q1=quadl('func01',-2,1)

q1 =

6.2508

>> x=-3:0.1:3;
>> xt=-2:0.2:1;
>> yt=func01(xt);
>> plot(x,func01(x))
>> hold on
>> area(xt,yt)
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
49


6.3. SOLUO DE EQUAES DIFERENCIAIS
As funes do Matlab usadas para resolver equaes diferenciais so:
ode45: solver de equaes diferenciais non-stiff de ordem mdia
ode23: solver de equaes diferenciais non-stiff de ordem baixa
ode113: solver de equaes diferenciais non-stiff de ordem varivel
ode23t: solver de equaes diferenciais de ordem baixa (regra trapezoidal)
ode15s: solver de equaes diferenciais stiff de ordem varivel
ode23s: solver de equaes diferenciais stiff de ordem baixa
ode23tb: solver de equaes diferenciais stiff de ordem baixa

sintaxe: [t,y]=ode45(funcao,[Tinicial Tfinal], CondIniciais);

Exemplo:
function yt=func04 (t,y)
%func04 (t,y) retorna as derivadas de estado da equa~ao
% x''-log(x)*x'+sin(x)=0
%considere:
%y(1)=x
%y(2)=x'
%desta forma, teremos:
%y(1)'=y(2)
%y(2)'=log(y(1))*y(2)-sin(y(1))
yt=[y(2) log(y(1))*y(2)-sin(y(1))]'; %vetor coluna

>> Tinicial=0;
>> Tfinal=5;
>> Yinicial=[1,0];
>> [t,y]=ode45('func04',[Tinicial Tfinal],Yinicial);
>> plot(t,y(:,1),'r',t,y(:,2))
Warning: Imaginary parts of complex X and/or Y arguments ignored.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
50
Warning: Imaginary parts of complex X and/or Y arguments ignored.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
51

7. POLINMIOS

7.1 RAZES

Encontrar razes de um polinmio, isto , os valores para os quais o polinmio igual a zero. No
MATLAB, um polinmio representado por um vetor linha contendo seus coeficientes em
ordem decrescente. Por exemplo: 116 25 0 12
2 3 4
+ + + x x x x introduzido como:

>> p=[1 12 0 25 116]
p=
1 12 0 25 116

Dada essa forma, as razes do polinmio so encontradas usando-se a funo roots:

>>r= roots(p)
r=
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i

O MATLAB adota como conveno de colocar os polinmios como vetores linha e as razes
como vetores coluna.
Dadas as razes tambm possvel construir o polinmio associado, a funo que executa isso a
poly como exemplo:


pp=poly(r)

pp =

1.0000 -12.0000 -0.0000 25.0000 116.0000

7.2. MULTIPLICAO

A multiplicao polinomial efetuada por meio da funo conv(que faz a convoluo entre dois
vetores). Consideremos o produto de dois polinmios 4 3 2 ) (
2 3
+ + + = x x x x a e
16 9 4 ) (
2 3
+ + + = x x x x b :

>> a=[1 2 3 4]; b=[1 4 9 16];
>>c=conv(a,b)
c=
1 6 20 50 75 84 64



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
52
7.3.ADIO

O MATLAB possui uma funo direta para somar polinmios:

>>d=a+b

Quando dois polinmios forem de ordens diferentes, aquele que tiver menor ordem ter de ser
preenchido com coeficientes iguais a zero, a fim de torn-lo da mesma ordem do polinmio de
ordem mais alta.

Exemplo:

>> e= c+[0 0 0 d]
e=
1 6 20 52 81 96 84

7.4. DIVISO

A funo usada no MATLAB a deconv:

>>[q,r]=deconv(c,b)

q=
1 2 3 4
r= 0 0 0 0 0 0 0

7.5 . CLCULO DE POLINMIOS

>>x=linspace(-1,3);
escolhe 100 pontos entre 1 e 3.
>>p=[1 4 -7 -10];
define o polinmio p(x)=x
3
+4x
2
-7x-10
>>v=polyval(p,x)
calcula p(x) nos valores armazenados em x e armazena o resultado em v. O resultado pode ser
representado graficamente usando-se:
>>plot(x,v)


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
53

7.6 . DERIVADA DE POLINMIOS

polyder = derivada do polinmio

Exemplo: Calcular a derivada de: 4 x 3 x x 2 x 2 x 4 ) x ( 5 P
2 3 4 5
+ + + + + =
>>p5=[4 2 2 1 3 4];
>>p5d=polyder(p5)
p5d=
20 8 6 2 3

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
54
8. GRFICOS
A construo de grficos no MATLAB mais uma das facilidades do sistema. Atravs de
comandos simples pode-se obter grficos bidimensionais ou tridimensionais com qualquer tipo
de escala e coordenada. Existe no MATLAB uma vasta biblioteca de comandos grficos.
8.1. GRFICOS BIDIMENSIONAIS
Estes so os comandos para plotar grficos bidimensionais:
Grficos 2d
plot Plotar linear.
loglog Plotar em escala loglog.
semilogx Plotar em semilog.
semilogy Plotar em semilog.
polar Plotar em coordenada polar.
plotyy
Plotar duas curvas no mesmo grfico
com escalas y diferentes
Grficos 2d especiais
rea Grfico de rea
bar Grfico de barras.
barh Grfico de barras horizontal
pie Grfico de pizza
stairs Grfico escada
scatter
Grfico discreto que indica pontos com
marcadores
stem
Grfico discreto que indica pontos com
hastes
comet
Gera grfico com exibio de trajetria
animada
compass Grficos de vetores
feather Grficos de vetores
Ezplot Grficos a partir de equaes de funes
ezpolar Grficos a partir de equaes de funes
errorbar Plotar erro
hist Plotar histograma.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
55
rose Plotar histograma em ngulo.
fplot Plotar funo.
plotmatrix Mapeia o grafico da matriz
Se Y um vetor, plot(Y) produz um grfico linear dos elementos de Y versos o ndice dos
elementos de Y.
Por exemplo, para plotar os nmeros [0.0 0.48 0.84 1.0 0.91 0.6 0.14], entre com o vetor e
execute o comando plot:
>>Y =[0 0.48 0.84 1.0 0.91 0.6 0.14];
>>plot(Y)
e o resultado mostrado na Janela Grfica:

Se X e Y so vetores com dimenses iguais, o comando plot(X,Y) produz um grfico
bidimensional dos elementos de X versos os elementos de Y, por exemplo
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)
resulta em:

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
56
No MATLAB tambm possvel plotar mltiplas linhas em apenas um grfico. Existem duas
maneiras, a primeira usando apenas dois argumentos, como em plot(X,Y), onde X e/ou Y so
matrizes. Assim:
Se Y uma matriz e X um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas de
Y versos o vetor X.
Se X uma matriz e Y um vetor, plot(X,Y) plota sucessivamente as linhas ou colunas
de X versos o vetor Y.
Se X e Y so matrizes com mesma dimenso, plot(X,Y) plota sucessivamente as colunas
de X versos as colunas de Y.
Se Y uma matriz, plot(Y) plota sucessivamente as colunas de Y versos o ndice de cada
elemento da linha de Y.
A segunda, e mais fcil, maneira de plotar grficos com mltiplas linhas usando o comando
plot com mltiplos argumentos. Por exemplo:
>> plot(t, sin(t), t, cos(t), t, sin(t + pi), t, cos(t + pi))

8.2. ESTILOS DE LINHA E SMBOLO
Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser controlados se os
padres no so satisfatrios. Por exemplo,
>> X = 0:0.05:1;
>> subplot(l,2,l)
>> plot(X,X.^2,k*)
>> subplot(l,2,2)
>> plot(X,X.^2,k --)
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
57

Outros tipos de linhas, pontos e cores tambm podem ser usados:
TIPO DE LINHA
Solid _______________
-- --------------------
-. -.-.-.-.-.-.-.-.-.-.-.-.
: ..............................
Marcador
. .......................
* * * * * * * * *

+ ++++++++++
X xx x x x x x x
S quadrado
D losango
V Tringulo para baixo
^ Tringulo para cima
< Tringulo para esquerda
> Tringulo para direita
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
58
P Pentagrama
H hexagrama
CORES
Y amarelo
M lils
C azul claro
R vermelho
G verde
B azul escuro
W branco
K preto

Comando subplot = Gera vrios eixos em uma mesma janela.

Sintaxe:
subplot(m,n,p)
Parmetros de entrada:
m= nmero de eixos na vertical (nmero de linhas).
n=Nmero de eixos na horizontal (nmero de colunas).
p=ndice do eixo corrente

As funes de plotagem so executadas no eixo corrente configurado pelos parmetros indicados
na ltima chamada subplot.

Exemplo: subplot(2,3,1)=duas linhas e trs colunas, total de 6 grficos.
>> x=0:0.01:pi;
>> subplot(2,3,1)
>> plot(x,sin(x))
>> subplot(2,3,2)
>> plot(x,cos(x)/10)
>> subplot(2,3,3)
>> plot(x,2.^x)
>> subplot(2,3,4)
>> plot(x,sin(2*x).*x)
>> subplot(2,3,5)
>> plot(x,cos(2*x))
>> subplot(2,3,6)
>> plot(x,cos(4*x))
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
59

8.3. NMEROS COMPLEXOS
Quando os argumentos para plotar so complexos, a parte imaginria ignorada, exceto quando
dado simplesmente um argumento complexo. Para este caso especial plotada a parte real versos
a parte imaginria. Ento, plot(Z), quando Z um vetor complexo, equivalente a
plot(real(Z),imag(Z)).
Exemplo:
>> c=0:0.1:100;
>> A=1-2i;
>> D=c*A;
>> plot(D)

8.4. ESCALA LOGARTMICA, COORDENADA POLAR E GRFICO DE BARRAS
O uso de loglog, semilogx, semilogy e polar idntico ao uso de plot. Estes comandos so
usados para plotar grficos em diferentes coordenadas e escalas:
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
60
polar(theta,r,fmt) plota em coordenadas polares o ngulo theta, em radianos, r que a
variao radial linear, e fmt a cadeia de caracteres contendo a descrio do tipo de curva
a ser traado (como o plot);
loglog plota x e y com eixos logartmicos ;
semilogx plota o eixo x logartmico e y linear;
semilogy plota o eixo y logartmico e x linear.
Exemplos:
>> theta=-2*pi:0.1:2*pi;
>> whos
Name Size Bytes Class

A 1x1 16 double array (complex)
D 1x1001 16016 double array (complex)
Y 1x7 56 double array
ans 1x2 16 double array
b 1x16 128 double array
c 1x1001 8008 double array
t 1x26 208 double array
theta 1x126 1008 double array
x 1x315 2520 double array
y 1x26 208 double array

Grand total is 2521 elements using 28184 bytes

>> rho=1:126;
>> polar(theta,rho,'r*')


>> x=-2.9:0.2:2.9;
>> y=exp(-x.*x);
>> subplot(2,2,1)
>> bar(x,y)
>> title('Grafico de barras de uma curva em forma de sino');
>> subplot(2,2,2)
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
61
>> bar3(x,y)
>> title('Grafico de barras 3-D de uma curva em forma de sino');
>> subplot(2,2,3)
>> stairs(x,y)
>> title('Grafico em escada de uma curva em forma de sino');
>> subplot(2,2,4)
>> barh(x,y)
>> title('Grafico de barras horizontal');

8.5. PLOTANDO GRFICOS TRIDIMENSIONAIS E CONTORNOS
O MATLAB possui muitos recursos para visualizao de dados em 3D. Este item representa as
principais funes relacionadas a este tpico.
Estes so alguns comandos para plotar grficos tridimensionais e contornos.
Plot3 Cria uma curva no espao 3D.
meshgrid Gera uma superfcie.
mesh
surf
Gera malha de superfcie a partir da coordenadas
geradas pela funo meshgrid.

meshc
meshz
waterfall
Geram variaes de grficos de malhas e superfcies.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
62
surfc
cylinder Gera cilindro.
sphere Gera esfera.
Ellipsoid Cria uma elipside.
Funes Grficas 3-d Especiais
Bar3 Grfico de barra 3D vertical
Bar3h Grfico de barra 3D horizontal
Pie3 Grfico de pizza 3D
comet3 Grfico com exibio de trajetria 3D animada
Ribbon Grfico tipo faixa com formato dado por plot(x,y)
contour
contourf
contour3
Grficos de curvas de nvel.
Ezplot3
Gera grfico 3D a partir de equaes paramtricas x(t)
y(t) e z(t)
Ezcontour
Ezcontourf
Ezmesh
Ezmeshc
Ezplot3
ezsurf
Geram grficos a partir de equaes de funes.
Aplicaes de alguns comandos:
>> x=-4*pi:0.1:4*pi;
>> y=-4*pi:0.1:4*pi;
>> plot3(cos(x),sin(y),(x+y))

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
63

> >x=-pi:0.5:pi;
>> y=-pi:0.5:pi;
>> [Mx,My]=meshgrid(x,y);
>> Mz=cos(Mx).*sin(My);
>> mesh(Mx,My,Mz)
>> surf(Mx,My,Mz)

8.6. ANOTAES NO GRFICO
O MATLAB possui comandos de fcil utilizao para adicionar informaes em um grfico:
title Ttulo do grfico.
xlabel Ttulo do eixo-X.
ylabel Ttulo do eixo-Y.
zlabel Ttulo do eixo-Z.
text Inserir anotao no grfico.
Grid Linhas de grade.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
64
Por exemplo:
>> fplot(sin, [-pi pi])
>> title(Grfico da funo f(x)=seno(x), -pi<x<pi)
>> xlabel(x)
>> ylabel(f(x))
>> grid


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
65
9. SIMULINK

9.1.Apresentao

SIMULINK um programa utilizado para modelagem, simulao e anlise de sistemas
dinmicos. O programa se aplica a sistemas lineares e no lineares, contnuos e/ou discretos no
tempo. Utiliza uma interface grfica com o usurio para construo dos modelos a partir de
diagramas em blocos, atravs de operaes de clique-e-arraste do mouse. Com esta interface
podem-se criar modelos da mesma forma que se faz com papel e caneta. SIMULINK o
resultado de uma longa evoluo de pacotes de simulao anteriores que necessitavam a
formulao de equaes diferenciais ou de equaes de diferenas em linguagens de
programao. Inclui bibliotecas de blocos contendo fontes, visualizadores, componentes lineares,
no lineares e conectores, com a opo de criao ou personalizao de blocos.
Aps a definio do modelo, a simulao pode ser feita com diferentes algoritmos de resoluo,
escolhidos a partir dos menus do SIMULINK ou da linha de comando do MATLAB. Os menus
so particularmente convenientes para o trabalho interativo, enquanto a linha de comando tem
sua utilidade na simulao repetitiva a qual se deseja somente mudar parmetros. Usando
osciloscpios (Scopes) ou outros visualizadores, tm-se o resultado grfico da simulao
enquanto esta est sendo executada. Os resultados da simulao podem ser exportados para o
MATLAB para futuro processamento ou visualizao. As ferramentas de anlise de modelos
incluem ferramentas de linearizao e ajuste (Trimming) que podem ser acessadas a partir da
linha de comando do MATLAB, assim como vrias ferramentas do MATLAB e suas
TOOLBOXES especficas. Sendo o MATLAB e o SIMULINK integrados, pode-se simular,
analisar e revisar os modelos em qualquer dos dois ambientes.

9.2. CONHECENDO E ACESSANDO O SIMULINK

Para acessar o SIMULINK deve-se primeiro abrir o MATLAB, pois apesar de ser uma aplicao
especfica, este no trabalha independente e utiliza suas ferramentas de clculo.
Deve-se clicar duas vezes no cone do MATLAB. Aberto o programa deve-se ento clicar no
cone Simulink na barra de ferramentas do MATLAB ou digitar simulink na linha de
comando e pressionar enter logo em seguida, como mostrado a seguir:

>> simulink <enter>
ou
clique no cone na barra de ferramentas.

9.3.CONSTRUINDO UM MODELO SIMPLES

Exemplificando a utilizao do SIMULINK, temos um modelo a criar. Este deve resolver a
equao diferencial:
) t sen( x = &
onde x(0)=0

Sendo o SIMULINK uma extenso do MATLAB, este deve ento ser carregado a partir do
MATLAB. Inicie o SIMULINK clicando no seu cone na barra de ferramentas do MATLAB,
como mostrado na figura:
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
66


Uma janela se abrir na tela. Essa janela a biblioteca de blocos do SIMULINK mostrado na
figura. Para criar um modelo novo, clique no cone documento em branco.

D um click no cone Sources na janela de bibliotecas do SIMULINK.



Arraste o bloco de onda senoidal (Sine Wave) para a janela do modelo. Uma cpia deste bloco
deve ser criada nesta janela.

Abra a biblioteca de blocos lineares (contnuo) e arraste um bloco integrador (Integrator) para a
janela do modelo.

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
67
Abra a biblioteca de dispositivos de sada (Sinks) e arraste um SCOPE para a janela do modelo
em construo.

A seguir, conecte os blocos para completar o modelo como na figura a seguir:


D um duplo click no bloco SCOPE e na barra de menu do SIMULINK clique
SIMULATION:START. A simulao ser executada, resultando no grfico gerado no bloco
SCOPE, mostrado a seguir:

Obs.: A integral definida entre to e tF.
Para to = 0, cos(t)=1.


Para verificar se o grfico gerado representa a soluo da equao diferencial desejada, deve-se
resolver a mesma analiticamente, cujo resultado :

) t cos( 1 ) t ( x =

que corresponde ao grfico apresentado.

9.4.OUTRO MODELO

O modelo anterior serviu como exemplo de implementao no SIMULINK, mas est longe de
representar um caso usual de utilizao do software devido pequena quantidade de blocos e
ligaes. Agora ser usado um modelo de um processo biolgico para ilustrar vrios nveis
adicionais de dificuldade na implementao.




Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
68



Scheinerman descreveu um modelo simples do crescimento de bactrias isoladas do ambiente
externo num pote. Admite-se que as bactrias nascem numa taxa proporcional ao nmero de
bactrias presentes e que elas morrem a uma taxa proporcional ao quadrado do nmero de
bactrias presentes. Se x representa o nmero de bactrias presentes, a taxa em que as bactrias
nascem definida por:

Taxa de Natalidade = bx

E a taxa em que elas morrem

Taxa de Mortalidade =
2
px

A taxa total de mudana na populao de bactrias a diferena entre a natalidade e a
mortalidade de bactrias. O sistema pode ser ento descrito pela equao diferencial a seguir:

2
px bx x = &

Partindo disto ser ento construdo o modelo do sistema dinmico supondo que b=1
bactria/hora e p=0,5 bactria/hora. Ser determinado o nmero de bactrias contidas no pote
aps 1 hora, admitindo que inicialmente existiam 100 bactrias presentes.
Crie uma nova janela de modelo na barra de menu clicando novamente no cone documento em
branco.
Este um sistema de 1a ordem, o que quer dizer que requer somente um integrador para resolver
a equao diferencial. A entrada do integrador x& e a sada x. Abra o biblioteca linear
(contnuo) e arraste o integrador para a janela do modelo.
Ainda na biblioteca Math arraste dois blocos de ganhos (Gain) para a janela do modelo e
posicione-os como na figura. O SIMULINK exige que cada bloco tenha seu nome nico. Devido
a isto, o segundo bloco de ganho ser nomeado GAIN1.
Arraste ainda um bloco de soma (Sum) .



Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
69
Abra agora a biblioteca de blocos no lineares (Nonlinear) e arraste um bloco de produto
(product) para a posio mostrada. Este bloco ser utilizado para calcular o valor de
2
x .
Abra a seguir a biblioteca dispositivo de sada (Sinks) e arraste um bloco SCOPE para a janela do
modelo seguindo a posio mostrada.


A orientao padro do SIMULINK de todos os blocos posicionar entradas esquerda e sadas
direita. Porm este modelo ser muito mais legvel se invertermos os blocos de ganho e
produto. Iniciando com o Produto, deve-se primeiro clicar sobre ele de modo a selecion-lo.
Pequenos quadros pretos aparecero nas quinas do bloco indicando seleo. No menu do
SIMULINK, escolha FORMAT:FLIP BLOCK. Agora as entradas esto direita e as sadas
esquerda. Repita a operao de inverso para cada bloco de Ganho. O modelo agora deve estar
semelhante figura:

Trace agora uma linha de sinal da sada do bloco de soma para a entrada do integrador e outra da
sada do integrador para a entrada do SCOPE.


A seguir necessrio conectar a linha que liga o integrador ao SCOPE ao bloco de ganho situado
na parte inferior da janela, pois esta linha contm o valor de x. Para faz-lo, v com o mouse na
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
70
sada do bloco desejado e continue segurando o mouse at a entrada do bloco desejado. O cursor
do mouse ir mudar para uma cruz. Conserve a tecla do mouse pressionada enquanto faz a
ligao. Leve a linha at a entrada do bloco de ganho. O SIMULINK automaticamente ajusta a
linha com um ngulo de 90
o
.
Repita a operao ligando a linha de sinal Integrator-SCOPE at a entrada superior do bloco de
produto. Da linha de sinal que liga a entrada superior do bloco de produto repita a operao de
ligao para a entrada inferior do mesmo bloco, de modo que o bloco execute a operao
2
x x . x = . Conecte agora a sada do bloco de produto entrada do ganho na parte superior da
janela de modelo. Conecte agora a sada do ganho superior entrada superior do bloco de soma e
a sada do ganho inferior entrada inferior do mesmo bloco de soma.



O modelo agora est completo, mas os blocos devem ser configurados (parametrizados) para que
este represente o sistema desejado. O SIMULINK tem como default para os blocos de ganho o
valor de 1.0, para o bloco de soma duas entradas positivas e para o integrador o valor inicial 0.0.
O valor inicial do integrador representa o nmero inicial de bactrias presentes no pote.
Ser iniciada agora a parametrizao com os blocos de ganho. D um duplo clique no ganho da
parte superior e mude o valor de 1.0 para 0.5 na caixa de dilogo que ir aparecer, a seguir clique
em Close. Note que o valor do ganho do bloco muda para 0.5 no diagrama em blocos.



Agora d um duplo clique no bloco de soma e no campo List of signs mude de ++ para -+ na
caixa de dilogo que abrir. Os sinais representam os prprios sinais de entrada no bloco. A
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
71
seguir clique em Close. Note agora que no bloco de soma o sinal superior negativo e o inferior
positivo, sendo ento a sada a diferena das entradas que representa x& de acordo com a
equao diferencial aps substituir os valores de p e b.


Para finalizar a configurao, deve-se definir o nmero inicial de bactrias. Para isto, d um
duplo clique no integrador e no campo Initial condition mude para 100, e aps clique Close.


A durao da simulao definida no tempo default de 0 a 10. Neste caso, deseja-se saber o
resultado aps 1 hora. Para mudar este tempo, seleciona-se na barra de menu a opo
Simulation:Parameters e no campo Stop Time digita-se 1, fechando em Close logo a seguir.
sempre aconselhvel salvar o modelo antes de executar a simulao.


Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
72

O modelo agora est completo e pronto para ser executado. Para salvar na barra de menu clique
em File:Save e entre com o nome desejado. O modelo ser salvo com o nome digitado e a
extenso.mdl, e seu nome aparecer na barra de ttulo da janela de edio.
Abra agora o SCOPE com um duplo clique e a seguir na barra de menu, clique em
Simulation:Start para iniciar a execuo.

O SCOPE nem sempre mostra a figura numa boa escala para visualizao. O boto Autoscale na
barra de ferramentas do SCOPE redimensiona a escala para acomodar todos os valores.

9.5.USANDO O HELP DO SIMULINK

O SIMULINK possui um extensivo sistema de help on-line. Os arquivos de help foram
desenvolvidos para serem visualizados por navegadores internet como Netscape ou Internet
Explorer. Uma detalhada documentao on-line para todos os blocos do SIMULINK est
disponvel no Block-Browser. Um detalhado help tambm est disponvel clicando no boto de
help na caixa de dilogo que se abre quando se seleciona Simulantion:Parameters na barra de
menu.
Para se consultar o help sobre um bloco qualquer deve-se inicialmente dar um clique duplo sobre
o bloco desejado. A seguir clica-se no boto de help que aparece na caixa de dilogo que se abre.


O help do SIMULINK contm informaes valiosas. boa prtica utiliz-lo com freqncia.
Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
73

10.REFERNCIAS BIBLIOGRFICAS
Hanselmam, D. , Littlefield, B. ; Verso do Estudante MATLAB 5 Gu
ia do Usurio, Makron Books, 1997.
Matsumoto, E. Y. ; MATLAB 6 Fundamentos de Programao , Editora rica, 2 edio,
2001.
The Student Edition of SIMULINK Dinamic System Simulation Software for Technical.
Matsumoto, E. Y. ; MATLAB 6.5 Fundamentos de Programao , Editora rica, 1 edio,
2002.

Universidade Presbiteriana Mackenzie Escola de Engenharia


Curso Introdutrio de MATLAB 6.5
74
11. ANEXOS
Universidade Presbiteriana Mackenzie Escola de Engenharia

Curso Introdutrio de MATLAB 6.5
76

Você também pode gostar