Você está na página 1de 20

UNIVERSIDADE FEDERAL DE UBERLÂNDIA

FACULDADE DE ENGENHARIA ELÉTRICA


PROGRAMA DE EDUCAÇÃO TUTORIAL

®
MATLAB

Ministrantes:

Alex Reis
André Luiz Machado de Oliveira
Guilherme Henrique Bernardes Cunha
Osmando Pereira Junior

Uberlândia, fevereiro de 2007 Rodrigo Possani


CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

Prefácio

O MATLAB (Matrix Laboratory) é um ambiente computacional para computação

numérica e gráfica de alta performance utilizado em cálculos com matrizes e vetores. Ele

integra: análises numéricas, computação matricial, processamento de sinais e gráficos em um

ambiente de fácil uso em que os problemas e as soluções são expressos e obtidos,

respectivamente, da mesma forma como escritos matematicamente, sem o uso da

programação tradicional.

O domínio desta ferramenta permite ao usuário solução de problemas bastante

complexos, visualização de figuras em uma, duas ou três dimensões, simulação de circuitos

como filtros digitais, moduladores e demoduladores de sinais, etc. As aplicações são infinitas.

Pretende-se, com esta apostila, incentivar e orientar o estudo da ferramenta MATLAB.

Mas, é muito importante ao usuário ter a consciência de que o aprendizado é gradativo e

advém da perseverança.

Boa aprendizagem!

Página 2 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

Sumário:

1. Operações Aritméticas 4

2. Funções Básicas 5

3. Formato de Números, Gravar Workspace (diary) e Limpar Command 6


Window (clc)

4. Vetores Unidimensionais 9

5. Matrizes 12

6. Gráficos 14

Página 3 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
1. Operações Aritméticas

Os operadores para as quatro operações aritméticas elementares são apresentados na


tabela abaixo:

Tabela 1.1. As quatro operações aritméticas elementares.

Operação Operador
adição +
subtração -
multiplicação *
divisão / e \

E1.1. Verificar no MATLAB as operações abaixo:


a) 5 + 3 b) 1 – 9 c) 3.4*2 d) 5/4 e) 4\5
f) 3*(4.6 + 2 - 3/2) / 2.85 g) 0 / 0 h) ∞ / ∞ f) 2 / 0

Observação: As letras ‘d’ e ‘e’ demonstram a diferença entre os operadores da divisão / e \.


Pode-se observar que a / b = b \ a.
NAN significa Not a Number.

Solução1.1.a

>> 5+3

ans =

Outras operações:
1.1. Potenciação (^)
Fazer no MATLAB: a) 10^2 b) 2^3 c) 4^(1/2) d) 5^2.31
e) a = 2e-4 f) (10^4)*A c) A=(10^4)*a

Observação: O MATLAB é CASE SENSITIVE: Fazer a=2; A=5; c=2*a; C=2*A

1.2. Raiz Quadrada (sqrt(x))


Fazer no MATLAB: a) sqrt(4) b) sqrt(9) c) sqrt(2^3)

1.3. Resto de uma divisão (rem(x))


Fazer no MATLAB: a) rem(2,2) b) rem(3,2) c) rem(4,9) d) rem(9,4)

Página 4 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
2. Funções Básicas

Existem várias funções no MATLAB, o conhecimento destas funções facilita bastante


a solução de problemas. No MATLAB, primeiro faz-se a chamada da função (digita-se o
nome dela, e depois, dentro dos parênteses, define-se o argumento da função).

Nome_função(argumento_função)

A seguir serão apresentadas algumas das funções básicas do MATLAB.


Tabela 2.1. Apresentação de algumas funções trigonométricas.
Função MATLAB Características
sin( ) argumento em radianos
seno
sind( ) argumento em graus
seno hiperbólico sinh( )
asin( ) resultado em radianos
arco-seno
asind( ) resultado em graus
arco-seno hiperbólico asinh( )
cos( ) argumento em radianos
cosseno
cosd( ) argumento em graus
cosseno hiperbólico cosh( )
arco-cosseno acos( ) resultado em radianos
acosd( ) resultado em graus
arco-cosseno hiperbólico acosh( )
tangente tan( ) argumento em radianos
atan( ) resultado em radianos
arco-tangente
atand( ) resultado em graus
secante sec( ) argumento em radianos
cossecante csc( ) argumento em radianos
cotangente cot( ) argumento em radianos

E2.1. Verificar no MATLAB o comando help elfun e, em seguida, verificar as operações


