Você está na página 1de 160

Introduo ao Matlab

Professores:
To Revoredo teorevoredo@uerj.br
Michel Tcheou mtcheou@uerj.br
Referncia Bibliogrfica

Stephen J. Chapman, Programao em


MATLAB para Engenheiros, 2 edio,
Cengage Learning.

www.mathworks.com

2
Sumrio

Introduo
Matlab Bsico
Programao em Matlab
Matemtica Simblica
Interfaces grficas e Toolbox

3
Introduo

MATLAB acrnimo de MATrix LABoratory


Foi desenvolvido inicialmente na dcada de
70 nas Universidades do Novo Mxico e
Stanford.
Destinado a princpio a cursos de teoria
matricial, lgebra linear e anlise numrica.
Voltado basicamente para matemtica
numrica.

4
Introduo

Hoje, um ambiente de programao


de alto nvel para aplicaes Cientficas
e de Engenharia.
Facilidades
Oferece um amplo leque de bibliotecas de
funes pr-definidas.
Muito amigvel em funcionalidades
grficas para Visualizao de Dados.
5
Introduo

Hoje, um ambiente de programao


de alto nvel para aplicaes Cientficas
e de Engenharia.
Facilidades
Amplamente divulgado em Universidades
e laboratrios de pesquisa.
Conveniente para o desenvolvimento de
prottipos.
6
Introduo

Vantagens
Facilidade de Uso
Independncia de Plataforma
Funes Predefinidas
Interface Grfica de Usurio
Compilador MATLAB
Desvantagens
Linguagem Interpretada
Custo
7
Introduo

O que mais?
Lgica fuzzy Mapas
Redes Neurais Controle Robusto
Processamento de Animao
sinais Simulao de
Aquisio de dados sistemas dinmicos
Banco de Dados (Simulink)
Finanas Etc

8
Introduo

Tela principal

9
Introduo

Tela principal

10
Introduo

Informaes do sistema
computer Tipo de computador onde
o MATLAB est operando
version Verso do MATLAB
ver Detalhes da verso do MATLAB e
dos toolboxes
license Apresenta a licena do
produto

11
MATLAB BSICO

12
Sumrio Matlab Bsico

Nmeros e formatos
Variveis e funes
Vetores
Matrizes
Operaes
Grficos

13
Nmeros e formatos

O MATLAB reconhece vrios tipos de


nmeros:
Integer (Ex: 12 - 678),
Real (Ex: 4.607 - 199.34),
Complex (Ex: 2 + 3i , i=j=sqrt(-1)),
Inf (Ex: Infinity, 2/0),
NaN (EX: Not a Number, 0/0).

14
Nmeros e formatos

O comando format usado para


controlar a impresso dos nmeros
O n de dgitos apresentados no tem a
ver com a exatido
Para formatar a visualizao:
format short e: Notao cientfica com 5 casas
decimais
format long e: Notao cientfica com 15 casas
decimais
format bank: Colocao de dois dgitos significativos
nas casas decimais

15
Nmeros e formatos

Formatos
Comando pi Comentrios

format short 3.1416 5 dgitos


format long 3.14159265358979 16 dgitos
format short e 3.1416e+000 5 dgitos + expoente
format long e 3.141592653589793e+000 16 dgitos + expoente
format short g 3.1416 short ou short e
format long g 3.14159265358979 long ou long e
format hex 400921fb54442d18 Hexadecimal, ponto flutuante
format bank 3.14 2 digitos decimais
format + + positivo(+), negativo(-) ou zero(0)
format rat 355/113 razo aproximada 16
Variveis e funes

Podem-se armazenar valores em


variveis no MATLAB.
Variveis devem ter um nome nico,
comeando com uma letra e podem
conter dgitos ou o smbolo _
(underline).
O MATLAB distingue letras
maisculas de minsculas.
17
Variveis e funes

Exemplo:
>> distancia = 100
distancia =
100
>> tempo = 3
tempo =
3
>> velocidade_media = distancia /
tempo
velocidade_media =
33.3333
18
Variveis e funes

Criando e iniciando variveis:


Expresses de atribuio
var = 40i;
var2 = var/5;
x = 1; y = 2;
array = [1 2 3 4];
Entrada pelo Teclado
my_val = input('Enter an input value:');
19
Variveis e funes

Criando e iniciando variveis:


Expresses de atalho
x = 1:2:10
angles = (0.01:0.01:1.00)*pi;

Funes pr-definidas
a = zeros(2);
b = zeros(2,3);
c = [1 2; 3 4];
d = zeros(size(c));
20
Variveis e funes

Note que ao digitar o nome da


varivel, o smbolo = e o seu valor, o
MATLAB armazena a varivel e a
apresenta na tela.
Para suprimir a exibio da varivel
deve-se adicionar um ponto-e-vrgula
ao final do comando.

