Você está na página 1de 12

Apostila de MatLab

Computao Aplicada Engenharia

Pgina 1 de 12

Apostila de MatLab

Curso Bsico de MATLAB

Computao Aplicada Engenharia


Cleve Moler - criador do MATLAB
Reedio e formatao: Michael Juliano Silva

INTRODUO
O que o MATLAB (MATrix LABoratory)?
um ambiente de computao tcnico-cientfico
desenvolvimento de sistemas sofisticados e eficientes.

Computao Aplicada Engenharia

para

Pgina 2 de 12

Apostila de MatLab

CONTEDO

1. Gerao de Sinais .................................................................................................................


-

Matemtica elementar .............................................................................................. 04

Espao de trabalho .................................................................................................... 05

Variveis .................................................................................................................... 05

Comentrios e pontuao ......................................................................................... 05

Nmeros complexos .................................................................................................. 06

Aritmtica de ponto flutuante .................................................................................. 06

Funes existentes ..................................................................................................... 06

2. Vetores e Matrizes ................................................................................................................


-

Vetores simples .......................................................................................................... 06

Endereamento vetorial ............................................................................................ 07

Construes de vetores ............................................................................................. 07

Matrizes ...................................................................................................................... 08

Matemtica vetor-escalar ......................................................................................... 08

Matemtica vetor-vetor ............................................................................................ 08

Matrizes padro ........................................................................................................ 09

Manipulao de matrizes e vetores .......................................................................... 10

Matrizes celulares e estruturas ................................................................................ 10

3. Leitura e escrita de arquivos .......................................................................................... 10


4. Grficos 2D e 3D ............................................................................................................. 10
5. Programao (script e funo) ...................................................................................... 11
6. Simulink .......................................................................................................................... 11
7. Bibliografia ...................................................................................................................... 12

Computao Aplicada Engenharia

Pgina 3 de 12

Apostila de MatLab

Tela de interface do Software:

Matemtica elementar
Trabalha como se fosse uma calculadora:
>> 4+6+2
ans =
12
>> 4*25 + 6*52 + 2*99
ans =
610
>>
Podemos armazenar os resultados em variveis:
>> borrachas = 4
borrachas =
4
>> blocos = 6;
>> fitas = 2;
>> itens = borrachas + blocos + fitas
itens =
12
>> custo = borrachas*25 + blocos*52 + fitas*99
custo =
610

Computao Aplicada Engenharia

Pgina 4 de 12

Apostila de MatLab
>>
Operaes Aritmticas Elementares:
Operao
Smbolo
Adio
+
Subtrao
Multiplicao
*
Diviso
/ ou \
Potenciao
^

Exemplo
3 + 22
54.4 - 16.5
3.14 * 6
19.54/7 ou 7\19.54
2^8

(da menor para a maior precedncia)

Espao de trabalho
Todos os comandos e as variveis criadas na janela de comando esto no Espao de Trabalho do MATLAB.
Para saber quais variveis existem basta usar o comando:
>> fitas
fitas =
2
Para saber quais variveis existem basta usar o comando:
>> who
Your variables are:
ans
custo
blocos
fitas
borrachas itens
>>

Variveis
- As variveis distinguem letras maisculas de minsculas. Ex.: Custo, custo, CuStO e CUSTO.
- No existe limitao no tamanho do nome da varivel, mas o MATLAB apenas considera os primeiros 31
caracteres.
- Os nomes devem comear com uma letra, seguida de um nmero qualquer de letra, algarismos ou sublinhados.
- Caracteres de pontuao no so permitidos.
- No podem ser usadas as palavras-chaves: for, end, if, while, function, return, elseif, case, otherwise, switch,
continue, else, try, catch, global, persistent e break.
Existem as seguintes variveis especiais:
ans
padro usado para resultados
beep o computador emiti um bip
pi
3.14159265...
inf
infinito
nan
valor no-numrico (ex.: 0/0)
i ou j valor para
Tambm existem as variveis: eps, nargin, nargout, realmin, realmax, bitmax, varargin e
vararout.
Caso os valores dessas variveis sejam alterados, o comando clear <varivel> volta ao valor inicial.