abaixo:
a) sin(pi/6) b) sin(30) c) sind(30) d) atan2(2,2) e) log(10)
f) log10(10) g) log(exp(1)) h) log10(2) i) exp(2) j) abs(5)
l) abs(-5) m) (-1)*abs(4/(-2))

Observação:
1) Uso de setas no Command Window: ↑ ↓ ← →
2) Para facilitar o trabalho com funções trigonométricas, lembrar:
cte = pi/180

Página 5 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
3. Formato de Números, Gravar Workspace (diary) e Limpar Command Window (clc)

3.1.Formato de Números

Pode-se representar os números no MATLAB em diferentes formatos, tanto por


comando na janela de comando quanto pelo endereço File >> Preferences...>>Command
Window.

3.1.1. Comandos na janela de comando


Digite o número de Euler (e) no MATLAB (exp(1)).

>> exp(1)

ans =

2.7183

Digite format long e depois exp(1).

>> format long


>> exp(1)

ans =

2.71828182845905

Verifique:
>>format long g
>>format short g
>>format long e
>>format short e
>>format bank
>>format rational

Verifique também a diferença entre:


>>format loose
>>a=2

>>format compact
>>a

Página 6 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
3.1.2. Comando pelo endereço File>>Preferences...>>Command Window

Página 7 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
3.2. Gravar Wokspace (comando diary)
É possível armazenar o código feito no Command Window para, posteriormente,
acessá-lo. Este armazenamento (gravação) é feito pela função diary.
Executem o código abaixo no MATLAB.

>> diary('c:\temp\aula1.txt')
>> format compact
>> a=4+3i
a=
4.0000 + ...
3.0000i
>> imag(a)
ans =
3
>> real(a)
ans =
4
>> abs(a)
ans =
5
>> conj(a)
ans =
4.0000 - 3.0000i
>> a^2
ans =
7.0000 +24.0000i
>> plot(a,’*’)
>> compass(a)
>> diary off

Pode-se verificar que há um arquivo .txt salvo no diretório c:\temp\aula1.txt.


Observação: Ferramenta reticências ... (permite continuar o comando em outra linha).

3.3. Limpar Command Window (clc)

O comando clc limpa a janela de trabalho. Esta ferramenta é muito importante visto
que permite melhor organização na janela de trabalho.
Executem na janela de trabalho: >>clc

Observação: comando clear all.

Página 8 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
4. Vetores Unidimensionais
Vetor é definido como um conjunto de elementos organizados de acordo com a
seguinte estrutura:

V = [v1 + v2 + v3 + v4 + ... + vn]

4.1. Vetor Linha

E4.1. Verificar no MATLAB as definições abaixo:


a) a = [1 2 3 4 5 6] b) b = [1,2,3,4,5,6] c = [5*(2+3) log10(10^5)]
d) a(1) e) a(2) f) b(3) g) b(7) h) 2*c(1) i) d = (1 2 3)
j) length(a) l) length(b) m) length(c)

Observação:

1- Notar ferramenta vetor(posição): a(1); b(5); c(2).


2- Notar que o índice de posição do vetor inicia em 1.
3- Função lenght(): determina o comprimento do vetor.

E4.2. Verificar no MATLAB a definição de vetor pela definição de elemento por elemento,
como se segue:

>> clear a
>> format short
>> format compact
>> a(1)=0
a=
0
>> a(2)=1
a=
0 1
>> a(3)=2
a=
0 1 2
>> a(4)=3
a=
0 1 2 3
>> a(5)=4
a=
0 1 2 3 4
>> a
a=
0 1 2 3 4

Página 9 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
4.2. Vetor Coluna

E4.2. Verificar no MATLAB as definições abaixo:


a) a = [1;2;3;4;5;6] b) b = [1<enter> 2<enter> 3<enter> 4<enter> 5<enter> 6]
c) a(4) d) b(2) e) c = [5*2; 6-(3/8); 4+(2/3)] f) length(b)

4.3. Vetor Transposto

Tendo-se A=[1 2 3], pode-se obter o vetor transposto ao vetor A por:

>> A=[1 2 3]
A=
1 2 3
>> At = A'
ans =
1
2
3
Observação: A ferramenta transposta (‘) permite criar um vetor coluna a partir de um
vetor linha.

4.4. Operações com Vetores

4.4.1. Soma
>> a=[1 2 3]; Observações:
>> b=[4 5 6];
>> A = a + b 1- Notar a utilização do parâmetro ; no final da linha de comando.
A= 2- O elemento A(1) é dado pela soma a(1)+b(1). O elemento
5 7 9 A(2), pela soma a(2)+b(2) e assim sucessivamente.