21
Variveis e funes

Ao criar uma expresso sem


armazen-la em uma varivel, o
MATLAB a salva automaticamente na
varivel ans.

22
Variveis e funes

O comando who mostra todas as


variveis armazenadas durante uma
sesso do MATLAB.
>> who
Your variables are:
ans tempo
Distancia velocidade_media

23
Variveis e funes

O comando clear apaga uma ou


mais variveis.
>> clear tempo - Apaga somente a
varivel tempo.
>> clear velocidade_media distancia
- Apaga as variveis
velocidade_mdia e distancia.
>> clear - Apaga TODAS as variveis
da sesso.
24
Variveis e funes

Variveis especiais
ans - Nome de varivel padro usado para
resultados.
pi - 3.1416
eps - Menor nmero que somado a 1, cria
um nmero maior do que 1.
inf - Infinito.
NaN - No nmero.
iej - 1
realmin - menor nmero real positivo
realmax - maior nmero real positivo
25
Variveis e funes

Funes elementares
abs(x) - Valor absoluto
acos(x) - Arco cosseno
asin(x) - Arco seno
atan(x) - Arco tangente
cos(x) - Cosseno
exp(x) - Exponencial (ex)
log(x) - Logaritmo natural (base e)
log10(x) - Logaritmo na base 10
sin(x) - Seno
sqrt(x) - Raiz quadrada
tan(x) - Tangente
26
Variveis e funes

Exemplos
>> sin(pi/2)
ans =
1
>> cos(pi/4)^2
ans =
0.5000
>> asin(1)*180/pi
ans =
90
27
Variveis e funes

Recuperando comandos
Para evitar redigitao, o Matlab
armazena todos os comandos do
usurio durante uma sesso.
Para acessar os comandos anteriores
basta pressionar a tecla (seta para
cima) seguidas vezes at encontrar o
comando desejado.
O comando ento pode ser editado e
executado novamente. 28
Variveis e funes

Ajuda
Ajuda e informao no MatLab podem
ser obtidas de vrias formas
Na linha de comando usando help tpico
Numa janela de ajuda separada no menu
de help
No helpdesk MatLab mantido no disco ou
CD-ROM ou na internet

29
Variveis e funes

Ajuda
Ajuda na linha de comandos
>>help pi
PI 3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897....

>>help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
>>lookfor fft

30
Variveis e funes

funo disp(str)
>> str = ['The value of pi = ' num2str(pi)];
>> disp (str);

funo fprintf(format,data)
>> fprintf('The value of pi is %f \n',pi)

Formatao Resultados
%d Exibe valor como inteiro
%e Exibe valor no formato cientfico
%f Exibe valor como ponto flutuante
\n Muda de linha 31
Variveis e funes

Salvando sees
Para salvar uma sesso do MATLAB,
deve-se usar a opo Save Workspace
As no menu File.
Para abrir uma sesso salva
anteriormente deve-se utilizar a opo
Open no menu File.
possvel usar os comandos load e
save

32
Vetores

O MATLAB pode trabalhar com


vetores de elementos, realizando
operaes sobre eles

33
Vetores

Definio de vetores
>> A = [0 1 2 3 4 5]
A=
0 1 2 3 4 5
Outra forma de se criar um conjunto:
>> A = 1:1:5
A=
1 2 3 4 5
O primeiro valor o valor inicial, o segundo o
saltoe o terceiro o valor final.
34
Vetores

Funo linspace - Gera um vetor


linearmente espaado a partir de um
valor inicial, um valor final e um
nmero de elementos.
>> X = linspace(0,pi,6)
X=
0 0.6283 1.2566 1.8850 2.5133 3.1416

35
Vetores

Funo logspace - Gera um vetor


logaritmicamente espaado a partir
de uma potncia inicial, uma
potncia final e uma quantidade de
valores.
>> V = logspace(0,2,5)
V=
1.0000 3.1623 10.0000 31.6228 100.0000

36
Vetores

Acesso a um elemento de um vetor:


Z=
1 4 9 16 25
>> Z(1)

ans =
1
>> Z(2)

ans =
4
>> Z(6)

??? Index exceeds matrix dimensions.


37
Vetores

Pode-se acessar mais de um elemento:


>> Z(1:3)
ans =
1 4 9
>> Z(3:5)

ans =
9 16 25
>> Z(2:4)

ans =
4 9 16
38
Matrizes

O Matlab permite a criao de matrizes com


tantas dimenses quanto necessrio para um
dado problema

39
Matrizes