Comentrios e Pontuao
Comentrios:
>> fitas = 2;
>>

% nmero de rolos de fita adesiva

Vrgula e Ponto-e-Vrgula:
>> borrachas = 6, blocos = 6; fitas = 2
borrachas =
6

Computao Aplicada Engenharia

Pgina 5 de 12

Apostila de MatLab
fitas =
2
>>
CTRL+C para interromper

Nmeros Complexos
s
>> fitas = 2;
>>

% nmero de rolos de fita adesiva

Aritmtica de Ponto Flutuante


>> format long % exibi n c/ mais preciso
>> eps
ans =
2.220446049250313e-016
>> 0.42 0.5 + 0.08
ans =
-1.387778780781446e-017
>> 0.08 - 0.5 + 0.42
ans =
0
>> 0.08 + 0.42 - 0.5
ans =
0

Devido a aproximaes nas representaes internas no computador

Funes Existentes
Funes Trigonomtricas:
sin, cos, tan, asin, acos, atan, sec, asec, csc,
acsc, ...
Funes Exponenciais:
^, exp, log, log10, log2, pow2, sqrt, nextpow2
Funes Complexas:
abs, angle, conj, imag, real, complex, ...
Funes de Arredondamento e Resto:
fix, floor, ceil, round, mod, rem, sign
Outras Funes:
factor, isprime, besselj, gamma, cross, ...
Ajuda: help <funo>

Vetores Simples
Como calcular y = sen(x) em 0xx pois existem infinitos pontos nesta faixa?
Soluo: escolher um nmero finito de pontos. Estamos fazendo uma amostragem da funo.
>> x = [0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi]
x =
Columns 1 through 6
0
0.3142
0.6283
0.9425
1.2566
1.5708
Columns 7 through 11
1.8850
2.1991
2.5133
2.8274
3.1416
>> y = sin(x)
y =
Columns 1 through 6
0
0.3090
0.5878
0.8090
0.9511
1.0000

Computao Aplicada Engenharia

Pgina 6 de 12

Apostila de MatLab
Columns 7 through 11
0.9511
0.8090
0.5878

>>

0.3090

0.0000

Endereamento Vetorial
Podemos acessar s componentes usando ndices:
>> x(3)
% o terceiro elemento de x
ans =
0.6283
>> y(5)
% o quinto elemento de x
ans =
0.9511
>> x(1:5)
% notao de dois-pontos
ans =
0
0.3142
0.6283
0.9425
>> x(7:end)
% at o fim do vetor
ans =
1.8850
2.1991
2.5133
2.8274

1.2566
3.1416

Podemos acessar s componentes usando ndices:


>> y(3:-1:1)
% ordem inversa
ans =
0.5878
0.3090
0
>> x(2:2:7)
% a cada 2
ans =
0.3142
0.9425
1.5708
>> y([8 2 9 11])
% na ordem que queremos
ans =
0.8090
0.3090
0.5878
0.0000

Construo de Vetores
Como construir vetores grandes?
>> x = (0:0.1:1)*pi
x =
Columns 1 through 6
0
0.3142
0.6283
Columns 7 through 11
1.8850
2.1991
2.5133
>> x = linspace(0,pi,11)
x =
Columns 1 through 6
0
0.3142
0.6283
Columns 7 through 11
1.8850
2.1991
2.5133

0.9425

1.2566

2.8274

3.1416

0.9425

1.2566

2.8274

3.1416

1.5708

1.5708

>> a = [1:5], b = [linspace(1,5,4)]


a =
1
2
3
4
5
b =
1.0000
2.3333
3.6667
5.0000
>> c = [b a]
c =
Columns 1 through 4
1.0000
2.3333
3.6667
5.0000
Columns 5 through 8
1.0000
2.0000
3.0000
4.0000
Column 9
5.0000