E4.4.1.Verificar no MATLAB as operações com vetores abaixo:


a) a=[1 2 3 4] b) c=[1 2] c) C=[1:1:5] d) F=[0:0.5:3.1] e) I=[5:8]
b=[3 4 5 6] d=[4,5,6] D=[2:1:6] G=[3:1.2:11] J=[4:-1:1]
A=a+b B=c+d E=C+D H=[F+G] L=I+J
A(4)
Observação:

1- Soma-se apenas vetores de mesmo tamanho.


2- Declaração de vetor por intervalo: vetor[inicio:passo:fim].
3- Observar a ferramenta para concatenação de vetores.
m=[1 2 3]
M=[m m m]

Página 10 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
4.4.2. Subtração
>> c=[1 2 3]; Observações:
>> d=[4 5 6];
>> B = c - d 1- O elemento B(1) é dado pela subtração c(1)-d(1). O elemento
B= B(2), pela subtração c(2)-d(2) e assim sucessivamente.
-3 -3 -3 2- Pode-se subtrair apenas vetores de mesmo comprimento.

4.4.3. Divisão e Produto de Vetores por Escalar

E4.4.3. Verificar as seguintes operações no MATLAB:


a) a=[1.2,2/2,3^2] b) b=[sqrt(4);3;1]
A=10*a B=0.5*b

4.4.4. Divisão e Produto de Vetores entre si

E4.4.4. Verificar no MATLAB as seguintes operações:


a) a=[1.2,2/2,3^2] b) B=a ./ b
b=[sqrt(4),3,1]
A= a.* b
Observação: Parâmetros .* e ./

4.4.5. Potenciação e Radiciação de Vetores

>> a=[1 2 3];


>> b=[4 5 6];
>> r=a.^2
r=
1 4 9
>> sqrt(r)
ans =
1 2 3
>> c=b.^a
c=
4 25 216

4.4.6. Produto Escalar entre dois vetores


Faz-se produto ente dois vetores A e B se e somente se A for vetor linha do tipo (1 x t)
e B for vetor coluna do tipo (t x 1). A solução será um vetor V de um único elemento.

E4.4.6. Verificar no MATLAB o seguinte código:


>> A=[1 2 3]; Observação:
>> B=[3;2;1];
>> V=A*B 1- Verificar a execução da função: dot(A,B)
V= 2- Observar a utilização de função transposta.
10

Página 11 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
5. Matriz
Matrizes podem ser representadas no MATLAB de forma similar a vetores. Deve-se
escrever todas as linhas em um única linha, separando-se uma linha da matriz da outra
utilizando a ferramenta ;.

E5.1. Verificar no MATLAB o seguinte código:

>> a=[1 2 3;4 5 6;7 8 9]


a=
1 2 3
4 5 6
7 8 9
>> b=[1,2,3
4,5,6
7,8,9]
b=
1 2 3
4 5 6
7 8 9

5.1. Identificação de um elemento da matriz

Os elementos da matriz podem ser identificados por dois índices, sendo que o primeiro
indica a linha e o segundo, a coluna.
>> a(1,1)
ans =
1
>> a(3,1)
ans =
7
>> a(3,3)
ans =
9

5.2. Tamanho de uma matriz(size())

E.5.2. Verificar no MATLAB o seguinte código:


>> size(a)
ans =
3 3
>> size(b)
ans =
3 3

Página 12 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
5.3. Concatenando duas ou mais matrizes

Pode-se criar uma nova matriz C concatenando duas outras matrizes A e B.

E5.3. Verificar o seguinte código no MATLAB


>> a
a=
1 2 3
4 5 6
7 8 9 Observação:
>> A=a
A= Verificar o que acontece para C=[A;B].
1 2 3
4 5 6
7 8 9
>> B=a'
B=
1 4 7
2 5 8
3 6 9
>> C=[A B]
C=
1 2 3 1 4 7
4 5 6 2 5 8
7 8 9 3 6 9

5.4. Sub-matriz de uma matriz

E.5.4. Verificar o seguinte código no MATLAB


>> D=C(1:3,3:5)
D=
3 1 4
6 2 5
9 3 6

5.5. Operações com Matrizes

5.5.1. Soma
Verificar A + B.

5.5.2. Subtração
Verificar ans - B

Página 13 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
5.5.3. Multiplicação e divisão por um escalar
Verificar C*5