Definio de matrizes:
>> M = [1 0 -1; 2 3 4; -7 1 3]
M=
1 0 -1
2 3 4
-7 1 3
Os elementos da linha so separados por
espao em branco e as linhas so
separadas por ponto-e-vrgula.
40
Matrizes

Podem-se criar matrizes a partir de


vetores ou outras matrizes
>> b = [2 -3 1];
>> Mx = [b' M(:,2:3)]

Mx =
2 0 -1
-3 3 4
1 1 3
41
Matrizes

Podem-se criar matrizes a partir de


vetores ou outras matrizes
M(:, 2:3) significa a parte da matriz M
compreendida por todas as linhas (:) e as
colunas 2 e 3 (2:3).
A matriz Mx foi gerada concatenando-se o
vetor b transposto e as colunas 2 e 3 da
matriz M.

42
Matrizes

Funes para manipular matrizes


eye matriz identidade
zeros matriz composta de 0s
ones matriz composta de 1s
rand matriz de nmeros aleatrios
diag matriz diagonal
Rot90 rotao de uma matriz em 90 graus
etc

43
Operaes Aritmticas

Operadores aritimticos
Forma Geral: A op B
+ Soma Estrutural e Matricial
- Subtrao Estrutural e Matricial
* Multiplicao Matricial
/ Diviso Matricial Direita
\ Diviso Matricial Esquerda
^ Expoente Matricial
Operador de Transposio

44
Operaes Aritmticas

Operadores aritmticos

1 0 - 1 2
A B
2 1 0 1
3
C D5
2
45
Operaes Aritmticas

Operadores aritmticos
A+B A+C
0 2 Operao ilegal
2 2

AB A+D
2 -2 6 5
2 0 7 6

46
Operaes Aritmticas

Operadores aritmticos
A*B A .* B
-1 2 -1 0
2 5 0 1

A*C A .* C
3 Operao ilegal
8

47
Operaes Aritmticas

Operadores aritmticos
A/B A ./ B
-1 2 -1 0
-2 5 Inf 1

A\B A .\ B
-1 2 -1 Inf
2 -3 0 1

48
Operaes Aritmticas

Hierarquia de operaes aritmticas


distance = 0.5*accel*time^2
distance = 0.5*accel*(time^2)
distance = (0.5*accel*time)^2

Precedncia Operao

1 O contedo de todos os parnteses avaliado, a partir dos parnteses mais


internos em direo aos mais externos
2 Todos os expoentes so avaliados, da esquerda para a direita

3 Todas as multiplicaes e divises so avaliadas, da esquerda para a direita.

4 Todas as somas e subtraes so avaliadas, da esquerda para a direita

49
Operaes Aritmticas

Avalie as hierarquias de operaes


a = 3; b = 2; c = 5; d = 3;
output = a*b+c*d;
output = a*(b+c)*d;
output = (a*b)+(c*d);
output = a^b^d;
output = a^(b^d);

50
Operaes Relacionais

Operadores relacionais

Forma geral: A op B Operador Operao


== Igual a
A e B: Operandos. ~= Diferente de
Pode ser uma matriz, > Maior que
um escalar ou uma >= Maior que ou igual a
cadeia de caracteres. < Menor que
Op: Operador
<= Menor que ou igual a

51
Operaes Relacionais

Operadores relacionais
Os operadores <, <=, > e >= so usados para
comparar a parte real dos operandos.
Os operadores == e ~= so usados para
comparar a parte real e imaginria dos operandos.

52
Operaes Relacionais

Operadores relacionais
Expresso Resultado
5>3 1
AC > BA 01
a>b 10
1 + j <= 2 + 3*j 1
x >= [3 8] 10
a>c 10
2 + j == 1+ j 0
5 + j ~= 2 + j 1

a = [2 1] b = [ 1 1 ] c = [ 0 2 ] x = [ 4 2] 53
Operaes Lgicas

Operadores lgicos
Operao Lgica Binria Operao Lgica Unria
A op B op A

Operador Operao
& E lgico
l OU lgico
xor Ou exclusivo lgico
~ No lgico
54
Operaes Lgicas

Operadores lgicos
Entradas e ou xor no
A B A&B AlB xor(A,B) ~A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0

55
Operaes Lgicas

Operadores lgicos
Precedncia dos operadores
1. Os operadores aritmticos so avaliados primeiro.
2. Os operadores relacionais so avaliados da esquerda
para a direita.
3. Todos os operadores ~ so avaliados.
4. Todos os operadores & so avaliados.
5. Todos os operadores I so avaliados.

OBS: Sempre use parnteses para indicar a ordem


correta desejada de avaliao de uma expresso.
56
Operaes Lgicas

Expresso Resultado
~A 0
AlB 1
BlC 1
3>4&1 0
3 > (4 & 1) 1
~C 0
AlB&C 1
A&C 1
B&C 0

A = 1, B = 0 e C = -10
57
Exerccios

Exerccios
1. Para as matrizes A e B, definidas a baixo, execute as seguintes
operaes e interprete os resultados.

1 2 3 3 1 0
A 0 1 2 B 0 1 1

3 1 1 3 7 0
a) A+B b) A*B c) A.*B d) A.^2
e) A^2 f) A*A g) inv(A) h) inv(A)*A
i) A\B j) A/B k) A/B eye(3)
l) A*inv(B) eye(3)
58
Exerccios