Computao Aplicada Engenharia

Pgina 7 de 12

Apostila de MatLab
>>
>> a = (1:7)'
a =
1
2
3
4
5
6
7

% transforma a linha em coluna

>>

Matrizes
>> g = [1 2 3 4;5 6 7 8]
g =
1
2
3
4
5
6
7
8
>> 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
>>

Matemtica Vetor-Escalar
>> g-2
ans =
-1
3
7
>> 2*g/5 +
ans =
1.4000
3.0000
4.6000
>>

0
4
8
1

1
5
9
1.8000
3.4000
5.0000

2
6
10
2.2000
3.8000
5.4000

2.6000
4.2000
5.8000

Matemtica Vetor-Vetor
>> 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];
>> g + h
% soma h e g, elemento por elemento
ans =
2
3
...
>> ans - h
% subtrai h de ans elemento por elemento
ans =
1
2
...
>> 2*g - h
% multiplica g por 2 e subtrai h do resultado
ans =
1
3 ...
>> 2*(g h) % parnteses p/ alterar a ordem das operaes
ans =
0
2 ...

Computao Aplicada Engenharia

Pgina 8 de 12

Apostila de MatLab

Multiplicao/diviso escalar pontuada:


>> g.*h % multiplicao elemento por elemento
ans =
1 2 3 4
10 12 14 16
27 30 33 36
>> g./h % diviso elemento por elemento
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
>> h.\g % item ao anterior
ans =
1.0
2.0000 ...
Diviso matricial:
>> g/h
Warning: Rank deficient, rank = 1 tol = 5.3291e-015.
Ans =
0
0 0.8333
0
0 2.1667
0
0 3.5000
>> h/g
Warning: Rank deficient, rank = 2 tol = 1.8757e-014.
ans =
-0.1250
0 0.1250
-0.2500
0 0.2500
-0.3750
0 0.3750
Importante para lgebra matricial
Multiplicao matricial:
>> A = [1 2 3; 4 5 6; 7 8 0];
>> y = [366;804;351];
>> x = inv(A)*y
x=
25.0000
22.0000
99.0000
a soluo do sistema de equaes lineares:

Matrizes Padro
>> ones(3) % matriz 3x3, todos elementos = 1
>> zeros(2,5) % matriz 2x5, todos elementos = 0
>> size(g) % diz as dimenses da matrix
>> ones(size(g))
>> eye(4) % matriz identidade
>> eye(4,2)
>> rand(3) % matriz 3x3 de nmeros aleatrios
>> rand(size(eye(3)))
>> randn(2,5) % n aleatrios com distribuio normal
% mdia zero e varincia igual a um.
>> a = 1:4 % vetor simples
>> diag(a) % coloca elementos na diagonal principal

Computao Aplicada Engenharia

Pgina 9 de 12

Apostila de MatLab

Manipulao de Matrizes e Vetores


>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

A = [1 2 3;4 5 6;7 8 9]
A(3,3) = 0 % atribui zero ao elemento L=3, C=3
A(2,6) = 6 % atribui 1 a L=2, C=6, ampliando a matriz
A(:,4) = 4 % atribui 4 para C=4
A(:,4) = [4;4;4] % item ao anterior
A = [1 2 3;4 5 6;7 8 9]
B = A(3:-1:1,1:3) % inverte as linhas
B = A(3:-1:1,:) % dois-pontos indica todas as colunas
C = [A B(:,[1 3])]
B = A(1:2,2:3)

Matrizes Celulares e Estruturas