5.5.4. Multiplicação de duas matrizes


Verificar: a) A*B b) A*C c) B*A

5.5.5. Potenciação
Verificar: a) A^2 b) A.^2

5.5.6. Matriz Transposta


Verificar: a) At=A’ b) Bt=B’

5.5.7. Matriz identidade, Matriz de 0 e Matriz de 1


Verificar: a) eye(3) b) eye(5) c) zeros(3) d) ones(3)

5.5.8. Matriz Inversa


Verificar: a) A^(-1) b) inv(A) c) A*inv(A)

6. Gráficos

6.1 Gráficos Simples

Gráficos constituem um recurso visual poderoso pra interpretação de dados.

E6.1 Plotagem da função senoidal: y = sen(x) para 0 <=x <=2π

Escolhem-se os pontos para a variável independente x. Esses dados formam o eixo


horizontal do gráfico.

>> x = linspace(0,2*pi,40);

O seno de cada ponto escolhido é calculado, fornecendo assim os dados de eixo


vertical.

>> y = sin(x);

O primeiro comando, antes da vírgula, gera o gráfico apresentado abaixo. O outro


comando, após a vírgula, habilita a malha pontilhada, para melhor visualização do gráfico.

>> plot(x,y), grid on

Página 14 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7

6.2 Função ‘plot’

A função plot do MATLAB é extremamente poderosa. Ela automaticamente escolhe


os limites dos eixos, marca os pontos individuais e desenha linhas retas entre eles. As opções
no comando plot permitem-lhe plotar conjuntos múltiplos de dados nos mesmos eixos, usar
tipos diferentes de linhas, tais como pontilhada ou tracejada, marcar somente os pontos de
dados sem interligá-los, usar cores distintas para as diferentes curvas. Além disso, é possível
colocar nomes nos eixos, um título na parte superior, desenhar uma grade nas marcas mais
grossas, e daí por diante.

Para ilustrar alguns desses recursos, consideremos os seguintes exemplos:

Definições para os exemplos a seguir:

>> x = linspace(0,2*pi,30);
>> y = sin(x);
>> z = cos(x);

Gráfico do seno e do cosseno nos mesmos eixos:

>> plot (x,y,x,z)

Gráfico do senos duas vezes: a primeira com linhas interconectando os pontos de


dados e a segunda marcando os pontos com o símbolo ‘+’:

>> plot (x,y,x,y,'+')

Página 15 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

Gráfico do seno versus o cosseno:

>> plot (y,z)

Gráfico da identidade “2senθcosθ=sen2θ” usando-se linha tracejada e função seno


com pontos interligados:

>> plot (x,y,x,2*y.*z,'--')

Coloca uma grade nas marcas grossas do gráfico atual:

>> plot (x,y,'r',x,z,'g'); grid on

Outras funções relacionadas:

title (‘título do gráfico’) Insere um título no gráfico atual.


xlabel (‘variável independente x’) Coloca um nome no eixo dos x do gráfico atual.
ylabel (‘variaveis dependentes’) Coloca um nome no eixo dos y do gráfico atual.
gtext(‘texto’) Insere um texto em certa posição na janela gráfica.

Comandos e caracterees para formatação das linhas ou pontos de um gráfico. Alguns


caracteres podem ser usados como argumentos na função plot.

Caracteres COR
y Amarelo
m Magenta
c Ciana
r Vermelho
G Verde
b Azul
W Branco
k Preto

Caracteres ESTILO DE LINHA


. .
0 0
X X
+ +
* *
- Sólido
: Pontilhado
-. Traço e ponto
-- Tracejado

Página 16 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

Comandos Descrição
axis([xmax,xmin,ymax,ymin]) Define os valores máximos e mínimo edos
eixos usando os valores dados no vetor de
linha.
Axis auto Retorna o escalamento de eixos para o
Axis (‘auto’) modo automático padrão: xmin=min(x),
xmax=max(x), etc.
Axis (axis) Congela a escala nos seus limites atuais,
de modo que se o comando hold é ligado,
gráficos subseqüentes usam os mesmos
limites de eixo.
Axis xy Usa a forma padrão de coordenadas
Axis (‘xy’) cartesianas, na qual a origem do sistema
(o menor par de coordenadas) está no
canto inferior esquerdo. O eixo hoizontal
aumenta da esquerda para a direita e o
eixo vertical aumenta de baixo para cima.
Axis ij Usa a forma coordenada matricial, onde a
Axis (‘ij’) origem do sistema encontra-se no canto
superior esquerdo. O eixo horizontal
aumenta da esquerda para a direita, mas o
eixo vertical aumenta de cima para baixo.
Axis square Faz com que o gráfico atual seja
Axis (‘square’) quadrado, e não retangular (que é o
padrão).
Axis equal Define os fatores de escalamento para
Axis (‘equal’) ambos os eixos como sendo iguais.
Axis normal Desliga axis equal e axis square.
Axis (‘normal’)
Axis off Desliga todos os nomes de eixos, grades e
Axis (‘off’) marcadores. Não altera o título nem o
nome colocado pelo comando gtext.
Axis on Liga nomes de eixos, marcadores e grade.
Axis (‘on’)