Exerccios
2. Utilizando os comandos zeros, ones e eye, construa as seguintes
matrizes

0 0 0 0
0 1 1 1
0 0 0 1 1 0
A B 1 1 1 C D
0 0 0 0 1 0 1
0 1 1 1
0 0 0

zeros(4) ones(3) ones(2,1) eye(2)

59
Grficos

Pode-se gerar grficos a partir de


matrizes.
Exemplo
>> X = linspace(0,2*pi,100);
>> Y = sin(X);
>> plot(X,Y)

60
Grficos

Duas linhas no mesmo grfico (seno e


cosseno):
>> Z = cos(X);
>> plot(X,Y,X,Z)

61
Grficos

Ttulo para o grfico:


>> title('seno(x) e cosseno(x)')
Nome para o eixo x:
>> xlabel('grau (em radianos)')
Nome para o eixo y:
>> ylabel('variaveis dependentes')

62
Grficos

Resultado:

63
Grficos

Linhas de grade
>> grid

64
Grficos

Cores e estilos de linha, estilos de marcadores e legendas


b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star (none) no line
y yellow s square
k black d diamond
w white v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
65
Grficos
x = 0:1:10; x = 0:1:10;
y = x.^2 - 10.*x + 15; y = x.^2 - 10.*x + 15;
plot(x,y); plot(x,y,'r--',x,y,'bo');

66
Grficos

Ferramentas de edio

67
Grficos

Edio de desenhos

68
Exerccios

Sequncia rampa
Uma sequncia rampa transladada com declive B
definida como g (n) B(n n0 )
Sequncia rampa unitria e sequncias de rampa
transladada

Cdigo MATLAB :
n=-10:1:20;
f=2*(n-10);
stem(n,f);
69
Exerccios

70
Exerccios

Sequncia exponencial Real


Definida como: f (n) A(a)
n

Exemplo para A = 10 e a = 0.9, a sequncia


aproxima-se de zero quando n tende para infinito e
aproxima-se de mais infinito quando n tende para
menos infinito
Cdigo MATLAB:
n=-10:1:10;
f =10*(.9).^n;
stem(n,f);
axis([-10 10 0 30]); 71
Exerccios

72
Exerccios

Sequncia senoidal
Uma sequncia senoidal pode ser descrita como:
2n
f (n) A cos
N
Onde A um nmero real positivo (amplitude), N
o perodo, e a a fase.
Exemplo:
A = 5, N = 16
e a / 4.

73
Exerccios

Sequncia senoidal

Cdigo MATLAB:
1. n=-20:1:20;
2. f=5*[cos(n*pi/8+pi/4)];
3. stem(n,f);

74
Exerccios

75
Exerccios

Sequncia senoidal modulada


exponencialmente
Obtm-se atravs da multiplicao de uma sequncia
exponencial por uma sequncia senoidal.
Pode ser descrita por :
2n
g (n) A(a) n cos
N

Exemplo:
A = 10, N = 16, a = 0.9
/ 4.
76
Exerccios

Sequncia senoidal modulada


exponencialmente
Cdigo MATLAB:
1. n=-20:1:20;
2. f=10*[0.9 .^n];
3. g=[cos(2*n*pi/16+pi/4)];
4. h=f.*g;
5. stem(n,h);
6. axis([-20 20 -30 70]);

77
Exerccios

78
Grficos

Grficos 3D
Grficos de Linhas - Funo plot3
>> X = linspace(0, 10*pi, 300);
>> Y = sin(X);
>> Z = cos(X);
>> plot3(X,Y,Z)
>> grid

79
Grficos

Grficos 3D
Grficos de Superfcies - funco mesh
>> v = linspace(-10,10,20);
>> [X, Y] = meshgrid(v,v);
>> Z = X.^2 + Y.^2;
>> mesh(X,Y,Z)
Utilizamos a funo meshgrid para gerar
X e Y como matrizes com valores repetidos
que so utilizadas para gerar a matriz Z.

80
Grficos

Grficos 3D
Grficos de Superfcies - funco mesh
>> v = linspace(-10,10,20);
>> [X, Y] = meshgrid(v,v);
>> Z = X.^2 + Y.^2;
>> mesh(X,Y,Z)
Utilizamos a funo meshgrid para gerar X e Y
como matrizes com valores repetidos que so
utilizadas para gerar a matriz Z.