Permite que matrizes diferentes, mas relacionadas, sejam agrupadas em uma nica varivel.
A diferena entre matriz celular e estrutura que a matriz celular identifica os locais de armazenamento de dados
(clulas) por nmeros e a estrutura identifica esses locais (elementos da estrutura) por nome.
>> A = [1 2 3; 4 5 6; 7 8 0];
>> y = [3
22.0000
99.000

Leitura e Escrita de arquivos


O MATLAB tem vrias maneiras de ler ou escrever em arquivos, trabalhando com vrios formatos.
Para salvar as variveis em um arquivo.mat:
save arquivo <var1> <var2> ... <varN>
Para carregar as variveis em um arquivo.mat:
load arquivo <var1> <var2> ... <varN>
Caso o arquivo ou a varivel j existem esses so motificados sem perguntar ao usurio.
Outros comandos para manipulao de arquivos:
ldlmread, dlmwrite, importdata, imfinfo, imread, auread,
auwrite, wavread, wavwrite, aviread, getframe, movie2avi,
fopen, fclose, fgets, fprintf, fscanf, textread, sprintf,
sscanf, strread, fread, fwrite, feof, ftell, fseek, ...

Grfico 2D e 3D
Gerando um grfico das funes seno e cosseno:
>> x = 0:0.1:2*pi; % vetor das ordenadas
>> y = sin(x); % vetor da absissas
>> plot(x,y); % plota o grfico na janela figura 1
>> xlabel('x');
>> ylabel('y');
>> title('Grfico f(x) = sen(x)');
>> legend('sen(x)');
>> figure(2); % segunda janela
>> y1 = cos(x);
>> plot(x,y);
>> xlabel('x');
>> ylabel('y');
>> title('Grfico f(x) = cos(x)');
>> legend('cos(x)');

Computao Aplicada Engenharia

Pgina 10 de 12

Apostila de MatLab
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

x = -2*pi:0.1:2*pi;
y = x .* cos(2*x);
figure(1);
plot(x,y,'r+');
axis([-pi pi -2 2]);
grid
title('Grfico f(x) = x*cos(2x)')
xlabel('Eixo X')
ylabel('Eixo Y')
legend('x*cos(2x)')
legend('cos(x)');

Outras funes para plotar em 2D:


loglog, semilogx, semilogy, polar, subplot, zoom, box,
hold, axes, text, print, area, bar, pie, comet, compass, ...
Grficos 3D:
>> % Exemplo 1
>> x = -4*pi:0.1:4*pi;
>> y = -4*pi:0.1:4*pi;
>> plot3(cos(x),sin(y),(x+y))
>>
>> % Exemplo 2
>> figure(2);
>> x = -2:0.2:2;
>> y = -5:0.2:5;
>> [mx,my]=meshgrid(x,y);
>> mz=exp(sin(mx).*cos(my));
>> mesh(mx, my, mz);
>> figure(3);
>> surf(mx, my, mz);

Programao
Para automatizar as tarefas o MATLAB possui dois recursos:
- Scripts
- Funes
Os scripts permitem a automao de tarefas. Eles utilizam o mesmo espao de variveis.
As funes tambm vo permitir a automao de tarefas, mas durante a sua execuo ter o seu prprio espao
de variveis, alem de aceitar parmetros de entrada e ter uma sada.
Funes importantes:
>> beep % faz o computador emitir um bip
>> disp(varivel) % mostra o contedo da varivel
>> disp('texto') % mostra o texto
>> a = input('texto'); % mostra o texto e l o teclado
% colocando o valor na varivel a
>> echo on % habilita modo de depurao
>> echo off % desabilita modo de depurao
>> pause(n) % suspende a execuo por n segundos
>> waitforbuttonpress % suspende a execuo at que o
% usurio pressione uma tecla

Computao Aplicada Engenharia

Pgina 11 de 12

Apostila de MatLab

Bibliografia

Hanselman, D.; Littlefield, B.; MATLAB 6 Curso Completo; Prentice Hall; 2003
Matsumoto, . Y.; MATLAB 6.5 Fundamentos de Programao; Editora rica; 2002
Matsumoto, . Y.; Simulink 5 Fundamentos; Editora rica; 2003

Computao Aplicada Engenharia

Pgina 12 de 12