6.3 Plotagem de vetores

>> q = [1 2 4 2 6 8 2 2 9]
>> plot (q, 'r'); grid on

Nota 1: Um vetor é plotado como função dos índices dos seus elementos. Como o vetor X
possui 9 elementos, a abscissa será graduada de 1 até 9 e o eixo das ordenadas terá sua
graduação em função do valor dos elementos do eixo X.

Nota 2: Para alterar os limites de escala da janela gráfica atual basta usar a função axis com os
argumentos:

>>axis([xmax,xmin,ymax,ymin])

Página 17 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

Plotagem de um vetor em função de outro

>> a = [1 2 3 4]
>> b = [2 -1 0 -5]
>> plot(a,b)

6.4 Plotagem de matrizes

>> a = [ 2 1 4; 1 7 5 ; 6 8 4]
>>plot (a)

Desenvolva e experimente alguns dos comandos no gráfico a seguir:

Funções SENO e COSSENO


1

0.8

0.6

0.4
eixo das cordenadas

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7
eixo das abscissas

>> x = linspace(0,2*pi,40);
>> y = sin(x);
>> z = cos(x);
>> plot (x,y,'g:',x,z,'b--')
>> xlabel ('eixo das abscissas')
>> ylabel ('eixo das cordenadas')
>> title('Funções SENO e COSSENO')
>> grid

Página 18 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007
Outras funções

bar()
stairs()
errorbar()
compass()
rose()
feather()
fplot()

6.5 Subgráficos

Função subplot(m,n,s)
Onde:
M: linhas
N: colunas
S: numeração do gráfico

>>x = 0:pi/100:4*pi;
>>subplot(221)
>>plot(cós(x))
>>gtext(‘cosseno(x)’)

>>subplot(222)
>>plot (sin(x))
>>axis([0 500 -1 1])
>>title (‘seno(x)’);

>>subplot(223)
>>plot(cos(x),sin(x))
>>gtext(‘sen(x).cos(x)’)

>>subplot(224)
>>plot(cos(2x),sin(x))
>>title(‘cos(2x).sen(x)’)

6.6 Plotagem de funções

A função do MATLAB fplot permite plotar o gráfico de qualquer função, bastando fornecer o
intervalo onde se deseja que a função seja plotada:

>>fplot(‘exp’,[0 5])

6.7 Plotagem em três dimensões

A função para plotagem em três dimensões é a plot3 cuja forma geral é:

>> plot3 (x,y,z,c)

Página 19 de 20
CURSO DE MATLAB ® - PET/Eng.Elétrica – UFU / 2007

Onde x,y,z são vetores ou matrizes e c é o caracter ou string que define a cor ou estilo de
linha.

Exemplo

>>p = 0:pi/50:10*pi
>>plot3(sin(p),cós(p),p,’r’)
>>xlabel(‘sin(p)’)
>>ylabel(‘cos(p)’)
>>zlabel(‘p’)

6.8 Superfícies

As funções mesh e surf permitem representar superfícies no MATLAB. A função mesh plota
superfície no modo ‘armação de arame’ e a função surf preenche a armação de arame com
cores. Outra função importante é a colormap que altera a cor default do MATLAB.

Entendendo os mapas de cores

Vermelho Verde Azul Cor


0 0 0 Preto
1 1 1 Branco
1 0 0 Vermelho
0 1 0 Verde
0 0 1 Azul
1 1 0 Amarelo
1 0 1 Magenta
0 1 1 Ciano
0,5 0,5 0,5 Cinza-médio
0,5 0 0 Vermelho-escuro
1 0,62 0,4 Cobre
0,49 1 0,83 Azul-piscina

Exemplo:

>>mat = zeros(14);
>>mesh(mat)
>>colormap([0 1 1])
>>surf(mat)

Página 20 de 20

Você também pode gostar