81
Grficos

Resultado

82
Grficos

Grficos 3D
Funo mesh - superfcies em rede
Funo surf - superfcies coloridas (opacas)
Funo surfl - superfcies coloridas com uma
fonte de luz.
Exemplo 1:
>> surf(X,Y,Z)
Exemplo 2:
>> colormap(gray)
>> surfl(X,Y,Z)

83
Grficos

Resultado

84
Grficos

Rotao em grficos 3D
Para rotacionar um grfico 3D primeiro clique no
boto presente na janela do grfico.
Aps isto, clique sobre o grfico e mantenha o
boto do mouse pressionado.
Uma caixa ir aparecer indicando a direo do
grfico.
Agora, basta movimentar o mouse para ajustar a
posio desejada do grfico.

85
Grficos

Superfcies de contorno
Funo contour - Gera superfcies de
contorno.
>> contour(X,Y,Z,30)
Os trs primeiros parmetros so as
matrizes com os dados para os grficos. O
quarto parmetro o nmero de
contornos.

86
Grficos

Resultado

87
Grficos

Superfcies de contorno
Funo pcolor - Grfico de pseudocores
>> pcolor(X,Y,Z)

88
PROGRAMAO EM MATLAB

89
Sumrio Programao em
Matlab
Projeto de programa
Arquivo de comando
Estruturas de controle
Funes definidas pelo usurio

90
Projeto de Programa

Diante de um novo problema, natural irmos direto


ao teclado sem perder tempo a respeito do
problema;

Em casos de problemas pequenos, possvel resolver


a situao com essa abordagem em tempo real;

Para problemas maiores, vale a pena pensar no


problema e na abordagem a ser usada antes de
escrever uma linha de cdigo;

91
Projeto de Programa

Projeto Top-down
Incio

Estabelea o problema que voc est tentando resolver

Defina as entradas e sadas requeridas

Projete o algoritmo

Converta o algoritmo em MATLAB

Teste o programa MATLAB resultante


Fim 92
Projeto de Programa

Algoritmo
Srie de aes executadas em uma ordem
especifica.
Pseudocdigo
Linguagem artificial e informal de representar o
cdigo de um programa.
til para desenvolver algoritmos que sero
convertidos em programas estruturados no
MATLAB.
93
Projeto de Programa

Exemplo de Pseudocdigo

1. Solicite ao usurio a temperatura em graus Fahrenheit


2. Leia a temperatura em graus Fahrenheit (temp_f)
3. temp_k in kelvins = (5/9) * (temp_f - 32) + 273.15
4. Escreva a temperatura em kelvin

