Você está na página 1de 29

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS

DEPARTAMENTO DE ENSINO SUPERIOR


DEPARTAMENTO ACADÊMICO DE ENGENHARIA ELÉTRICA

1 0

0
4 0
3 0 4 0
2 0 3 0
2 0
1 0 1 0
0 0

Introdução ao MATLAB

Prof. MSc. Eduardo Nunes Gonçalves

Agosto de 1997
Introdução ao MATLAB 1

1. Fundamentos Básicos do MATLAB

MATLAB é um programa iterativo desenvolvido para o processamento de


cálculos numéricos científicos e de engenharia. O nome MATLAB significa MATrix
LABoratory sendo uma marca registrada da The MathWorks
(http://www.mathworks.com).

Ao executar o MATLAB, é aberta uma janela para entrada de comandos, onde o


“prompt” é representado pelo símbolo: ». A medida que os comandos forem digitados, o
MATLAB os executará e apresentará os resultados. Os comando previamente executados
podem ser reaproveitados através das teclas ↑ e ↓.

Entrando com matrizes

O MATLAB trabalha essencialmente com um único tipo de objeto, as matrizes


retangulares, cujos elementos podem ser números reais ou complexos. Os comandos e
operadores do MATLAB são naturalmente do ponto de vista matricial.

As matrizes podem ser introduzidas no MATLAB por diferentes modos:

• como uma lista de elementos digitados como um comando,


• geradas por expressões e comandos internos do MATLAB,
• criadas em arquivos com extensão .M.
• carregadas a partir de arquivos externos

A maneira mais simples de entrar pequenas matrizes é utilizar uma lista explícita
de elementos. Em uma lista de elementos, os elementos aparecem entre colchetes
separados por espaços ou vírgula, sendo o ponto-e-vírgula utilizado para indicar o fim de
uma linha. As matrizes são criadas e dimensionadas automaticamente não sendo
necessário nenhuma declaração inicial de tipo ou dimensão. Por exemplo, digitando

» A = [1 2 3; 4 5 6; 7 8 9] ↵

resulta
A=
1 2 3
4 5 6
7 8 9

A matriz A é armazenada na memória para uso posterior.

Matrizes grandes podem ser separadas em várias linhas de entrada com a tecla ↵
substituindo os ponto-e-vírgulas:

»A=[123↵
456↵
7 8 9] ↵
Prof. Eduardo Nunes Gonçalves 2

Elementos de matrizes

As constantes numéricas podem assumir uma das formas mostradas a seguir:

6 -56 0.0005
5.3856091 2.3265E-12 8.00412e9

onde 2.3265E-12 significa 2.3265x10-12.

Além das constante, os elementos de matrizes podem ser expressões do MATLAB:

» x = [-2.5 sqrt(5) 2*(3+4+5)/6] ↵

resulta em

x = -2.5000 2.2361 4.0000

Os elementos das matrizes podem ser referenciados com índices entre parêntesis:

» x(6) = abs(x(1)) ↵

que produz

x = -2.5000 2.2361 4.0000 0 0 2.5000

Note que o tamanho do vetor x é redimensionado para acomodar o novo elemento, sendo
que os elementos indefinidos são considerados nulos.

Matrizes grandes podem ser construídas usando outras matrizes como elementos.
Por exemplo, para inserir uma nova linha na matriz A:

» B = [A; [10 11 12]] ↵

resulta em
B= 1 2 3
4 5 6
7 8 9
10 11 12
ou

» B = [A [10 11 12]’] ↵
resulta em
B= 1 2 3 10
4 5 6 11
7 8 9 12
Introdução ao MATLAB 3

Matrizes podem ser extraídas de outras matrizes:

» B = A(1:2,2:3) ↵

resulta

B= 2 3
5 6

(O uso do comando dois-pontos será detalhado mais adiante).

Expressões e Variáveis

As expressões digitadas no MATLAB são interpretadas e avaliadas após a tecla ↵.


As expressões no MATLAB são da forma:

variável = expressão

ou simplesmente

expressão

O resultado de uma expressão é uma matriz que é armazenada na memória para uso
futuro. Se o nome da variável e o sinal = são omitidos, então o resultado da expressão é
armazenado em uma variável chamada de ans que significa "answer". Por exemplo:

» 19/8 ↵

produz

ans = 2.3750

Finalizando a expressão com ponto-e-vírgula faz com que o MATLAB não


apresente o resultado da operação:

» 20/5; ↵

Para ver o valor de uma variável basta entrar com o seu nome:

» ans ↵

produz

ans = 4

O uso do ponto-e-vírgula é necessário em programas para aumentar a velocidade


de execução, principalmente em operações dentro de “loops”, eliminando a necessidade
da impressão de resultados que não serão utilizados.
Prof. Eduardo Nunes Gonçalves 4

Quando uma expressão não couber em uma única linha, pode-se usar três pontos
(separados de um número por um espaço) antes da tecla ↵ para indicar que a expressão
prossegue na próxima linha:

» s = 1 - 1/2 + 1/3 - 1/4 + ... ↵


1/5 - 1/6 + 1/7 - 1/8 ↵

Os nomes das variáveis e funções são formados por uma letra seguida de qualquer
numero de letras e dígitos (ou _). Apenas os primeiros 19 caracteres são considerados.

O MATLAB diferencia entre letras maiúsculas e minúsculas, de modo que a e A


não são as mesmas variáveis. Todas as funções do MATLAB são definidas em letras
minúsculas.

Funções para Construir Matrizes

O MATLAB possui funções para gerar matrizes especiais. As funções mais


utilizadas são apresentadas abaixo:

eye( ) gera matriz identidade


ones( ) gera matriz com todos os elementos iguais a um
zeros( ) gera matriz com todos os elementos iguais a zero
rand( ) gera matriz com números aleatórios entre 0 e 1
diag( ) extrai a diagonal ou cria uma matriz diagonal
tril( ) extrai a parte triangular inferior de uma matriz
triu( ) extrai a parte triangular superior de uma matriz

As funções eye( ), ones( ) e zeros( ) podem ser usadas para gerarem matrizes quadradas
ou retangulares:

» C = eye(3) ↵

gera uma matriz quadrada 3x3:


C=
1 0 0
0 1 0
0 0 1

Para gerar uma matriz retangular passe para a função o número de linhas e
colunas:

» C = eye(3,4) ↵

resulta
C=
1 0 0 0
0 1 0 0
0 0 1 0
Introdução ao MATLAB 5

Como a função eye( ), as funções ones( ) e zeros( ) podem gerar matrizes


quadradas ou retangulares conforme mostrado abaixo:

» x = ones(2) ↵
» y = zeros(1,4) ↵
» w = ones(3,2) ↵

resultam

x= 1 1
1 1

y= 0 0 0 0

w= 1 1
1 1
1 1

Você pode usar estas funções para construir matrizes grandes. Por exemplo, para
obter a matriz:

F= 0 1 0 0
0 0 1 0
0 0 0 1
2 1 3 2

utilize o seguinte comando:

» F = [zeros(3,1) eye(3); 2 1 3 2] ↵

Para gerar uma matriz identidade com a mesma dimensão de uma outra matriz utilize o
comando size( ) que retorna o número de linhas e colunas de uma matriz:

» A = [1 2 3; 4 5 6; 7 8 9] ↵
» C = eye(size(A)) ↵

resulta

C=
1 0 0
0 1 0
0 0 1

Obs: O uso do comando eye(A) produz o mesmo efeito, só que existe a previsão de não
ser mais aceito em futuras versões do MATLAB.

A matriz C = (A-2I), por exemplo, pode ser obtida através de

» C = A - 2*eye(size(A)) ↵
Prof. Eduardo Nunes Gonçalves 6

A função rand( ) funciona de meneira simular às anteriores:

» G=rand(2,4) ↵
resulta por exemplo em
G = 0.2190 0.6789 0.9347 0.5194
0.0470 0.6793 0.3835 0.8310
A função diag( ) pode ser usada tanto para extrair a diagonal de uma matriz como
para criar uma matriz diagonal:

» C = diag([-3 -1 -5]) ↵
resulta
C= -3 0 0
0 -1 0
0 0 -5

» x = diag(A) ↵

resulta
x= 1
5
9

» C = diag(diag(A)) ↵
resulta
C= 1 0 0
0 5 0
0 0 9
A seguir são apresentados exemplos do uso das funções tril( ) e triu( ):

» L = tril(A) ↵
resulta
L= 1 0 0
4 5 0
7 8 9

» U = triu(A) ↵
resulta
U= 1 2 3
0 5 6
0 0 9
Introdução ao MATLAB 7

Comando who e as variáveis permanentes

O comando who apresenta a lista de variáveis criadas:

» who ↵

produz, por exemplo, a resposta:

Your variables are:

A ans s x

Além das variáveis criadas, existe um grupo de variáveis permanentes: eps, pi,
Inf, NaN, realmin e realmax. A variável eps = 2-52 = 2,2204x10-16 é o menor número que
somado a 1 cria um número de ponto flutuante maior que 1. As variáveis
realmin = 2-1022 = 2,2251x10-308 e realmax = 21024 = 1,7977x10308 são respectivamente o
menor e o maior números positivos de ponto flutuante que o computador pode
representar. A variável pi equivale a constante π. A variável Inf significa infinito. Um
modo de gerar Inf é por uma divisão por zero:

» s = 1/0 ↵

resulta em

Warning: Divide by Zero.

s= Inf

Ao contrário das maiorias das linguagens de programação, uma divisão por zero apenas
emite uma mensagem de aviso sem abortar o programa ou o comando em execução.

A variável NaN significa "Not a Number" sendo gerada por uma indefinição:

» s = 0/0 ↵

resulta em

Warning: Divide by Zero.

s= NaN
Prof. Eduardo Nunes Gonçalves 8

Uma visão mais detalhada das variáveis é obtida através do seguinte comando:

» whos ↵
que produz
Name Size Element Bytes Density Comple
s x
A 3 by 3 9 72 Full No
ans 1 by 1 1 8 Full No
s 1 by 1 1 8 Full No
x 1 by 5 5 40 Full No
Grand total is 16 elements using 128 bytes

Operadores aritméticos

As expressões podem ser construídas utilizando os seguintes operadores


matemáticos apresentados da menor para a maior prioridade de execução:

+ adição
- subtração
* multiplicação
/ divisão à direita
\ divisão à esquerda
^ potenciação

Em operações com matrizes, é interessante possuir dois símbolos para a divisão. A


variável sob a barra será o denominador em uma divisão de escalares, ou a matriz que
será invertida em uma operação matricial:

» 2/4 ↵
resulta
ans = 0.5000

» 2\4 ↵
resulta
ans = 2.0000

Números e matrizes complexas

Na versão inicial para DOS, para entrar com números complexos era necessário
utilizar uma das variáveis predefinidas: i ou j; que são definidas como
i=sqrt(-1)
Deste modo para entrar com o numero complexo z = 3 + 4i usava-se o seguinte
comando:
Introdução ao MATLAB 9

» z = 3 + 4*i ↵
Nas novas versões já é possível escrever os números complexos diretamente como:

» z = 3 + 4i ↵
ou

» z = 3 + 4j ↵
Uma outra opção é escrever o número complexo na forma: w = r*exp(i*theta),
onde r e theta são as variáveis contendo o módulo e o ângulo do vetor, respectivamente.
As matrizes com elementos complexos podem ser geradas de duas formas:

» A = [1+5i 2+6i; 3+7i 4+8i] ↵


ou

» A = [1 2;3 4] + i*[5 6;7 8] ↵


que produzem o mesmo resultado. No primeiro modo deve-se ter o cuidado de não
utilizar espaços em branco entre os dígitos de um mesmo elemento para que este não seja
considerado como dois elementos distintos.

Formatos de saída

O formato de apresentação padrão do MATLAB pode ser modificado através de


uma das variações do comando format apresentadas a seguir.

Format padrão, o mesmo que short


format short formato de ponto fixo com 5 dígitos
format long formato de ponto fixo com 15 dígitos
format short e formato de ponto flutuante com 5 dígitos
format long e formato de ponto flutuante com 5 dígitos
format hex formato hexadecimal
format + formato compacto com os símbolos +, - e branco
representando números positivos, negativos e zero
respectivamente
format bank formato financeiro (duas casas decimais)
format compact suprime linhas em branco
format loose mantém linhas em branco
format rat aproximação por uma razão de números inteiros

No formato padrão, se todos os elementos da matriz são inteiros, então a matriz é


apresentada sem a parte decimal:

» x = [-1 0 1] ↵
resulta em

x = -1 0 1
Prof. Eduardo Nunes Gonçalves 10

Se pelo menos um dos elementos da matriz não é um número inteiro, então os


números são apresentados no formato short:

» y = [4/3 1.2345e-6] ↵
resulta
y = 1.3333 0.0000
A seguir são apresentados vários exemplos de tipos de formatos e os seus
resultados:

» format short e ↵
»y↵
produz
y = 1.3333E+000 1.2345E-006

» format long ↵
»y↵
produz
y = 1.333333333333333 0.000001234500000

» format long e ↵
»y↵
produz
y = 1.333300000000000E+000 1.234500000000000E-006

» format rat ↵
»y↵
produz
y = 4/3 1/810045
Com os formatos short e long, se existir pelo menos um elemento cujo módulo é
maior que 1000 ou menor que 0,001, um fator de escala comum é aplicado a todos os
elementos da matriz:

» format ↵
» y = 1e20*y ↵
resulta
y= 1.0E+020 *
1.3333 0.0000
Introdução ao MATLAB 11

Pedindo auxílio

Para obter uma lista dos tópicos que possuem auxílio, digite:

» help ↵

Para obter o auxílio de um tópico específico, digite help tópico. Por exemplo,

» help inv ↵

Para verificar se uma palavra é mencionada no auxílio de alguma função utilize o


comando lookfor como no exemplo abaixo:

» lookfor integration ↵

Esse comando é muito útil para descobrir quais as funções disponíveis no MATLAB que
executam determinada operação.

Matrizes Vazias

A expressão

x=[]

fixa x com dimensão zero por zero. Subseqüentes usos da variável x não levam a uma
condição de erro. Esta expressão é diferente do comando:

clear x

que elimina a variável da lista de variáveis existentes. A função exist( ) permite verificar
a existência de uma matriz, ao passo que a função size( ) permite verificar as dimensões
de uma matriz:

» x = [ ]↵
» size(x) ↵
» exist(‘x’) ↵
» clear x ↵
» exist(x) ↵
» size(x) ↵ % produz erro de variável inexistente

Observe que para a função exist( ), o MATLAB retorna ‘1’ para indicar
verdadeiro e ‘0’ para indicar falso.

Salvando as variáveis e saindo do MATLAB

Para sair do MATLAB digite quit ou exit. Antes de sair do MATLAB, pode-se
salvar as variáveis para uso posterior através do comando:
Prof. Eduardo Nunes Gonçalves 12

» save ↵
Este comando salva todas as variáveis no arquivo matlab.mat. A forma mais geral deste
comando é
save nome_arquivo lista_variáveis
Por exemplo,

» save temp A y ↵
salva as variáveis x e y no arquivo temp.mat. Para recuperar as variáveis armazenadas no
arquivo matlab.mat utilize o comando load como no exemplo a seguir, onde o camando
clear é usado para apagar todas as variáveis da memória:

» clear ↵
» whos ↵
» load ↵
» whos ↵
ou para ler as variáveis no arquivo temp.mat:

» clear ↵
» load temp ↵
» whos ↵

Salvando o trabalho realizado

Para salvar em um arquivo de texto todos os comandos efetuados e as respectivas


respostas, pode-se usar o comando diary seguido pelo nome do arquivo. Caso seja
omitido o nome do arquivo, é criado um arquivo chamado diary. Após esse comando,
todo o conteúdo da tela de comandos é copiado dentro do arquivo de texto. Para parar
temporariamente a gravação use o comando diary off e para retornar a gravação use o
comando diary on.

2. OPERAÇÕES MATRICIAIS

Matriz Transposta

O caracter acento agudo ' determina a transposta de uma matriz:

» A = [1 2 3;4 5 6;7 8 0] ↵
» B = A' ↵

resulta em

B=
1 4 7
2 5 8
Introdução ao MATLAB 13

3 6 0

» x = [-1 0 2]' ↵

produz

x=
-1
0
2

Se a matriz A possuir elementos complexos, então A' será a transposta conjugada de A.

Adição e Subtração

As operações de adição e subtração matricial só são definidas para matrizes com


mesmas dimensões:

»C=A+B↵

resulta

C=
2 6 10
6 10 14
10 14 0

A adição e a subtração também são definidas se um dos operandos é um escalar


(dimensão 1 x 1). Neste caso o escalar é somado ou subtraído de todos os elementos do
outro operando:

»y=x-1↵

fornece

y= -2
-1
0

Multiplicação de Matrizes

A multiplicação de matrizes é definida quando as dimensões internas dos


operandos são iguais (número de colunas do primeiro operando igual ao número de linhas
do segundo operando). Por exemplo:
Prof. Eduardo Nunes Gonçalves 14

» x'*y ↵

resulta

ans =
4

» x*y' ↵

fornece

ans =
2 1 -1
0 0 0
-4 -2 2

» b = A*x ↵

resulta

b=
5
8
-7

Um escalar pode multiplicar ou ser multiplicado por uma matriz, como por
exemplo:

» pi*x ↵

Divisão de Matrizes

Existe dois símbolos de divisão no MATLAB: / e \:

A\B = inv(A)*B
B/A = B*inv(A)

De maneira geral:

X = A\B é solução de A*X = B


X = B/A é solução de X*A = B

Por exemplo, deste que o vetor b foi calculado a partir de A*x, então a expressão

» z = A\b ↵
resulta
z= -1
0
Introdução ao MATLAB 15

2
o qual é o valor do vetor x.

Potenciação de Matrizes

A expressão A^p significa A elevado à p e é definida se A é uma matriz quadrada


e p é um escalar. Por exemplo,

» A^3 ↵
terá o mesmo resultado que

» A*A*A ↵

Funções Transcendentais Matriciais

No MATLAB, funções como exp(A) ou sqrt(A) operam em cada elemento da


matriz A individualmente. Existe um conjunto especial de funções que são definidas para
matrizes quadradas:

expm exponencial de matriz


logm logaritmo de matriz
sqrtm raiz quadrada de matriz

Por exemplo,

» expm(A) ↵
produz um resultado diferente que

» exp(A) ↵
o qual calcula a função ex para cada elemento individual de A.
Da mesma forma,

» sqrt(A)↵
calcula a raiz quadrada de cada elemento de A, ao passo que

» B = sqrtm(A)↵
Calcula a matriz B tal que B*B=A

Funções Matriciais Úteis

O MATLAB possui uma série de funções para tratamento de matrizes que


incluem fatorização, decomposição, cálculo da matriz inversa, etc. Entre com as seguintes
matrizes:

» A = [ 1 2 3; 4 5 6; 7 8 0 ] ↵ » B = [ 1 2 3; 4 5 6; 7 8 9 ] ↵
Prof. Eduardo Nunes Gonçalves 16

Por exemplo, para determinar as inversas das matrizes A e B, basta digitar:

» inv(A) ↵ » inv(B) ↵

Para obter o determinante das matrizes, utilize,

» det(A) ↵ » det(B) ↵

Para determinar o posto da matriz (maior número de linhas ou colunas linearmente


independentes) utilize a função rank():

» rank(A) ↵ » rank(B) ↵

Os autovalores da matriz A podem ser calculados pela função eig() que pode ser usada de
dois modos distintos:

» eig(A) ↵

que retorna os autovalores em um vetor coluna. Ou,

» [V,D] = eig(A) ↵

que retorna nas colunas da matriz V os autovetores associados com os autovalores de A


que aparecem como os elementos da diagonal principal da matriz D.

3. Operações sobre Arranjos

O termo "operações de arranjos" se refere as operações aritméticas elemento por


elemento de dois arranjos ou conjuntos. A adição e subtração de arranjos possui a mesma
definição das operações matriciais. A multiplicação de arranjos, isto é, a multiplicação
elemento por elemento é feita através do operador .* como mostrado a seguir:

» x = [1 2 3] ↵
» y = [4 5 6] ↵
» z = x.*y ↵

resulta

z= 4 10 18

onde z é dado por z = [1x4 2x5 3x6].

As expressões A./B ou A\.B fornece as divisões do elementos individuais,

» z = x.\y ↵

resulta

z= 4.0000 2.5000 2.0000


Introdução ao MATLAB 17

A potenciação de arranjos pode assumir várias formas:

» z = x.^y ↵

resulta

z= 1 32 729

que é dado por z = [14 25 36],

» z = x.^2 ↵

fornece

z= 1 4 9

correspondendo à z = [12 22 32],

» z = 2 .^[x y] ↵

produz
z= 2 4 8 16 32 64
Quando usando operações sobre arranjos deve-se ter o cuidado de deixar um
espaço entre um número e o símbolo da operação. Caso isto não seja feito, o MATLAB
interpretará o ponto como ponto decimal e a operação passa a ser matricial.

4. Vetores e Índices

Gerando Vetores

O operador dois-pontos, :, é utilizado pelo MATLAB para gerar vetores:

» x = 1:5 ↵
gera um vetor linha com os elementos variando de 1 a 5 com incremento de um:
x=
1 2 3 4 5

Incrementos diferentes de um podem ser utilizados:

» y = 0:pi/4:pi ↵

resulta em

y= 0.0000 0.7854 1.5708 2.3562 3.1416


Prof. Eduardo Nunes Gonçalves 18

Incrementos negativos também são permitidos:

» z = 5:-1:1 ↵

gera

z= 5 4 3 2 1

Um bom exemplo do uso do operador dois-pontos e de operação com arranjos é a


geração de uma tabela de e-xsenox:

» x = (0:0.02:3)' ↵
» y = exp(-x).*sin(x) ↵
» [x y] ↵

Para ver o gráfico dessa função utilize o seguinte comando:

» plot(x,y) ↵

O MATLAB abre uma janela gráfica para apresentar o gráfico.

Além do uso do dois-pontos, o MATLAB possui a função linspace( ) que cria um


vetor com um número definido de valores igualmente espaçados entre dois valores
limites. Para criar um vetor de valores entre –2 e 5 com 6 elementos utilize o comando:

» x = linspace(-2, 5, 6) ↵

que resulta

x= -2.0000 -0.6000 0.8000 2.2000 3.6000 5.0000

Índices

Os elementos individuais de uma matriz podem ser referenciados através de


índices entre parêntesis (sendo o primeiro índice para a linha e o segundo para coluna).
Por exemplo,

» A = [1 2 3;4 5 6;7 8 0] ↵
» A(3,3) = A(1,2) + A(3,1) ↵

resulta

A= 1 2 3
4 5 6
7 8 9

onde o elemento da linha 3, coluna 3 passa a ser a soma do elemento da linha 1, coluna 2,
mais o elemento da linha 3, coluna 1.
Introdução ao MATLAB 19

Os índices podem ser vetores quando se deseja selecionar mais que uma linha ou
coluna:

» B=A(1:2,3) ↵

resulta

B= 3
6

ou

» x = A(2,1:3) ↵

que fornece

x= 4 5 6

Quando se deseja uma linha completa ou uma coluna completa, como no exemplo acima,
pode se usar o dois-pontos como índice:

» x = A(2,:) ↵

Para obter a terceira coluna usar:

» y = A(:,3) ↵

Para eliminar uma linha ou coluna de uma matriz pode-se usar a matriz vazia [].
Por exemplo para eliminar a coluna 2 da matriz A basta executar o comando:

» A(:,2) = [] ↵

Também pode-se usar índices decrescentes ou com ordem aleatória:

» y = x(3:-1:1) ↵

resulta

y= 6 5 4

ou

» y = x([3 1 2]) ↵

que fornece

y=
6 4 5
Prof. Eduardo Nunes Gonçalves 20

5. Polinômios

Os polinômios são representados no MATLAB através de um vetor linha


contendo os coeficientes em ordem decrescente de potência. Por exemplo, para entrar
com o polinômio:

p(λ) = 2λ5 + λ4 + 3λ3 + 4λ + 8

digite,

» p = [2 1 3 0 4 8] ↵
Para calcular as raízes do polinômio use,

» roots(p) ↵
Para obter o polinômio para um determinado conjunto de raízes, pode ser utilizada a
função poly( ):

» r = [-1 -2] ↵
» p = poly(r) ↵
resultando
p=
1 3 2
A função poly( ) também pode ser utilizada para obter a equação característica de uma
matriz quadrada:

Q(λ) = det(λI - A) = λn + an-1λn-1 + ... + a1λ + a0


Por exemplo,

» A = [1 2 3;4 5 6;7 8 0] ↵
» q = poly(A) ↵
resulta
p= 1 -6 -72 -27

Para obter os autovalores (que são as raízes do polinômio característico), pode-se utilizar
o seguinte comando

» r = roots(q) ↵
ou usar diretamente a função eig(A) vista anteriormente.
Para calcular os valores de um polinômio p, para um conjunto de valores x,
utiliza-se a função polyval():

» x = 0:10; ↵
» y = polyval(p,x) ↵
Introdução ao MATLAB 21

É possível também determinar os coeficientes do polinômio de ordem n que mais


se aproxima dos valores de y=f(x). Para isto utiliza a função: polyfit(x,y,n).
Para somar ou subtrair dois polinômios pode se usar a soma ou subtração
matriciais. Caso a ordem dos polinômios seja diferente é necessário completar o vetor de
menor dimensão com zeros para garantir que os dois vetores tenham a mesma dimensão.
Por exemplo, para somar f(x) = 2x2+1 e g(x) = 3x3+5x+4 basta proceder do seguinte
modo:

» f = [0 2 0 1] ↵
» g = [3 0 5 4] ↵
»h=f+g↵
que resulta
g= 3 2 5 5

Para multiplicar ou dividir polinômios deve-se utilizar as funções conv( ) e


deconv( ) respectivamente. Para os mesmos polinômios f(x) e g(x) do exemplo anterior,
pode-se calcular h(x) = f(x).g(x) e m(x) = f(x) = h(x)/f(x) através dos seguintes
comandos:

» f = [2 0 1] ↵
» g = [3 0 5 4] ↵
» h = conv(f, g) ↵
» [q, r] = deconv(h, f) ↵ % q(x) = quociente e r(x) = resto da divisão
que resultam

h= 6 0 13 8 5 4 ⇒ h(x) = 6x5 + 13x3 + 8x2 + 5x + 4


q= 3 2 5 5 e r= 0 0 0 0 0 0
O MATLAB também possui a função polyder( ) para calcular a derivada de um
polinômio:

» h = polyder(g) ↵
resulta
h= 9 0 5

6. Gráficos
O MATLAB possui vários tipos diferentes de gráficos. Para ver os tipos de
gráficos e comandos disponíveis use o comando help para os tópicos plotxy e plotxyz
para gráficos de duas e três dimensões respectivamente. A tabela a seguir apresenta os
tipos de gráficos mais comuns.

Plot ambos os eixos lineares


loglog ambos os eixos logarítmicos
Prof. Eduardo Nunes Gonçalves 22

semilogx eixo x logarítmico e eixo y linear


semilogy eixo x linear e eixo y logarítmico
polar coordenadas polares
mesh superfícies em 3 dimensões
bar gráfico de barras

Uma vez que o gráfico foi criado, pode-se adicionar as seguintes características:

title escreve título no gráfico


xlabel escreve o nome do eixo x
ylabel escreve o nome do eixo y
zlabel escreve o nome do eixo z para gráficos 3D
text escreve texto sobre o gráfico
gtext posiciona o texto no gráfico através do mouse
grid inclui grade de linhas no gráfico

Além disto, existem comandos para controle do vídeo, escalonamento manual de


eixos e impressão que são apresentados a seguir.

shg mostra a tela gráfica


clc limpa a tela de comandos
clg limpa a tela gráfica
axis escalonamento manual de eixos
hold cria o próximo gráfico sobre o gráfico atual
subplot divide a tela gráfica em até 4 partes
whitebg troca cor de fundo dos gráficos para branco
cinvert inverte as cores do gráfico
ginput retorna as coordenadas selecionada pelo mouse
print imprime gráfico na impressora

O MATLAB pode trabalhar com várias janelas gráficas ao mesmo tempo. Para
esse fim existe um conjunto de comandos específicos.

Gráficos Lineares

Se y é um vetor, o comando plot(y) produz um gráfico linear de y em função dos


índices. Por exemplo,

» y = [0 .48 .84 1 .91 .6 .1] ↵


» plot(y) ↵

Observe que o gráfico resultante é dimensionado automaticamente. Experimente agora os


seguintes comandos (use o comando shg se a janela do gráfico não estiver visível):

» title(‘Meu segundo gráfico’) ↵


» xlabel(‘eixo x’) ↵
» ylabel(‘eixo y’) ↵
» grid ↵
Introdução ao MATLAB 23

O comando a seguir escreve o texto na posição selecionada pelo mouse (observe


que o cursor sobre a janela gráfica assume a forma de uma cruz):

» gtext(‘Curva 1’) ↵

Você também pode ler os valores do gráfico selecionados pelo mouse através da
função ginput onde o terceiro parâmetro é o número de pontos que serão selecionados:

» [x y] = ginput(3) ↵

Se x e y são vetores de mesma dimensão, então o comando plot(x,y) cria o gráfico


de y versus x. Por exemplo:

» t = 0:0.05:4*pi; ↵
» y = sin(t) ↵
» plot(t,y) ↵

Gráficos com Múltiplas Linhas

A maneira mais simples de se obter gráficos com múltiplas linhas é utilizar o


comando plot() na seguinte forma:

plot(X1, Y1, X2, Y2, ..., Xn, Yn)

onde X1, Y1, ..., Xn, Yn são os pares de vetores necessários para cada curva. Pode-se
definir a cor ou o tipo de linha para cada uma das curvas. Os tipos de linhas, marcas e
cores disponíveis são listados na tabela a seguir.

Tipos de linhas Tipos de pontos Cores


sólida - ponto . vermelho r
tracejada -- cruz + verde g
pontilhada : estrela * azul escuro b
traço-ponto -. círculo o branco w
marca x x amarelo y
rosa escuro m
azul claro c
preto k
invisível i

Como exemplo, vamos verificar o uso das funções polyval() e polyfit():

» p = [1 2 4 1 3] ↵
» x = 0:0.1:1 ↵
» y = polyval(p,x) ↵
» pe = polyfit(x,y,2) ↵
» ye = polyval(pe,x) ↵
» plot(x,y,x,ye) ↵
Prof. Eduardo Nunes Gonçalves 24

Para escolher o tipo de linha, marca ou cor, passe um terceiro parâmetro entre
aspas como no exemplo abaixo cujo gráfico resultante é apresentado a a seguir.

» plot(x,y,'*r',x,ye,'--') ↵
11

10

3
0 0.2 0.4 0.6 0.8 1

Escalonamento Manual dos Eixos dos Gráficos

Para alterar o escalonamento automático dos eixos dos gráficos utilizado pelo
MATLAB pode-se usar o comando axis(V), onde V é um vetor com quatro elementos
especificando os valores mínimo e máximo do eixo x e os valores mínimo e máximo do
eixo y. O uso do comando axis() pode ser verificado através do seguinte exemplo:

» v = [0 0.5 3 4]; ↵
» axis(v) ↵

Gráficos 3D

O comano plot3( ) é o equivalente do comando plot( ) para três dimensões. O comando


plot3(x,y,z), onde x, y e z são três vetores de mesma dimensão, desenha uma curva nos
espaço 3D através dos pontos cujas coordenadas são os elementos de x, y e z. Execute o
exemplo a seguir para obter a figura a seguir:

» t = 0:pi/50:10*pi; ↵
Introdução ao MATLAB 25

4 0

3 0

2 0

1 0

0
1
0 .5 1
0 0 .5
0
-0 .5 -0 .5
-1 -1

» plot3(sin(t),cos(t),t); ↵

Outra forma de criar gráficos 3D é atraves da função mesh(). A forma mais


simples de usar essa função é passar como argumento uma matriz com os valores do eixo
z como no exemplo a seguir que gera o patamar mostrado na figura a seguir:

» A = zeros(10) ↵
» A(4:6,4:6) = ones(3) ↵
» mesh(A) ↵

0.8

0.6

0.4

0.2

0
10
10
5
5
0 0

O MATLAB possui vários outros recursos e tipos de gráficos. Utilze o comando


help com os tópicos graphics, plotxy e plotxyz para ver os comandos disponíveis.
Prof. Eduardo Nunes Gonçalves 26

7. Escrevendo Programas no MATLAB

O MATLAB pode se usado como uma linguagem matricial de alto nível


completa, possuindo os comandos de controle de fluxo encontrados na maioria das
linguagens.

Operadores Relacionais

Existe seis operadores relacionais que podem ser utilizados para comparar duas
matrizes de mesma dimensão elemento por elemento. O resultado é uma matriz com a
mesma dimensão dos operandos composta de 0's e 1's, onde o 0 representa falso e o 1
representa verdadeiro. Os operadores relacionais são apresentados na tabela a seguir.

Operadores Relacionais
< menor que
<= menor igual
> maior que
>= maior igual
== igual
~= diferente

A função find() é útil para determinar os elementos da matriz que não são nulos.
Se não houver nenhum elemento não nulo, esta função retorna uma matriz vazia.

Operadores Lógicos

Existe três operadores lógicos que trabalham normalmente com escalares ou


matrizes de mesma dimensão contendo elementos 0's ou 1's:

Operadores Lógicos
& AND
| OR
~ NOT

Comandos IF, ELSE e ELSEIF

O comando if é ilustrado com o exemplo abaixo onde deseja-se determinar o


maior entre dois números:

if a > b
maior = a
else
maior = c
end
Introdução ao MATLAB 27

Quando se deseja testes em sequência, o comando elseif pode ser útil. No exemplo
a seguir a variável “sinal” receberá os valores 0, -1 ou 1 caso a variável “a” seja nula,
negativa ou positiva respectivamente.

if a == 0
sinal = 0
elseif a < 0
sinal = -1
else
sinal = 1
end

O comando de Repetição FOR

O comando for permite que um grupo de comandos seja repetido por um número
determinado de vezes. A forma geral do comando for é

for v = expressão
comandos
end

O exemplo a seguir calcula

( At ) 2 ( At ) 3
e At = I + At + + + ...
2! 3!
usando 11 termos para t = 0,1.

» A = [ 0 1; -2 -3] ↵
» t = 0.1 ↵
» termo = eye(size(A)) ↵
» serie = termo ↵
» for i=1:10 ↵
termo = termo*A*t/i; ↵
serie = serie+termo; ↵
end ↵
» serie ↵
» expm(A*t) ↵

Comando de Repetição WHILE

O comando while possibilita que um determinado grupo de comandos seja


repetido enquanto a expressão lógica associada permanecer verdadeira. A forma geral do
comando while é

while expressão
comandos
end
Prof. Eduardo Nunes Gonçalves 28

A variável eps que representa a diferença entre 1 e o número mais próximo pode ser
calculada através de

» eps = 1; ↵
» while (1+eps) > 1, eps=eps/2; end ↵
» eps=2*eps ↵
O comando break pode ser usado em conjunto com o comando while para forçar
o fim da repetição em um ponto diferente do início. O seguinte exemplo ilustra o uso do
comando break.

» while 1 ↵
n = input('Entre n (0 para terminar):'); ↵
if n == 0, break, end ↵
sqrt(n) ↵
end ↵

Arquivos .M : Programas e Funções

O MATLAB é capaz de executar uma seqüência de comandos armazenada em um


arquivo. Estes arquivos podem ser escritos em qualquer editor de textos e devem possuir
a extensão .M e serem armazenados em um dos diretórios pesquisados pelo MATALB
(ver arquivo MATLABRC.M). Além dos arquivos com seqüências de comandos, o
MATLAB também aceita um segundo tipo de arquivo que permite ao usuário escrever as
suas próprias funções. Os arquivos com funções começam com o comando function
como no exemplo a seguir:
function y = media(x)
% y = media(x) retorna a média dos elementos da matriz ou vetor x
[m, n] = size(x);
if m*n == 0
error(‘Não é possível calcular a média de uma matriz vazia.’)
end
y = sum(sum(x))/(m*n);
A função acima pode ser escrita em um arquivo denominado media.m presente em um
dos diretórios pesquisados pelo MATLAB (a lista de diretório é apresentada pelo
comando help). Observe que de acordo com o comando function, a variável y irá
armazenar o valor de retorno da função media(). O símbolo % significa que o restante da
linha é um comentário que não é interpretado como um comando pelo MATLAB. Os
comentários entre o comando function e o primeiro comando da função são apresentados
pelo comando help.
Experimente a sua função criada:

» help media ↵
» v = [1 2 4 6] ↵
» m = media(v) ↵

Você também pode gostar