CURSO DE EXTENSO
Centro de Cincias Tecnolgicas
Departamento de Engenharia de Telecomunicaes
WorkSpace que mostra todas as variveis que est sendo utilizada no programa em
desenvolvimento.
Command History Mostra o histrico de comandos dados ao MATLAB na Janela de
Comandos.
Ctrl
Ctrl
Home
End
Del
Backspace
c.
Operao
Adio,
a+b
Subtrao,
a-b
Multiplicao, a.b
Diviso,
ab
Potncia,
ab
Smbolo
+
*
/ ou \
^
Exemplos
5+6
19 - 4.7
5.02 * 7.1
45/5 ou 5\45
3^4
Operador Relacional
>
>=
a
<
<=
a
==
~=
Descrio
maior que
maior ou igual
menor que
menor ou igual
igual a
diferente de
Operador lgico
&
|
~
Descrio
E
ou
No
Uso
Conjuno
Disjuno
Negao
Comando
format short
format long
format short e
format long e
format hex
format bank
format +
format rat
Formato
33.5000
33.50000000000000
3.3500e+001
3.350000000000000e+001
4040c00000000000
33.50
+
67/2
Comentrio
4 dgitos decimais (formato default)
16 dgitos
5 dgitos mais expoente
16 dgitos mais expoente
Hexadecimal
2 dgitos decimais
positivo, negativo ou zero
Racional
Os nomes das variveis devem consistir de uma nica palavra, conforme as regras expressas
na tabela 6:
Comentrios/Exemplos
Total, total, TOTAL e ToTaL so variveis
diferentes.
Sdtf65erkjh3448bafg
Var_2
X34
a_b_c
Variveis especiais
ans
pi
eps
flops
inf
NAN ou nan
ie j
nargin
nargout
realmin
realmax
Significado
Varivel usada para exibir os resultados
Nmero 3,14159
Menor nmero tal que, quando adicionado a 1, cria
um nmero maior que 1 no computador.
Armazena o nmero de operaes em ponto flutuante
realizadas.
Significa infinito
Significa no um nmero, por exemplo, 0/0.
Unidade imaginria 1
Nmero de argumentos de entrada de uma funo
Nmero de argumentos de sada de uma funo
Menor nmero que o computador pode armazenar
Maior nmero que o computador pode armazenar
e. Comentrios e pontuaes
Como em toda linguagem de programao, alguns smbolos possuem funes especficas. No
MATLAB os quatro smbolos abaixo so bastante utilizados importante entender suas
funcionalidades.
Um dos mais importantes smbolos o de % que permite incluir um comentrio e/ou
observao nas linhas de comando, isso facilita o entendimento do programa quando visto por outra
pessoa.
Smbolo
,
;
%
...
Funo
Vrgula Usado para separar comandos dados em uma mesma linha.
Ponto e Vrgula Se o ltimo caractere da declarao um ponto e vrgula,
a impresso que aparece no Command Window suprimida, mas a tarefa
realizada.
Por Cento Todo e qualquer caractere depois do smbolo de porcentagem
tomado como um comentrio.
comentrio.
Pode-se continuar uma certa expresso na prxima linha usando um espao
em branco e trs pontos,"...", ao final das linhas incompletas.
Tabela 8 Comentrio e pontuaes
f.
Funes Matemticas
Matemtica elementar;
Funes especiais;
Matrizes elementares e especiais;
Decomposio e fatorao de matrizes;
Anlise de dados;
Polinmios;
Soluo de equaes diferenciais;
Equaes no-lineares e otimizao;
Integrao numrica;
Processamento de sinais.
A maioria das funes so fceis de gravar, pois tem uma escrita muito parecida e algumas
at iguais de como elas so escritas matematicamente.
abs(x)
acos(x)
asin(x)
atan(x)
conj(x)
cos(x)
cosh(x)
exp(x)
valor absoluto de x.
arco cujo coseno x
arco cujo seno x.
arco cuja tangente x.
conjugado complexo
coseno de x.
coseno hiperblico de x.
exponencial ex.
floor(x)
gcd(x,y)
lcm(x,y)
log(x)
log10(x)
rem(x,y)
round(x)
sign(x)
sin(x)
sinh(x)
sqrt(x)
tan(x)
tanh(x)
arredondamento em direo ao -
mximo divisor comum de x e y.
mnimo mltiplo comum de x e y.
logaritmo de x na base e.
logaritmo de x na base 10.
resto da diviso de x por y.
arredondamento para o inteiro mais prximo
funo signum
seno de x.
seno hiperblico de x.
raiz quadrada de x.
tangente de x.
tangente hiperblica de x.
8
Este editor costuma ser mais utilizado pelos iniciantes no MATLAB, usurios mais experientes
tambm podem fazer uso diretamente da janela de Comando (Comand Window).
O Editor de texto permite que voc escreva as linhas de comando do programa que est em
desenvolvimento e cheque os resultados na Janela de Comandos aps ter pressionado a tecla F5.
ATENO!!! A matriz deve estar entre colchetes e os elementos serem separados por espaos ou
virgulas.
10
10
Para ter matrizes com mais linhas, basta colocar aps a primeira linha um ; (ponto-e-virgula) e
escrever a segunda linha da matriz, desta forma:
>> b = [1 2 3 ; 4 5 6] -> representar uma matriz 2x3 (ou seja, 2 linhas e 3 colunas).
Para clculos com valores escalares, podemos utilizar a matrix 1x1 e neste caso sem adio
dos colchetes.
>> x = 3
OBS: Note que tudo, que digitado no editor e executado, salvo automaticamente e
os resultados aparecem na janela de comando, isso serve para checarmos as respostas antes
de dar continuidade na escrita do programa.
Para lgebra comum a digitao das linhas de comandos intuitiva. Por exemplo:
Para representar no MatLab a expresso:
exatamente a seqncia de caracteres abaixo:
x2 + 5x 3
y=
4
11
11
(II)
Foi possvel notar que os valores de x aumentaram em intervalos iguais a 1. Outros intervalos
podem ser colocados, para isso, basta escrever o intervalo desejado entre dois pontos.
>> x = 1: intervalo desejado : 20
>> x = 1:0.5:20
12
12
a) 1 = +
b) 1 = 3 + 5
c) 1 = 4 (45)
d) 1 =
!
!
13
13
3.
MATRIZES E VETORES
X=primero : ltimo
X=primeiro:incremento:ltimo
Exemplo 1:
>> x = 1 : 5
gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Produzindo
X =
1
>>
x=1:10.5
x=
1
10
Exemplo 2:
>> z = 6 : -l : l
Z =
6
14
14
Exemplo 3:
Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo:
>> x=linspace(1,10.5,5)
x=
1.0000
3.3750
5.7500
8.1250
10.5000
Exemplo 4:
>> x=logspace(0,2,5)
x=
1.0000
3.1623
10.0000
31.6228
100.00
Exemplo 5:
>> x=[8
6
x=
8.0000
8.10
5-6j]
6.0000
8.1000
5.0000-6.0000i
Nos exemplos acima os vetores possuem uma linha e vrias colunas (vetores linha). Da mesma
forma podem existir vetores coluna (uma coluna e vrias linhas). Para se criar um vetor coluna
elemento por elemento estes devem estar separados por ( ; ). Por exemplo:
>> v=[1.5;-3.2;9]
v =
1.5000
-3.2000
9.0000
Esses vetores coluna podem tambm ser criados a partir dos comandos utilizados
anteriormente para criar os vetores linha, acompanhados do smbolo ( ' ), que o operador de
transposio. Exemplo:
>> y=(1:0.5:3)'
y =
1.0000
1.5000
2.0000
2.5000
3.0000
15
15
16
16
a. Endereamento de Vetores
No MATLAB, cada um dos elementos de um vetor podem ser acessados atravs de seu
ndice que identifica cada uma das colunas. Por exemplo:
>> x=1:10 x=
1
2
10
O comando x(3)acessa o terceiro elemento do vetor x criado acima, notem que a resposta
ser o valor 3, que exatamente o terceiro elemento do vetor x.
>> x(3)
ans =
3
>> x(5)
ans =
5
Esses elementos de um vetor tambm podem ser acessados em blocos, por exemplo, seja o vetor c:
>> c=linspace(10,40,7)
c =
10
15
20
25
30
35
40
>> c(3:5)
ans =
20
25
>>c(5:-2:1)
ans =
30
20
30
10
>> d=c' d =
10
15
20
25
30
35
40
17
17
>> d(5:-2:1)
ans =
30
20
10
3.3 Exerccios de Reviso e Fixao
1.
2.
3.
4.
18
b.
3.4 Matrizes
O como j falamos anteriormente, o MATLAB trabalha essencialmente com um tipo de objeto,
uma matriz numrica retangular ( 1x1; 2x2; 3x3; i ( linha) x j (coluna); etc).
Os elementos de cada linha da matriz so separados por espaos em branco ou vrgulas e
as colunas separadas por ponto e vrgula, colocando-se colchetes em volta do grupo de elementos
que formam a matriz. Por exemplo, entre com a expresso:
A =
1
4
7
2
5
8
3
6
9
As linhas das matrizes tambm podem ser definidas atravs dos comandos utilizados anteriormente
para se definir vetores linha. Por exemplo:
>> A=[1:3;linspace(4,9,3);0:.5:1] A
=
1.00
2.00
4.00
6.50
0
0.50
3.00
9.00
1.00
Os elementos de uma matriz (ou de um vetor) tambm podem ser definidos por operaes ou
funes matemticas. Por exemplo:
19
seguir:
O caracter apstrofo, " ' ", indica a transposta de uma matriz. Considere os exemplos a
>>A=[1 2 3; 4 5 6; 7 8 0]
A =
1
4
7
2
5
8
3
6
0
4
5
6
7
8
0
>> B = A'
B =
1
2
3
>> C = A + B
aceitvel, e o resultado da soma
C =
2
6
10
6
10
14
10
14
0
20
20
>> y = x 1
resulta em
Y =
-2
-1
1
Multiplicao
A multiplicao de matrizes indicada por " * ". A multiplicao x * y definida somente se a
segunda dimenso de x for igual primeira dimenso de y. A multiplicao
>> x'* y
aceitvel, e resulta em
Ans =
4
evidente que o resultado da multiplicao y' * x ser o mesmo. Existem dois outros produtos
que so transpostos um do outro.
>> x*y'
Ans =
2
0
-4
l
0
-2
-l
0
2
>> y*x'
Ans =
2
1
-1
0
0
0
-4
-2
2
O produto de uma matriz por um vetor um caso especial do produto entre matrizes. Por
exemplo A e X,
21
22
>> pi*x
Ans =
-3.1416
0
6.2832
Alm da multiplicao matricial e escalar, podemos ter a multiplicao por elemento de matrizes de
mesma dimenso. Esse tipo de operao feita utilizando-se um ponto ( . ) antes do operador de
multiplicao ( * ). Ou seja, se A e B so matrizes definidas por A=[ a11 a12 ... a1n ; a21
a22 ... a2n ; ... ; am1 am2 ... amn] e B=[ b11 b12 ... b1n ; b21 b22 ... b2n ; ... ; bm1
bm2 ... bmn ], ento A.*B =aij*bij. Por exemplo:
>> A.*B
ans =
1
8
21
8
25
48
21
48
0
Diviso
Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma matriz quadrada
no singular, ento A\B e B/A correspondem respectivamente multiplicao esquerda e
direita da matriz B pela inversa da matriz A, ou inv(A)*B e B*inv(A), mas o resultado obtido
diretamente. Em geral,
Z =
-1
0
2
A diviso por elemento entre matrizes definida de maneira similar multiplicao por
elemento, ou seja, A./B= aij/bij e A.\B= aij\bij , onde A e B tm mesma dimenso.
3.5. Elementos das Matrizes
Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre
parnteses. Por exemplo, dada a matriz A:
A =
1
4
7
2
5
8
3
6
9
22
A declarao do tipo
A =
1
4
7
2
5
8
3
6
10
>> A(1:3,2)
Ans =
2
5
8
>> A(1:3,2:3) uma submatriz 3x2, que consiste das trs linhas e das ltimas duas colunas
de A.
Ans =
2
5
8
3
6
10
>> A(1:2,:)
Ans =
1
4
2
5
3
6
Que uma submatriz 2x3 que consiste da primeira e segunda linhas e todas colunas da
matriz A.
Funes ou Comandos: o MATLAB possui algumas funes que se aplicam a matrizes como,
por exemplo, as funes size (fornece o nmero de linhas e colunas de uma matriz) e length
(fornece o maior valor entre o nmero de linhas e colunas).
O MATLAB tem tambm funes que se aplicam individualmente cada coluna da
matriz produzindo um vetor linha com os elementos correspondentes ao resultado de cada
coluna. Se a funo for aplicada transposta de da matriz, os resultados sero relativos a
cada linha da matriz. Se o argumento da funo for um vetor, o resultado ser um escalar.
Algumas dessas funes so:
funo
sum
prod
mean
std
max
min
sort
descrio
soma dos elementos
produto dos elementos
mdia aritmtica
desvio padro
maior elemento
menor elemento
ordena em ordem crescente
23
23
Submatrizes.
Sendo B uma matriz 5x5 unitria, podemos defini-la atravs da seguinte funo:
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
>> C=zeros(3,4)
=
0
0
0
0
0
0
C
0
0
0
0
0
0
Para que o MATLAB gere uma matriz de nmeros aleatrios entre 0 e 1, utilizamos a funo rand
(veja tambm a funo randn, utilizando o comando help). Exemplo:
>> D=rand(2,3) D
=
0.2190
0.6789
0.0470
0.6793
0.9347
0.3835
24
24
Note que o eixo das abscissas no reflete a faixa de valores que foi usada para produzir o
vetor x, at . Ao invs disso, o plot assume que o eixo das abscissas deve ser o ndice do vetor.
Para plotar os valores corretos no eixo das abscissas, basta usar uma pequena variao do comando
plot, conforme mostrado abaixo:
25
Quando passamos dois vetores para plot , a funo assim que o primeiro vetor o das abscissas, e
o segundo vetor o das ordenadas. O resultado :
Podemos gerar dois grficos na mesma tela usando apenas o comando plot. Mais a frente
veremos outras maneiras de gerar mais de um grfico.
x=0:0.1:2*pi;
y=sin(x);
z=cos(x)
plot(x,y,x,z)
%
%
%
%
O resultado ficaria:
26
26
>>
>>
>>
>>
x=0:0.1:2*pi;
y=sin(x);
plot(x,y)
title('Exemplo de grfico')
O resultado ser:
Estilos de Linha e Smbolo: Os tipos de linhas, smbolos e cores usados para plotar grficos
podem ser alterados caso os padres estabelecidos automaticamente pelo MATLAB no sejam
satisfatrios.
Segue abaixo as tabelas:
27
27
x=0:0.1:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'rd')
title('Grafico vermelho')
%
%
%
%
Posso alterar duas formas, como por exemplo: Um grfico com Marcador do tipo quadrado e a
linha pontilhada.
x=0:0.1:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'b:s')
title('Grafico square, linha pontilhada')
28
28
x=0:0.1:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'b:s',x,z,'rv--')
title('Graficos com legenda')
xlabel('Eixo x')
ylabel('Seno e Cosseno')
legend('seno','cosseno')
Teramos o seguinte resultado:
c.
Vimos anteriormente como plotar mais de um grfico na mesma tela usando o comando
plot. Veremos agora um outro comando que permite que os grficos sejam distribudos
organizadamente da forma que acharmos conveniente, sendo que neste caso, a grande vantagem
podermos dar ttulos e nomes de eixos personalizados para cada grfico, pois os mesmo so
plotados separadamante.
O Comando Subplot: O comando subplot divide a janela de grficos em & linhas e % colunas,
disponibilizando os grficos na ordem que se quer.
Exemplo: Subplot (m,n,ordem) significa dizer que este grfico estar m-sima linha e n-sima
coluna, sendo ordem ordenao deste grfico.
O uso deste comando ficar mais fcil de se entender analisando as linhas de comando abaixo:
29
29
x=0:0.1:3*pi;
y=sin(x);
z=cos(x);
w=3*cos(x);
%%%%%%%%%%%
subplot(2,2,1)
plot(x,y,'bo')
title('Celula 1: seno')
%%%%%%%%%%%
subplot(2,2,4)
plot(x,z,'rv--')
title('Celula 4: cosseno')
%%%%%%%%%%%
subplot(2,2,2)
plot(x,y,x,w)
title('Celula 2: sen e 3*cos c/ mesma escala')
%%%%%%%%%%
subplot(2,2,3)
plotyy(x,y,x,w)
title('Escala esq de seno, dir de 3*cosseno')
O resultado ficar assim:
30
30
d. Grficos em Barra
Para construir grficos em barra deve-se usar o comando bar(x,y), onde x e y so
respectivamente dados de abscissa e ordenada. Segue um exemplo:
x=-1.9:0.2:1.9;
y=exp(-x.*x);
bar(x,y)
title('Grafico de barras')
% cria x
% cria y
f.
31
31
2. Grficos Tridimensionais
O MATLAB tambm cria grficos tridimensionais. Estes grficos so mais complexos, meu
conselho par a criao destes grficos que o programador conhea bem os comandos, se for o
caso use o help do MATLAB para tirar possveis dvidas. Seguem alguns comandos para gerao de
grficos Tridimensionais mais comuns:
a. Comando Mesh e Comando Surf
O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da
matriz Z em relao ao plano definindo pelas matrizes X e Y. O comando Surf (X,Y,Z) cria uma
superfcie colorida para o mesmo grfico plotado no comando anterior. Por exemplo:
32
32
b. O Comando Plot3
Segue a mesma linha do comando plot bidimensional, mas gera uma visuzlizao 3D,
veremos um exemplo:
t=0:0.01:6*pi;
plot3(sin(t), cos(t), t)
Segue o resultado:
c.
33
33
'() = 3 ( 0.5 * + 6
No MATLAB, um polinmio representado por um vetor linha contendo seus coeficientes
em ordem decrescente, ento ficaria assim:
'() = + 6,
'() = ( 2) . ( + 3)
As razes da equao so os valores de x para os quais a funo f(x) igual a zero, ou seja,
= 2 e = 3.
34
34
Se a funo f(x) for um polinmio de grau n, ela ter exatamente n razes. Estas n razes
podem conter mltiplas razes ou razes complexas.
Dada a representao de polinmios discutida no sub-item anteiror, as razes do polinmio
so encontradas usando-se o comando roots do MATLAB.
J que tanto um polinmio quanto suas razes so vetores no MATLAB, o MATLAB adota a
conveno de colocar os polinmios como vetores linha e as razes como vetores coluna.
Para ilustrar este comando vamos determinar as razes do seguinte polinmio:
No MATLAB:
'() = * 2 3 + 10
>> p = [1,-2,-3,10];
r = roots(p)
Lembrando que estes comandos podem ser dados de um s vez, conforme mostrado
abaixo:
>> r = roots([1,-2,-3,10]);
Os valores das razes sero: 2 + ,, 2 , e 2.
Comando Poly
Agora, dadas as razes de um polinmio, tambm possvel construir o polinmio
associado. No MATLAB, o comando poly encarregado de executar essa tarefa, onde o argumento
do comando poly o vetor contendo as razes do polinmio que desejamos determinar.
Sejam as razes de um polinmio -1, 1 e 3. Para determinar este polinmio, escreveramos
no MATLAB,
>>clear all
>>clc
>>x=linspace(-4,3);
>>p=[1 4 -6 -12];
>>r=polyval(p,x);
>>plot(x,r)
>>title('p(x)=x^3+4x^2-6x-12')
>>xlabel('x')
>>ylabel('p(x)')
35
35
O grfico seria:
ATENO!!! Quando for um escalar ou um vetor, polyval consegue calcular o valor da funo
operando elemento por elemento. Mas quando for uma matriz usa-se o comando polyvalm
Uma soluo alternativa que daria a mesmo resultado seria:
>>clear all
>>clc
>>x=linspace(-4,3);
>>p=x.^3+4*x^2-6*x-12;
>>plot(x,p)
>>title('p(x)=x^3+4x^2-6x-12')
>>xlabel('x')
>>ylabel('p(x)')
1.4. Operaes Aritimticas
Podemos trabalhar com polinmios armazenando seus coeficientes em vetores, e trabalhar
apenas com estes vetores.
a) Soma e subtrao
O MATLAB no apresenta um comando especfico par somar polinmios. Para somar ou
subtrair polinmios basta somar ou subtrair seus respectivos coeficientes. A soma ou subtrao
padro funciona se ambos os vetores polinomiais forem do mesmo tamanho. Supondo os polinmios
a seguir:
() = * + 2 3 + 4
() = * + 4 9 + 16
36
36
a. '() = * 5 + 2 + 8
b. 5() = + 4 + 4
c. () = 2 + 3 ( 11 * + 27 + 10 24
d. ,() = 2 3 * + 4 1
37
37
3. Matemtica Simblica
Agora possvel instruir ao MATLAB que manipule expresses matemticas, sem de fato
usar nmeros, que lhe permitam calcular com smbolos matemticos, alm de nmeros. Esse
processo freqentemente chamado de matemtica simblica. Aqui esto alguns exemplos de
expresses simblicas:
( )
3 + 5 1
: = ;
' = < ;
A toolbox de Matemtica Simblica uma coleo de funes para o MATLAB usadas para
manipular e resolver expresses simblicas. H diversas ferramentas para combinar, simplificar,
derivar, integrar e resolver equaes diferenciais e algbricas.
Outras ferramentas so utilizadas em lgebra linear para derivar resultados exatos para
inversas, determinantes e formas cannicas e para encontrar os autovalores de matrizes simblicas,
sem o erro introduzido pelo clculo numrico.
A aritmtica de preciso varivel que calcula simbolicamente e retorna um resultado para
qualquer grau de preciso especificado, tambm est disponvel no MATLAB.
Quando voc pedir ao MATLAB para executar alguma operao simblica, ele ento
retornar o resultado para a janela de comando do MATLAB. Por isso, fazer manipulaes simblicas
no MATLAB uma extenso natural do modo como voc usa o MATLAB para processar nmeros.
Expresses simblicas so strings de caracteres ou conjuntos de strings de caracteres que
representam nmeros, funes, operadores e variveis. as variveis no tm de ter valores
previamente definidos. Equaes simblicas so expresses simblicas que contm um sinal de
igualdade. A aritmtica simblicas a prtica de resoluo dessas equaes por meio da aplicao
de regras conhecidas e de identidades a determinados smbolos, exatamente da forma que voc
aprendeu a resolv-las em lgebra e clculo. Matrizes simblicas so conjuntos cujos elementos so
expresses simblicas.
38
38
>>
>>
>>
>>
>>
clear all
clc
x=sym('x');
y=x^2-2*x-15;
resp=solve(y)
A resposta no Command Window ser:
resp =
-3
5
39
39
4. Soluo de Derivadas
Para o clculo de derivadas, o MATLAB usa o comando diff(f,n). Esse comando calcula a
derivada n-sima da funo. Para a primeira derivada, o n pode nem ser colocado, vejamos
exemplos:
Clculo da 1 derivada de: ' =
a
>> syms x
>> f = x.^2
>> y = diff (f)
Clculo da 2 derivada de: ' =
a
>> syms x
>> f = x.^2
>> y = diff (f,2)
5. Soluo de Integrais
Para o clculo de integrais, o MATLAB usa o comando int (f,i,j). Esse Comando, calcula a
integral definida no intervalo de a a b da funo, respectivamente os limites inferior e superior.
Vejamos exemplos:
Calculo da integral indefinida de: ' =
>> syms x
>> f = x.^2
>> y = int (f)
Calculo da integral de: ' = , definida no intervalo de [1 , 3].
>> syms x
>> f = x.^2
>> y = int (f,1,3)
6. Soluo de Transformadas de Laplace
Para se calcular a Transformada de Laplace de uma determinada funo y no tempo,
utilizamos o comando Laplace (y) para encontrar a funo S no domnio dos nmeros complexos.
Por Exemplo: Vamos calcular a transformada de Laplace de '(=) = 5$ >? , no MATLAB,
escreveremos:
>> syms t
>> Ft = 5*exp(-2*t)
>> Fs = laplace(Ft)
>> pretty (Fs)
40
40
41
41
Os grficos gerados so esses acima. Confira que as curvas condizem com as expresses
tericas (fica como exerccio a demonstrao).
Exemplo 2: Anlise de uma funo de transferncia genrica
42
42
Para obtermos o diagrama de Bode, temos que montar a funo de transferncia primeiro, como no
exemplo anterior. Entretanto, os polinmios do numerador e denominador no esto desenvolvidos
(temos a forma fatorada, ao invs disso). A fim de evitar dois trabalhos de distributivas, basta usar a
funo poly apresentada em 4.3, que retorna os coeficientes do polinmio dadas as razes
(cuidado: as razes duplas devem ser passadas duas vezes!).
>>
>>
>>
>>
>>
vet_raizesNumerador = [ 0 1 1 10000 ] ;
vet_raizesDenominador = [ 10 100 100 1000 ] ;
vet_coefPolinomioNumerador = 250 * poly( vet_raizesNumerador ) ;
vet_coefPolinomioDenominador = poly( vet_raizesDenominador ) ;
H = tf( vet_coefPolinomioNumerador , vet_coefPolinomioDenominador )
Transfer function:
250 s^4 - 2.501e006 s^3 + 5e006 s^2 - 2.5e006 s
-----------------------------------------------s^4 - 1210 s^3 + 222000 s^2 - 1.21e007 s + 1e008
>> bode( H ) ;
43
43
44
44
Para decidir qual corretora obteve melhor desempenho, alguns critrios foram considerados
como:
visualmente perceptvel que ao longo dos dezoito dias a corretora B apresentou menor
variao de lucro. Facilmente tambm observaramos que a Corretora A obteve o maior percentual de
lucro de aes. Contudo, no possvel sabermos quantitativamente estas e outras informaes
como a mdia de percentagem do lucros das aes para cada corretora apenas com a observao
dos grficos. Para isso temos que calcular as grandezas necessrias para determinar qual corretora
obteve melhor desempenho. Seria um pouco trabalhoso se o fizssemos manualmente. O MATLAB
pode perfeitamente auxiliar-nos nestes casos porque contm uma srie de funes que contribuem
para uma anlise mais precisa dos dados. Algumas destas funes podem ser aplicadas ao exemplo
das corretoras como as mostradas a seguir:
a) Qual a mdia percentual de lucro das aes durante os 18 dias de observao?
O comando mean: calcula a mdia aritmtica de um grupo de valores. Assim, para as
corretoras A e B, temos:
>>mean (corretoraA)
ans =
55.7222
>>mean (corretoraB)
ans =
55.4444
>>max(corretoraA)
ans =
70
>>max(corretoraB)
ans =
61
E a menor percentagem?
As menores margens de lucro obtidas por cada corretora so dadas pelo comando min:
>>min(corretoraA)
ans =
38
>>min(corretoraB)
ans =
50
45
45
>> std(corretoraA)
ans =
7.6758
>> std(corretoraB)
ans =
3.1478
46
46
A (270B 360B ) =
Sempre poderemos achar a probabilidade do ponteiro parar num ponto qualquer de um
intervalo, por menor que seja, compreendido entre os nmeros a e b, de forma que:
47
47
b) Modelo Normal
A varivel X tem distribuio normal com parmetros E e @ , denotada por X: (E, @ ), onde < E < + e 0 < @ < +, se sua f.d.p. dada por:
48
48
2. Suponha que as amplitudes de vida de dois aparelhos eltricos, D1 e D2, tenham distribuies
N(42, 36) e N(45, 9), respectivamente Se o aparelho para ser usado por um perodo de 45 horas,
qual aparelho deve ser preferido? E se for por um perodo de 49 horas?
49
49
A seguir, utilizando esta notao, mostrado um fluxograma com o algoritmo para clculo
do valor da compra de um cliente numa loja com artigos em promoo. O valor do desconta fornecido
pela loja varia de acordo com o nmero de peas adquiridos pelo comprador.
50
50
Digitando a linha de comando fibno faz com que o MATLAB execute os comandos, calculando
os 16 primeiros nmeros da srie de Fibonacci, e crie um grfico. Aps a execuo do arquivo estar
completa, as variveis f e i ficam mantidas no espao de trabalho.
Arquivos Funo
Um arquivo-M que contm a palavra function no incio da primeira linha um arquivo funo.
Uma funo difere de um script pelos argumentos que devem ser passados e pelas variveis que so
definidas e manipuladas, que so locais funo e no podem ser operadas globalmente no espao
de trabalho. O arquivo media.m um exemplo de um arquivo funo que possui as linhas de
comando:
51
51
function y = media(x)
% Media dos elementos de um vetor ou uma matriz
% Para vetores, media(x) retorna a media dos elementos de x
% Para matrizes, media(x) retorna um vetor contendo a media dos elementos
% de cada coluna da matriz x
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
A existncia deste arquivo define uma nova funo chamada media. A nova funo media
usada como qualquer outra funo do MATLAB. Por exemplo, se z um vetor de inteiros de 1 a 99,
>> z = 1:99;
o valor mdio deste encontrado atravs do comando
>> media(z)
que resulta em
ans =50
As informaes abaixo so para o arquivo media.m, mas o princpio vlido para todos os arquivos
funo:
A primeira linha declara o nome da funo e os argumentos de entrada e sada. Sem esta
linha, o arquivo um arquivo script, e no um arquivo funo.
O smbolo % indica que o restante da linha um comentrio e deve ser ignorado.
As primeiras linhas descrevem o arquivo-M e so mostradas quando voc digita help media.
As variveis m, n e y so locais a media e no aparecem no espao de trabalhoaps media
ter terminado. (Ou, se elas existem, permanecem inalteradas.).
No necessrio definir os inteiros de 1 a 99 em uma varivel de nome x. No exemplo, a
funo media foi usada com uma varivel z. O vetor z que contm os inteiros de 1 a 99 foi
passado ou copiado para media onde ele se tornou uma varivel local de nome x.
Strings de Texto
Strings de texto so entradas no MATLAB entre aspas simples ( ). Por exemplo,
>> s = Engenharia
resulta em
s =
Engenharia
52
52
10
indica que s possui cinco elementos. Os caracteres so armazenados com seus valores ASCII, e a
funo abs e a funo double mostram estes valores:
>> f = abs(s)
f =
69
110
103
101
110
104
97
114
105
97
>> char(f)
ans =
Engenharia
Utiliza-se colchetes ou a funo strcat para juntar variveis de texto em strings maiores:
53
53
Uma alternativa a estrutura if a estrutura switch. Ela mais interessante para executar
comandos com base no valor de uma varivel ou expresso.
switch expressao
case valor1
bloco1
case { valor2 , valor3 }
bloco2
otherwise
bloco3
end
No caso acima, o bloco 1 executado se o valor da expresso for valor1. Caso contrrio, se for
valor2 OU valor3, o bloco 2 executado. Caso contrrio, o bloco 3 executado. Perceba que,
diferente do que ocorre na linguagem C, os blocos 2 e 3 no so executados caso o valor 1 seja
verdadeiro! No h, portanto, necessidade de breaks!
Para executar o mesmo bloco de comandos mais de uma vez, usamos as estruturas de loop
(lao). No caso da estrutura while, o bloco executado enquanto a condio for verdadeira.
CUIDADO: se a condio for sempre verdadeira, o bloco rodar eternamente, at que algum
aborte o programa
while condicao
bloco
end
Finalmente, a estrutura for usada para executar um bloco de comandos numa quantidade
definida de vezes. Atravs de um contador (ou iterador por isso a letra i usada) declarado no
incio como um vetor, estabelecemos quantas vezes o bloco ser executado. Ao mesmo tempo,
declaramos os valores do contador ao longo dos ciclos. Observe alguns casos possveis:
54
54
Para encerrar este tpico, muito importante frisar que o uso de for e while pode e deve
ser evitado na maioria dos casos. Isso porque o MatLab possui funes otimizadas para receber
vetores e matrizes, efetuando assim o clculo em todos os elementos de uma s vez! Usar loops e
chamar a funo para cada elementos individualmente deixa o cdigo mais extenso e complicado, e
pode at retardar o processamento.
A tabela abaixo mostra alternativas para quem est acostumado demais com algoritmos da
linguagem C:
55
55
r para leitura
w para gravao
a para atribuio
r+ tanto para leitura como para gravao
Outras strings de permisso podem ser obtidas com o comando help fopen.
A funo fopen retorna um identificador de arquivo, que um inteiro positivo atribudo ao
arquivo pelo sistema operacional. Este identificador de arquivo basicamente um atalho para se
referenciar o arquivo. As funes de E/S de arquivo do MATLAB utilizam o identificador como
argumento para identificar o arquivo aberto para leitura, escrita ou encerramento.
Se o arquivo no pode ser aberto, fopen retorna -1 como identificador. aconselhvel testar o
identificador cada vez que um arquivo aberto.
Um segundo valor que retornado pode fornecer informao adicional sobre erros. Por
exemplo, se MATLAB no encontra o arquivo arquivo.txt, o comando
atribui -1 para fid, e message recebe uma string com a forma abaixo
No such file or directory.
Uma vez aberto, o arquivo fica disponvel para leitura e gravao. Quando se termina a leitura ou a
gravao, usa-se fclose para fechar o arquivo. Por exemplo,
>> status = fclose(fid)
fecha o arquivo associado com o identificador fid, e
>> status = fclose(all)
fecha todos os arquivos abertos. Ambas as formas retornam 0 se esta operao for realizada com
sucesso, ou -1 se algo de errado acontecer.
Leitura de Arquivos
A funo fread l arquivos de dados binrios. Na sua forma mais simples, ele lum arquivo
inteiro em uma matriz. Por exemplo,
>> fid = fopen(texto.txt,r);
>> A = fread(fid);
>> status = fclose(fid);
l todos os dados do arquivo texto como caractere, e os escreve em uma matriz A.
56
56
Dois argumentos opcionais a fread fazem o controle do nmero de valores lidos e a preciso de cada
valor.
>> fid = fopen(arquivo.txt,r);
>> A = fread(fid,100);
>> status = fclose(fid);
l os 100 primeiros valores de dados em um vetor coluna A.
Substituindo o nmero 100 pelas dimenses de uma matriz [10,10], faz com que sejam lidos os
mesmos 100 elementos, armazenando-os em uma matriz 10x10. E
>> A = fread(fid,Inf)
l at o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o tamanho do
argumento produz o mesmo efeito.
>>
>>
>>
>>
>>
>>
x = [0:0.1:1];
y = [x; exp(x)];
fid = fopen(exptable.txt,w);
fprintf(fid,Exponential Function\n\n);
fprintf(fid,%6.2f%12.8f\n,y);
status = fclose(fid);
cria um arquivo de texto contendo uma pequena tabela para a funo exponencial.
A primeira chamada a fprintf escreve o ttulo, seguido por dois comandos ENTER, o qual definido
por \n. A segunda chamada escreve a tabela propriamente dita. As strings de controle de formato
definem o formato de cada linha da tabela como:
57
57
fid = fopen(exptable.txt,r);
title = fscanf(fid,%c,20)
[table,count] = fscanf(fid, %f %f ,[2,11]);
table = table
status = fclose(fid);
A linha do ttulo combina com o especificador %c na primeira chamada fscanf. A segunda chamada
entra com a tabela de valores. count retorna o nmero de valores combinados.
58
58
O MATLAB deve ser executado a partir do Excel para ativar o link. Pode-se enviar dados para o
MATLAB selecionando uma ou vrias clulas e usando o boto putmatrix, ento aparecer uma
janela pedindo o nome da varivel a ser armazenada com estes dados.
Para receber dados deve-se utilizar o boto getmatrix e informar a varivel onde esto
armazenados os dados que quer-se buscar. possvel ainda utilizar funes do MATLAB no
Excel. Para tanto, usa-se o boto evalstring. As variveis de sada devem ser armazenadas
no workspace do MATLAB, ento deve-se atribuir um nome varivel para depois import-la para o
Excel.
2. Aplicaes Independentes
Ferramenta GUIDE
Esta uma mais uma das ferramentas poderosas do MATLAB, que permite a construo
de uma interface amigvel para o usurio e o que melhor, de uma forma amigvel, ou seja,
utilizando uma interface grfica, o Graphical User Interface (GUI), para criar outras.
59
59
Conceitos Bsicos
O Handle Graphics uma estrutura orientada para objeto que permite a criao e
manipulao de grficos e imagens. Os Object Handles podem ser considerados como
indicadores nicos atribudos pelo MATLAB para cada objeto, permitindo desta maneira
referenciar estes objetos para manipul-los. Existem 3 formas de se obter um handle:
a) na criao do objeto
b) atravs de comandos utilitrios
c) utilizando o findobj
Para o caso de se desejar obter o handle do objeto na sua criao, basta armazen-lo um
uma varivel, pois os handles so retornados automaticamente pelas suas funes de criao.
>> p = plot([1:10],sin(2*[1:10]));
Neste caso o handle do grfico da funo seno ficar armazenado na varivel p,
portanto se desejar-mos fazer qualquer modificao no grfico utilizando seu handle, basta
utilizar p.
A segunda forma de se obter um handle via comandos utilitrios:
1) gcf retorna o handle da figura corrente
2) gca retorna o handle dos eixos correntes
3) gco retorna o handle do objeto corrente
4) gcbf obtm handle para CallBack Figure
5) gcbo obtm handle para CallBack Object
A terceira forma atravs do comando findobj, que procura na figura o objeto atravs
de propriedades especficas do objeto de interesse (como o TAG do objeto, por exemplo) e retorna o
seu handle.
Este comando ir procurar atravs de toda a hierarquia de objetos na figura at encontrar
o objeto que possua as propriedades especificadas, porm, esta busca pode ser mais rpida se
tambm for informado o objeto a partir do qual se deve iniciar a busca. A sua sintaxe a seguinte:
>> var_handle = findobj(ponto_incio,propriedade,valor)
Exemplo:
>> plot([1:10]);
>> h = findobj(gca, 'Color',[0 0 1]);
>> set (h, Color, [1 0 0]);
Neste exemplo, o handle da linha do grfico identificado pelasua cor azul e armazenado
em h, e em seguida, atribuda a cor vermelha para a mesma.
Como visto no exemplo, uma das formas de manipularmos objetos grficos atravs
do comando set, enquanto que para pegarmos valores especficos de uma propriedade de um
objeto, utiliza-se o comando get, em ambos os casos o handle funciona como endereo onde ser
feita a ao.
60
60
Uma maneira mais simples de trabalhar com os objetos grficos atravs do Graphical
User Interface (GUI) que executado atravs do comando guide
O que uma GUI?
uma ferramenta que permite construir interfaces grficas de interao com o utilizador. A GUI
torna os programas mais fceis de usar, pois fornecem uma aparncia consistente e com controles
intuitivos (botes, rguas, caixas de listagem, menus, etc).
Projetando uma GUI
muito importante planejar a GUI que voc deseja construir, antes de comear o programar. Um
projeto de GUI pode ser feito com papel e caneta, como um rascunho da interface que voc deseja
que o programa tenha.
A idia de um esboo de uma GUI:
61
61
MATLAB Compiler
Normalmente um M-file, pode ser compartilhado com outras pessoas de um ambiente
corporativo ou de uma instituio de ensino, quer seja internamento ou externamente a esses
ambientes, desde que essas pessoas tambm disponham de uma licena MATLAB.
Entretanto como podemos compartilhar essas aplicaes (M-files) caso os usurios no
tenham uma licena MATLAB? A soluo seria criar aplicaes stand-alone que funcionem de forma
independente sem precisar do MATLAB.
O MATLAB Compiler a plataforma principal de criao de aplicaes Stand-alone
convertendo programas MATLAB, sendo possvel tambm a criao de aplicaes C++ que podem
ser integradas em outros softwares.
Aps criado o programa MATLA, faremos uso do comando deploytool.
62
62
63
63