Cdigo MATLAB:
temp_f = input('Enter the temperature in degrees Fahrenheit: ');
temp_k = (5/9) * (temp_f - 32) + 273.15;
fprintf('%6.2f degrees Fahrenheit = %6.2f kelvin.\n,temp_f,temp_k);

94
Arquivos de comando

Geralmente, utiliza-se o prompt do MATLAB para


introduzir os comandos.

Este procedimento simples para execuo de comandos


no prompt se torna altamente ineficiente quando a
complexidade do problema aumenta.

Para problemas simples podemos usar o prompt do


MATLAB e para os mais difceis deve-se utilizar o script-file
ou M-file, que tambm conhecido como arquivo de
comando ou arquivo M.

95
Arquivos de comando

Erro comum de Programao: Os


nomes dos arquivos de comando
precisam sempre terminar com a
extenso .m.

Exemplos:

programa1.m, exemplo1.m, etc.


96
Arquivos de comando

Como Criar um Arquivo M (M-file)


Para criar um arquivo M-file, deve-se seguir os
seguintes passos:
Abrir o MATLAB
Selecionar o menu File
Selecionar o item New e em seguida apontar para
M-file e clicar.

97
Arquivos de comando

Exemplo de script-file.

% script-file: circulo.m
% Este programa calcula a rea de um circulo
raio = 2.5;
area = pi*raio^2;
fprintf('Area do circulo = %.3f ', area);

98
Arquivos de comando

Como Executar um Arquivo M (M-file)


Para executar um arquivo M-file no MATLAB preciso
gravar o arquivo correspondente. Para isto, deve-se
selecionar o item Save Workspace As do menu File.
interessante dar preferncia a salvar o arquivo no
diretrio corrente do MATLAB, ou seja, na pasta work.
Para executar o arquivo M, basta digitar no prompt do
MATLAB o nome do arquivo salvado anteriormente, sem
a extenso .m. Feito isso o MATLAB gera o executvel
do programa.

99
Arquivos de comando

Para exemplificar, considere o arquivo


circulo.m. Digite no prompt do MATLAB o
nome do arquivo circulo. Ser apresentado
o executvel do programa.
>> circulo
Area do circulo = 19.635

100
Arquivos de comando

Em resumo, pode-se dizer que um programa


em MATLAB consiste na criao do arquivo
M-file utilizando-se o editor de texto e sua
respectiva chamada por linha de comando
no prompt do MATLAB.

101
Estruturas de controle

Controle de Fluxo
O controle de fluxo um recurso que permite que resultados
anteriores influenciem operaes futuras. Como em outras
linguagens, o MATLAB possui recursos que permitem o controle
de fluxo de execuo de comandos, com base em estruturas
de tomada de decises.

Sero apresentadas a seguir as seguintes estruturas de controle:


Ramificaes: if, elseif, switch
Laos: while, for

102
Estruturas de controle

Simbologia
Inicio e fim de uma estrutura de uma controle

Smbolo de deciso

Indica que aes sero executadas

103
Estruturas de controle

if
Estrutura de seleo para escolha de cursos de ao
especficos.
A estrutura de seleo if executa uma ao indicada
s quando a condio true (Verdadeira); caso
contrrio, a ao saltada.

104
Estruturas de controle

if

Testa a condio
Verdadeira
Condio Executa uma ao

Falsa

105
Estruturas de controle

Pseudocdigo
Se a nota do estudante for maior ou igual que 7.0
Imprima Aprovado

Cdigo no Matlab
if nota >= 7
fprintf(Aprovado);
end

106
Estruturas de controle

elseif Testa a condio

Verdadeira
Falsa
Condio

Executa outra
Executa uma ao
ao

107
Estruturas de controle

Pseudocdigo
Se a nota do estudante for maior ou igual que 7.0
Imprima Aprovado seno Imprima Reprovado
Cdigo no Matlab
if nota >= 7
fprintf(Aprovado);
else
fprintf(Reprovado);
end
108
Estruturas de controle

Exerccio: Escreva um programa MATLAB para avaliar


uma funo f(x,y) para quaisquer dos valores x e y
especificados pelo usurio. A funo f(x,y) definida a
seguir

109
Estruturas de controle

switch
Permite que um programador selecione um
bloco de cdigo a ser executado com base no
valor de um nico inteiro, caractere ou
expresso lgica

110
Estruturas de controle

switch (expr_switch) switch (expr_switch)


case expr_case1 case {expr_case1, expr_case2, expr_case3}
Declarao 1 Declarao 1
Bloco 1
Declarao 2 Declarao 2
... otherwise,
case expr_case2 Declarao 1
Declarao 1 Declarao 2
Bloco 2
Declarao 2 ...
... end
...
otherwise,
Declarao 1
Bloco N
Declarao 2
...
end
111
Estruturas de controle

Exemplo
switch (value)
case {1,3,5,7,9}
disp('The value is odd.');
case {2,4,6,8,10}
disp('The value is even.');
otherwise
disp('The value is out of range.');
end

112
Estruturas de controle

Laos so construes MATLAB que nos


permitem executar uma sequncia de
declaraes mais de uma vez.

Existem dois tipos de laos:


while
for

113
Estruturas de controle

while: um bloco de declaraes que se


repete indefinidamente, enquanto uma
condio for satisfeita.

A forma geral do while :


while expresso
...
... Bloco de cdigo
...
end
114
Estruturas de controle

while

Testa a condio

Verdadeira
Condio Executa uma ao

Falsa

115
Estruturas de controle

Lao for : Executa um bloco de declaraes


durante um nmero especificado de vezes.

for indice = expresso


Declarao 1
.... Corpo
Declarao n
end

116
Estruturas de controle
n: nmero de iteraes do lao for
cont: varivel de controle

cont = 1 Inicializao da varivel de controle

cont = 2
cont = 3

Verdadeiro
cont <= n Corpo do lao cont = cont + 1

Falso

117
Estruturas de controle

Exemplo: Calcular a soma dos 10 primeiros


inteiros.
Soma 1 2 3 4 5 6 7 8 9 10

soma = 0; % Inicializa a varivel soma com zero

for k = 1:10
soma = soma + k;
end

fprintf('A soma dos dez primeiros inteiros eh: %.2f', soma);

118
Estruturas de controle

Exemplo: Calcular o fatorial de um nmero


n.
n = 5;
fatorial = 1; % Inicializa a varivel soma com zero
for k = 1:n % Lao de repetio: n vezes
fatorial = fatorial*k; % Clculo do fatorial
end

fprintf(O fatorial de %.2f eh %.2f', n, fatorial);

119
Estruturas de controle

Exemplo: Calcular a soma dos 5 primeiros


inteiros impares.

soma = 0; % Inicializa a varivel soma com zero


for k = 1:2:9
soma = soma + k;
end

fprintf('A soma dos 5 primeiros inteiros impares eh: %.2f', soma);

120
Estruturas de controle

for X while
while: utilizado para repetir um trecho de cdigo
quando desconhecido o nmero de iteraes do
lao.
for: utilizado para repetir um trecho de cdigo
quando conhecido o nmero de iteraes do
lao.

121
Estruturas de controle

Break
Usada para controlar a operao dos laos for e while
Encerra a execuo do lao e passa o controle para a
prxima declarao logo aps o fim do lao.

122
Estruturas de controle

Uso do break
for k = 1:5
if k == 3;
break;
end
fprintf(k = %d\n, k);
end
disp(Fim do lao!);

123
Estruturas de controle

Uso do break
for k = 1:5 Sada:
if k == 3; k=1
break; k=2
end Fim do lao!
fprintf(k = %d\n, k);
end
disp(Fim do lao!);

124
Estruturas de controle

Continue
Usada para controlar a operao dos laos for
e while
Termina a passagem corrente pelo lao e
retorna o controle para o incio do lao.

125
Estruturas de controle

Uso do Continue
for k = 1:5
if k == 3;
continue;
end
fprintf(k = %d\n, k);
end
disp(Fim do lao!);

126
Estruturas de controle

Uso do Continue
for k = 1:5 Sada:
if k == 3; k=1
continue; k=2
end k=4
fprintf(k = %d\n, k); k=5
end Fim do lao!
disp(Fim do lao!);

127
Estruturas de controle

Exerccio: Implemente um algoritmo que


calcule a mdia e o desvio-padro de um
conjunto de dados de entrada.
dados de entrada: x = [3 4 5 -1]

mdia:

desvio-padro:

128
Srie de Fourier Complexa

Clculo da srie de Fourier na forma complexa

129
Srie de Fourier Complexa

disp('Algoritmo para calculo da serie de Fourier')


disp('na forma complexa para a funcao x(t)=-at^2+b*t+c')
disp('------------------------------------------------)
%
%Definicao e plotagem da funcao a ser expandida em serie de Fourier
%
a = input('Insira o valor do coeficiente a:');
b = input('Insira o valor do coeficiente b:');
c = input('Insira o valor do coeficiente c:');
t=0:0.01:100;
xt=-a.*t.*t+b.*t+c;
plot(t,xt)
ylabel('x(t)=-0.01t^2+t+10')
xlabel('t')
N=length(xt); 130
Srie de Fourier Complexa

%Calculo dos coeficientes Xn da serie de Fourier


harmonicos = input('Insira o numero de harmonicos desejados:');
for n = 1:harmonicos;
for k = 1:N;
integral(k) = exp(-j*2*pi*(n-1)*k/N)*xt(k);
end
X(n) = sum(integral)/N;
end

131
Srie de Fourier Complexa

%Calculo e plotagem das amplitude e fase de X


amplitude = abs(X);
fase = angle(X);
omega = 0:harmonicos-1;
figure
subplot(211), stem(omega,amplitude)
ylabel('Amplitude')
xlabel('Frequencia (multiplos de \omega_0)')
subplot(212), stem(omega,fase)
ylabel('Fase')
xlabel('Frequencia (multiplos de \omega_0)')

132
Srie de Fourier Complexa

%Calculo e plotagem das partes real e imaginaria de X


Xreal = real(X);
Ximag = imag(X);
figure
subplot(211), stem(omega,Xreal)
ylabel('X_{real}')
xlabel('Frequencia (multiplos de \omega_0)')
subplot(212), stem(omega,Ximag)
ylabel('X_{imaginario}')
xlabel('Frequencia (multiplos de \omega_0)')

133
Srie de Fourier Complexa

%Calculo da aproximacao da funcao original utilizando "m" harmonicos


m = input('Insira o numero de harmonicos desejados para reconstrucao
da funcao:');
for k=1:N;
for n = 1:m;
e(n) = X(n)*exp(j*2*pi*(n-1)*k/N);
end
funcao(k) = sum(e);
end

figure(1)
hold on
plot(t,funcao)

134
Funes definidas pelo usurio

Um programa pode ser dividido em subtarefas;

possvel codificar cada subtarefa como uma


funo separada;

Cada funo pode ser testada e depurada de


forma independente das outras funes do
programa;

135
Funes definidas pelo usurio

Benefcios
Teste independente das subtarefas;
Cdigo reutilizvel;
Isolamento de efeitos colaterais indesejados;

Uma funo MATLAB tipo especial de arquivo M


executado em um espao de trabalho
independente;

136
Funes definidas pelo usurio

Forma geral
function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...)
% H1 comment line
% Other comment lines
...
(Executable code)
...
(return)
(end)

137
Funes definidas pelo usurio

Exemplo funo dist2

function distance = dist2 (x1, y1, x2, y2)


%DIST2 Calculate the distance between two points
% Function DIST2 calculates the distance between
% two points (x1,y1) and (x2,y2) in a Cartesian
% coordinate system.

% Calculate distance.
distance = sqrt((x2-x1).^2 + (y2-y1).^2);

138
Funes definidas pelo usurio

Exemplo Script que chama a funo dist2

% Script file: test_dist2.m


% Get input data.
disp('Calculate the distance between two points:');
ax = input('Enter x value of point a: ');
ay = input('Enter y value of point a: ');
bx = input('Enter x value of point b: ');
by = input('Enter y value of point b: ');
% Evaluate function
result = dist2 (ax, ay, bx, by);
% Write out result.
fprintf('The distance between points a and b is %f\n',result);

139
Funes definidas pelo usurio

Exerccio: A localizao de um ponto cartesiano pode ser expressa por


coordenadas retangulares (x,y) ou polares (r,q), como ilustrado abaixo.

140
Funes definidas pelo usurio

Exerccio (continuao): A relao entre esses dois conjuntos de


coordenadas dada por

Escreva duas funes rect2polar e polar2rect, que convertam


coordenadas de retangular para polar, e vice-versa, com q expresso em
graus
141
MATEMTICA SIMBLICA

142
Matemtica Simblica

O Matlab permite o clculo simblico atravs


do Toolbox de Matemtica Simblica;

Esse toolbox utiliza o kernel do MAPLE;

O Matlab realiza todas as operaes


elementares entre expresses simblicas
utilizando a sintaxe comum

143
Matemtica Simblica

Operaes Matemticas
>> syms x
>> x+2*x
>> x*x - 5*x^2
>> sqrt(x^2)
>> cos(pi-x)

144
Matemtica Simblica

Substituio de varivel em uma expresso


simblica
>>subs(4*x^2-4,x,2)

Soluo simblica de equaes algbricas


(ex: x^2-2*x+1 = 0)
>>solve(x^2-2*x+1)

145
Matemtica Simblica

Grficos
>> ezplot(sin(3*x)+2*x)

146
Matemtica Simblica

Grficos
>> ezplot(sin(3*x)+2*x,[1 2])

147
Matemtica Simblica

Grficos
>> ezsurf(2*x^2-3*y^2-4)

148
Matemtica Simblica

Limite
>> syms x
>> limit(sin(x-1)/(1-x),x,1)

Srie
soma dos 100 primeiros termos de

>> symsum((4*n+1)/(n+3),n,1,100)

149
Matemtica Simblica

Derivada
>> syms x
>> diff(sin(2*x))

Derivada de ordem superior


>> diff(sin(2*x),2)

150
Matemtica Simblica

Derivadas Parciais
>> syms x y
>> g = x*y + x^2

>> diff(g) % computes g/x


>> diff(g, x) % also g/x
>> diff(g, y) % g/y

151
Matemtica Simblica

Integral
>> syms x

Integral de
>> int(6*x^3-2*x^2+1) % Indefinida
>> int(6*x^3-2*x^2+1,1,2) % Definida

>> int(exp(-x),0,inf)

152
Matemtica Simblica

Integral
>> syms x a b
>> f = x/(a*x+b)
>> pretty(f)
>> g = int(f)
>> pretty(g)
>> latex(g)
>> ccode(g)
>> fortran(g)

153
TOOLBOX

154
Toolbox de Processamento
de Imagens

Pixel - Regio da Imagem


I = imread('lena.jpg');
imshow(I);
impixelregion;

155
Toolbox de Processamento
de Imagens

156
Toolbox de Processamento
de Imagens
I = imread('lena.jpg');
Filtrando Imagens subplot(2,2,1);
imshow(I); title('Imagem Original');

%Criando um filtro
H = fspecial('motion',20,45);
%Filtrando a imagem com o filtro especificado
MotionBlur = imfilter(I,H,'replicate');
subplot(2,2,2);
imshow(MotionBlur);title('Motion Blurred Image');

H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate');
subplot(2,2,3);
imshow(blurred); title('Blurred Image');

H = fspecial('unsharp');
sharpened = imfilter(I,H,'replicate');
subplot(2,2,4);
imshow(sharpened); title('Sharpened Image'); 157
Toolbox de Processamento
de Imagens

158
Toolbox de Processamento
de Imagens
Inserindo um Rudo na imagem.
n = imnoise(I, 'gaussian');
imshow(n)

159
Toolbox de Processamento
de Imagens

160

Você também pode gostar