Você está na página 1de 85

Introduo Soluo de Problemas de Engenharia Introduo Soluo de Problemas de Engenharia Introduo Soluo de Problemas de Engenharia

Faculdade de
Engenharia
Laboratrio de
Engenharia Eltrica
Programa Prodenge / Sub-Programa Reenge
Universidade do Estado do Rio de Janeiro
Curso de
MATLAB 5.1
Curso de
MATLAB 5.1
2
a
EDIO
Revista e Ampliada
2
a
EDIO
Revista e Ampliada
Curso de MATLAB
I
AGRADECIMENTOS
Estas notas sobre o uso da verso 5.1 do MATLAB so o resultado do trabalho
persistente dos alunos da Faculdade de Engenharia da UERJ, bolsistas de iniciao
Tecnolgica do Projeto REENGE - Joana Figueiredo Konte, Jorge Lus Pinheiro
Teixeira, Pat Evie Alves - e da estagiria Luciana Faletti que se encarregaram de dar
corpo segunda edio de um curso de Introduo Soluo de Problemas de
Engenharia usando a metodologia da Profa. Delores M. Etter, autora da obra
Engeneering Problem Solving with MATLAB que inspirou, de perto, a confeco desta
apostila. A este grupo entusiasmado de jovens, aderiram outros estagirios do
Laboratrio de Engenharia Eltrica, como Hlio Justino Mattos Filho. A todos eles os
cumprimentos pelo xito e pela forma como se envolveram de corpo e alma na execuo
das tarefas. O sucesso obtido na implementao de ambos os cursos no sem dvida
fruto de uma obra isolada. Dela participaram, com entusiasmo a equipe tecnico-
administrativa do Laboratrio de Engenharia Eltrica, cujos membros contriburam com
a dedicao que lhes peculiar, atravs do suporte e infra-estrutura e o envolvimento
direto com os alunos e com a coordenao do projeto. Um muito obrigado equipe
formada pelos funcionrios Alberto Avelar Santiago, Andr Vallim Stachlewski, Jos
Emlio Gomes, Jair Medeiros Jnior, Joo Elias Souza da Costa, Luiz Roberto Franco
Fagundes Filho, Marcos Augusto Mafra, Antnio Marcos Medeiros Corra, Sueli
Ferreira dos Santos e pela Srta. Carla Aparecida Caldas de Almeida, do curso de Ps-
Graduao latu-senso em Engenharia Mecatrnica da UERJ. Uma palavra de
reconhecimento especial ao diretor Dr. Nival Nunes de Almeida, coordenador geral do
REENGE, pelo apoio e pelo incentivo dado viabilizao de inmeras atividades no
mbito da faculdade como um todo e do LEE em particular. Profa. Maria Eugnia
Mosconi de Golveia, vice-diretora da faculdade de Engenharia uma palavra de gratido
pelo empenho em viabilizar juntamente com o diretor as solicitaes de estgio interno
no LEE. Ao grupo de colaboradores silenciosos da administrao pelo apoio nas
atividades no mbito de suas competncias, o obrigado sincero da Orientao do
trabalho. Ao CNPq que patrocinou as bolsas que permitiram este trabalho mediante os
recursos alocados pela FINEP, o nosso agradecimento.
_______________________________
Bernardo Severo da Silva Filho
Orientador e chefe do Lab. De Engenharia Eltrica
Curso de MATLAB
II
ndice
1 INTRODUO SOLUO DE PROBLEMAS 1
2 MATRIZES, VETORES E ESCALARES 4
2.1 Definindo matrizes no MATLAB 5
Mtodo Simples 6
Arquivos MAT e ASCII 6
Operador dois pontos 8
Comando Input 8
Imprimindo matrizes 11
Comando format 11
Comando disp 12
Comando fprintf 12
2.2 Grficos X-Y 13
Aplicao Soluo de Problemas: Anlise de um tnel de vento 15
3 CLCULOS FUNDAMENTAIS E MATRIZES ESPECIAIS 16
3.1 Valores Especiais e Matrizes Especiais 16
Magic Square 17
Matriz de Zeros 17
Matriz de ums 17
Matriz identidade 17
Tringulo de Pascal 17
3.2 Operaes entre escalares 18
Hierarquia em operaes aritmticas 19
Limites Computacionais 21
3.3 Operaes de Conjuntos 21
Aplicao soluo de problemas: Ecos em sinais de comunicao 25
3.4 Funes Elementares 29
Funes matemticas elementares 30
Funes trigonomtricas 31
Funes hiperblicas 32
Funes de Arquivos M 32
Aplicao soluo de problemas: sinais de sonar 34
3.5 Nmeros Complexos 36
Operaes aritmticas com complexos 37
Coordenadas polares e retangulares 37
Curso de MATLAB
III
4 CONTROLE DE FLUXO 40
4.1 Operadores lgicos e relacionais 40
4.2 Tomada de decises 42
Estrutura if-then-else 42
4.3 Loop FOR 45
Comando break 47
Aplicao soluo de problemas: fibras ticas 47
4.4 Loop WHILE 49
Aplicao soluo de problemas: equilbrio de temperatura 50
5 MEDIDAS ESTATSTICAS 54
5.1 Funes para anlise de dados 56
Desvio mdio, varincia e desvio padro 56
Comando sort 60
Histograma 61
Aplicao soluo de problemas: anlise do sinal de voz 64
5.2 Nmeros Aleatrios 66
Funo nmero aleatrio 66
Funo Densidade de Probabilidade 66
Modelo uniforme 68
Modelo normal 68
Histograma: comando hist 71
Aplicao Soluo de Problemas: simulador de vo 73
5.3 Relao Sinal/Rudo 75
Energia de um sinal 75
Clculo de SNR 76
Adicionando um rudo a um sinal existente 77
6 OPERAES COM MATRIZES 79
6.1 Operaes com matrizes 79
Matriz transposta 79
Somatrio de produtos 79
Comando sum 80
Multiplicao de matrizes 80
Matriz Power 81
Matriz inversa 81
Determinante 82
Aplicao Soluo de Problemas: peso molecular de protenas 82
Curso de MATLAB
IV
6.2 Manipulao com matrizes 84
Comando rot90 84
Comando fliplr 84
Comando flipud 84
Comando reshape 85
Comando diag 85
Comando triu 86
Comando tril 87
Aplicao Soluo de Problemas: alinhamento de imagens 87
7 GRFICOS 91
7.1 Grficos X-Y 91
Coordenadas retangulares 91
Legendas 91
7.2 Grficos Polares 92
Coordenadas Polares 92
Transformaes retangular/polar 93
Grficos de barras e degrau 94
7.3 Opes 94
7.4 Grficos 3D 97
Aplicao Soluo de Problemas: trajetria de um satlite 100
8 SOLUES DE SISTEMAS DE EQUAES LINEARES 101
8.1 Interpretao Grfica 101
8.2 Soluo usando operaes matriciais 103
Diviso de matrizes 104
Matriz Inversa 104
Aplicao Soluo de Problemas: anlise de um circuito eltrico 105
9 INTERPOLAO E AJUSTE DE CURVAS 106
9.1 Interpolao 106
Interpolao linear 107
Funo table1 107
Funo table2 109
Comando spline 110
Aplicao Soluo de Problemas: brao robtico 112
Curso de MATLAB
V
9.2 Ajuste de curvas 113
Regresso Linear 113
Comando polyfit 114
Comando polyval 115
10 ANLISE POLINOMIAL 116
10.1 Avaliao do polinmio 116
Comando polyval 116
Operaes Aritmticas 117
Aplicao Soluo de Problemas: bales meteorolgicos 118
10.2 Razes de polinmios 120
11 INTEGRAO NUMRICA E DIFERENCIAO 122
11.1 Integrao Numrica 122
Regra Trapezoidal e Regra de Simpson 122
Comando Quadratura 122
Aplicao Soluo de Problemas: anlise de escoamento de um leo num oleoduto 123
11.2 Diferenciao Numrica 125
Derivao por expresso de diferena 126
Comando diff 127
12 EQUAES DIFERENCIAIS ORDINRIAS 129
12.1 Equaes Diferenciais Ordinrias de Primeira Ordem 129
12.2 Mtodo de Runge-Kutta 130
Aproximao de Primeira Ordem (mtodo de Euler) 130
Comando ODE 131
Aplicao soluo de problemas: acelerao de uma turbina UDF numa aeronave 133
12.3 Equaes Diferenciais de Ordens Superiores 135
13 FATORAO E DECOMPOSIO DE MATRIZES 137
13.1 Autovalores e autovetores 137
Aplicao soluo de problemas: adaptador para reduo de rudos 141
13.2 Decomposio e Fatorao 143
Curso de MATLAB
VI
Fatorao Triangular 143
Fatorao QR 144
14 PROCESSAMENTO DE SINAIS 146
14.1 Anlise no domnio da freqncia 146
14.2 Anlise de filtros 149
Funo de Transferncia Analgica 149
Funo de Transferncia Digital 151
14.3 Implementao de Filtros Digitais 153
14.4 Projetos de Filtros Digitais 155
Filtros IIR 156
Filtros FIR 157
Aplicao soluo de problemas: filtros para separao de canais 158
15 MATEMTICA SIMBLICA 161
15.1 Expresses Simblicas 161
Representaes de Expresses Simblicas no MATLAB 162
15.2 Variveis Simblicas 163
15.3 Operaes em expresses simblicas 165
15.4 Operaes Algbricas Padro 166
Operaes Avanadas 167
15.5 Funes de Converso 169
15.6 Derivao e Integrao 170
15.7 Transformadas 171
Transformada de Laplace 173
Transformada de Fourier 173
Transformada Z 174
Curso de MATLAB
Cap. 1 - Uma Introduo Soluo de Problemas 1
Captulo 1 Uma Introduo Soluo de Problemas
A soluo de problemas parte essencial no somente dos cursos de engenharia mas
tambm dos cursos de Matemtica, Fsica, Qumica e Cincia da Computao. Logo, importante
uma base slida em soluo de problemas. Tambm de grande auxlio um embasamento suficiente
para trabalhar em todas estas reas, para que no tenhamos que aprender uma tcnica para
problemas de matemtica, e uma tcnica diferente para problemas de fsica, e assim por diante. A
tcnica de soluo de problemas que apresentamos trabalhos para problemas de engenharia e pode
ser seguida de perto para resolver problemas em outras reas; mas, supe-se que estamos usando o
MATLAB para ajudar a resolv-los.
O processo ou metodologia para resoluo de problemas que usaremos ao longo do texto
possui cinco passos:
1. Enunciar o problema claramente.
2. Descreva a informao de entrada e sada.
3. Trabalhar o problema manualmente.
4. Desenvolver uma soluo MATLAB.
5. Testar a soluo usando uma variedade de grupo de dados.
Descreveremos cada um dos passos usando o exemplo do clculo da distncia entre dois pontos
em um plano.
1. ENUNCIADO DO PROBLEMA
O primeiro passo enunciar o problema claramente. extremamente importante que o
enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciados do problema
:
Calcule a distncia em linha reta entre dois pontos num plano.
2. DESCRIO ENTRADA/SADA
O segundo passo descrever cuidadosamente a informao que dada para resolver o problema
e ento identificar os valores a serem calculados. Estes itens representam a entrada e a sada para o
problema e agregadamente podem ser chamados entrada/sada, ou I/0. Para muitos problemas, til
usar um diagrama que mostra a entrada e a sada. Algumas vezes, este tipo de diagrama chamado
de caixa preta porque no estamos definindo para este ponto todos os passos para determinar a
sada, mas estamos mostrando a informao que usada para calcular a sada. Para este exemplo,
poderamos usar o diagrama na figura 1.1.
Curso de MATLAB
Cap. 1 - Uma Introduo Soluo de Problemas 2
Figura 1.1 Diagrama I/O
3. EXEMPLO MANUAL
O terceiro passo trabalhar o problema manualmente ou com uma calculadora, usando um
pequeno grupo de dados. um passo muito importante e no deve ser ignorado por mais simples
que seja o problema. um item no qual voc trabalha os detalhes da soluo do problemas. Se voc
no pode pegar um simples grupo de nmeros e calcular a sada (seja manualmente ou com uma
calculadora), ento voc no est pronto para executar o prximo passo; voc deve reler o
problemas e talvez consultar material de referncia. Uma vez que pode trabalhar o problema de um
simples grupo de dados, ento voc est pronto para desenvolver um algoritmo ou um esboo passo
a passo da soluo. Este esboo convertido para os comandos MATLAB para que possamos usar
o computador para fazer todos os clculos. O exemplo manual para o este exemplo mostrado a
seguir:
Suponha que os pontos p
1
e p
2
tenham as seguintes coordenadas:
p
1
= (1,5), p
2
= (4,7)
Queremos calcular a distncia entre dois pontos, que a hipotenusa de um tringulo
retngulo, conforme mostra a figura 1.2. Usando o Teorema de Pitgoras, podemos calcular a
distncia d com a seguinte equao:
Figura 1.2 Distncia entre dois pontos.
ponto 1
ponto 2
distncia entre os pontos
61 , 3 d
13 d
) 5 7 ( ) 1 4 ( d
2 s 1 s d
2 2
2 2

+
+
d
(1,5)
(4,7)
S2
S1
x
y
Curso de MATLAB
Cap. 1 - Uma Introduo Soluo de Problemas 3
4. SOLUO MATLAB
No prximo captulo, falaremos sobre os comandos MATLAB. Contudo, da soluo voc pode
ver que os comandos so muito similares s equaes que foram usadas no exemplo manual. O
sinal de percentagem usado para anteceder comentrios que explicam os comandos MATLAB.
%
% Este programa calcula e imprime
% distncia, em linha reta, entre dois pontos.
p1 = [1,5]; % ponto 1 inicial
p2 = [4,7]; % ponto2 inicial
d = sqrt (sum ((p2-p1).^2)) % calcular distncia
5. TESTANDO
O passo final em nosso processo de soluo de problemas testar a soluo. Primeiramente,
devemos testar a soluo com os dados do exemplo manual, j que calculamos a soluo. Quando
os comandos MATLAB na soluo so executados, o computador mostra a seguinte sada:
d = 3.6056
Esta sada coincide com o valor que calculamos no exemplo manual. Se a soluo MATLAB
no coincidir com o exemplo manual, devemos rever ambas solues a fim de encontrar o erro.
Uma vez que a soluo trabalha com o exemplo manual, devemos tambm test-la com vrios
grupos de dados para certificar que a soluo vlida para outras sries de dados.
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 4

Captulo 2 - Matrizes, Vetores e Escalares
A capacidade de visualizao dos dados um fator importante na soluo de problemas de
engenharia. s vezes, o dado um simples nmero como o raio de um crculo. Outras, um grupo
de coordenadas x-y-z que representam os quatro vrtices de uma pirmides com uma base triangular
no espao. Podemos representar o exemplos citados usando um tipo especial de estrutura de dados
denominada matriz. Matriz uma tabela de nmeros dispostos em m linhas e n colunas. Assim,
um simples nmero pode ser considerado uma matriz com uma linha e uma coluna, uma
coordenada x-y pode ser considerada uma matriz com uma linha e duas colunas, e um grupo de
quatro coordenadas x-y-z pode ser considerada uma matriz com quatro linhas e trs colunas. Como
exemplo, temos:
Se uma matriz contiver m linhas e n colunas, ento conter um total de m . n elementos.
Cada elemento da matriz indicado por ndices, a
ij
. O primeiro, i, indica a linha, o segundo, j,
indica a coluna onde o elemento se encontra. Assim, o elemento a
1,2
da matriz B 3.1. Se o
nmero de linhas e colunas forem iguais, ento dizemos que a matriz uma matriz quadrada. Se a
matriz tiver apenas uma linha e uma coluna, podemos dizer que o valor um escalar, se a matriz
contiver apenas uma linha ou uma coluna, ao matriz chamada vetor-linha ou vetor-coluna,
respectivamente.
E x e r c c i o s
Responda s seguintes questes sobre esta matriz:
1. Qual a ordem de G?
2. G uma matriz quadrada?
3. D as referncias para todas as posies que contm o valor 0.5.
4. D as referncias para todas as posies que contm valores negativos.
A = [ 3.5] B = [ 1.5 3.1]
]
]
]
]
]
]

2 0 0
0 1 1
0 1 1
0 0 1
C
]
]
]
]
]
]
]
]

5 . 0 5 . 4 3 . 2 2 . 1
5 . 0 4 . 2 5 . 0 5 . 0
5 . 1 0 . 9 2 . 8 7 . 5
0 . 2 1 . 0 5 . 0 2 . 8
5 . 0 3 . 2 5 . 1 6 . 0
G
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 5

Definindo Matrizes no MATLAB
Suponha que queiramos agora criar as matrizes A, B e C usando o MATLAB. H vrios
mtodos de definio de matrizes no MATLAB. Vejamos cada um:
Modo mais simples:
Nome da matriz = [ a
11
a
12
a
13
a
1n
;

a
21
a
22
a
23
a
2n
;

;

a
m1
a
m2
a
m3
a
mn
];
Assim, as matrizes A, B e C sero representadas por:
A = [ 3.5];
B = [1.5, 3.1];
C = [-1,0,0; 1,1,0; 1,-1,0; 0,0,2];
O nome da matriz deve comear com uma letra e conter no mximo 19 caracteres que
podem ser nmeros, letras ou caracter sublinhado, e aparece ao lado esquerdo do sinal de igual. O
lado direito contm os dados entre colchetes por ordem de linhas. O ponto-e-vrgula separa as
linhas, e os valores das linhas podem estar separados por vrgulas ou por espaos. O valor pode
conter um sinal de + ou -, e um ponto decimal, mas no pode conter uma vrgula, como 32,154.
Quando definimos uma matriz, o MALTAB imprime o valor da matriz na prxima linha a
menos que coloquemos um ponto-e-vrgula depois da definio. Tente entrar com as matrizes A, B
e C sem o ponto-e-vrgula.
Voc tambm pode definir uma matriz digitando uma cada linha separadamente. Como
exemplo, a matriz C:
C = [ -1 0 0
1 1 0
1 1 0
0 0 2];
Se quisermos, por exemplo, definir um vetor-linha F com 10 valores, tambm podemos
fazer:
F = [1 52 64 197 42 42 55 82 22 109]
F = [1 52 64 197 42 42,
55 82 22 109]
Esta forma muito usada quando a linha de uma matriz extensa. Podemos terminar uma
linha com uma vrgula seguida de trs ou mais pontos, e continuar a entrar com os valores restantes
na prxima linha da rea de trabalho do MATLAB.
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 6

Podemos tambm definir uma matriz usando outra que j definida. Por exemplo, considere
as seguintes matrizes:
B = [ 1.5 , 3.1];
S = [3.0 B];
Estes comandos equivalem a:
S = [ 3.0 1.5 3.1];
Podemos tambm mudar e adicionar valores na matriz usando um referncia entre
parnteses. Assim, o seguinte comando;
S (2) = -1.0;
Muda o segundo valor da matriz S de 1.5 para 1.0.
A ordem da matriz pode ser alterada. Se executarmos o seguinte comando:
S(4) = 5.5
Ento a matriz S ter quatro valores em vez de trs. Se executarmos o comando:
S(8) = 9.5;
Ento a matriz S ter 8 elementos, e os valores de S(5), S(6) e S(7) so automaticamente
nulos, j que no foram atribudos valores para eles.
E x e r c c i o s
Determine a ordem das matrizes a seguir. Verifique suas respostas usando o MATLAB.
1. A = [ 1, 0, 0, 0, 0, 1];
2. B = [ 2; 4; 6; 10];
3. C = [ 5 3 5 ; 6 2 3];
4. D = [ 3 4
5 7
9 10 ];
5. E = [3 5 10 0; 0 0 0 3; 3 9 9 8];
6. T = [ 4 24 9];
Q = [ T 0 T ];
7. X = [ 3 6];
8. R = [C; X, 5 ];
9. V = [ C(2,1) ; B ];
10. A(2,1) = -3;
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 7
As matrizes tambm podem ser definidas atravs de informao armazenada em
arquivos. O MATLAB trabalha com dois tipos diferentes de arquivos: Os arquivos MAT e
os arquivos ASCII.
Os arquivos MAT
Os arquivos MAT so gerados por um programa MATLAB usando o comando
save, que contm o nome do arquivo e as matrizes que devem ser armazenadas. A extenso
.mat automaticamente adicionada ao nome do arquivo. Assim, para salvar matrizes A, B e
C, em um arquivo .mat nomeado teste_1 devemos fazer:
save teste_1 A B C;
Para recuperar as matrizes no programa MATLAB, usamos o comando:
load teste_1
Arquivos ASCII
Um arquivo ASCII que ser usado juntamente com um programa MATLAB deve
conter informao exclusivamente numrica, e cada linha do arquivo deve conter o mesmo
nmero de dados. O arquivo pode ser gerado utilizando um processador de texto ou, por
exemplo, utilizando programas como o Fortran ou ainda, por um programa MATLAB
usando a seguinte forma do comando save:
save teste_1.dat R /ascii
Cada linha da matriz R ser escrita para linhas distintas no arquivos de dados.
Recomenda-se utilizar a extenso .dat para ser mais fcil distingui-los dos arquivos MAT
e dos arquivos M.
O comando load seguido do nome do arquivo ir recuperar a informao da matriz R.
load teste_1.dat;
Operador Dois Pontos ( : )
Suponha que queiramos armazenar a primeira coluna da matriz data1 em um vetor
x, e a segunda coluna em um vetor y. O uso do operador dois pontos (:) til na criao de
matrizes ou vetores. Dependendo do argumento, pode significar todas as linhas ou todas as
colunas da matriz-referncia. Para o nosso exemplo, temos:
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 8
data1 = [0.0,0.0; 0.1 0.2; 0.3 0.6];
x = data1 ( : , 1);
y = data1 ( : , 2 );
Os elementos do vetor x correspondem primeira coluna de data1. O segundo
comando cria um vetor y cujos elementos correspondem segunda coluna da matriz data1.
Se quisssemos criar um vetor z cujos elementos sejam os elementos da primeira linha da
matriz data1, devemos fazer:
z = data1(1, : );
Se o operador dois pontos for usado na seguinte notao:
H = 1 : 8;
A matriz H contm os valores 1, 2, 3, 4, 5, 6, 7 e 8. O operador : entre os dois
nmeros inteiros gera todos os inteiros entre os dois nmeros especificados. Se for usado
para separar trs nmeros, os dois pontos geraro valores entre o primeiro e terceiro
nmeros, usando o segundo nmero como incremento. A notao abaixo gera um vetor-
linha denominado TEMPO que contm os nmeros de 0.0 a 5.0 com incrementos de 0.5:
TEMPO = 0.0 : 0.5 : 5.0;
O incremento tambm pode ser um valor negativo como:
VALORES = 10 : -1: 0;
Os elementos de VALORES so 10, 9, 8, 7, 6, 0.
O operador dois pontos pode tambm ser usado para selecionar uma sub-matriz de
uma outra matriz. Por exemplo, considere a matriz abaixo:
C = [-1,0,0;1,1,0; 1,-1,0; 0,0,2];
Se executarmos os comandos:
PARTE_1 = C ( : , 2:3);
PARTE_2 = C (3:4, 1:2);
Definimos as matrizes:
PARTE_1 = [ 0 0; 1 0; -1 0; 0 2];
PARTE_2 = [1 1; 0 0];
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 9
Observaes:
O MATLAB reconhece uma matriz vazia. H vrias maneiras de ger-la. Como
exemplo, temos:
A = [ ]
B = 4: -1: 5
A expresso C ( : ) equivale a uma longa matriz coluna que contm a primeira coluna de
C, seguida pela segunda coluna de c e assim por diante.
E x e r c c i o s
Determine as ordens e o contedo das matrizes abaixo. Use a matriz G como referncia.
Verifique suas respostas usando o MATLAB.
1. A = G (:, 2);
2. B = G (4, : );
3. C = [10 : 15];
4. D = [4:9; 1:6];
5. E = [-5,5];
6. F = [0.0:0.1:1.0];
7. T1 = G ( 4 : 5 ,1:3);
8. T2 = G (1: 2 : 5, : );
Soluo:
]
]
]
]
]
]
]
]

5 , 0 5 , 4 3 , 2 2 , 1
5 , 0 4 , 2 5 , 0 5 , 0
5 , 1 0 , 9 2 , 8 7 , 5
0 , 2 1 , 0 5 , 0 2 , 8
5 , 0 3 , 2 5 , 1 6 , 0
G
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 10
Comando Input
Voc pode entrar com os valores da matriz, via teclado, utilizando o comando
input que mostra um texto e ento espera por uma entrada. Considere o comando:
z = input ( Valores de z: );
Quando este comando executado, o texto Valores de z: mostrado na tela. O usurio
pode entrar com uma expresso como [ 5.1 6.3 -18.0] o qual especifica valores para z. J
que o comando input termina com um ponto-e-vrgula, os valores de z no so imprimidos
quando o comando executado.
Imprimindo Matrizes
O modo mais simples de imprimir uma matriz entrar com seu nome. O nome da
matriz repetido, os valores da matriz sero imprimidos na prxima linha. Existem vrios
comandos que podem ser usados para alterar a sada a ser imprimida.
Comando format
Suponha os comandos abaixo:
a = [1 2 3]; T = [ 1.1 2.4 3.7];
c = 2*a U = 2*T
c = U =
2 4 6 2.2000 4.8000 7.4000
Por definio, se o elemento de uma matriz for um nmero inteiro, o MATLAB
apresenta o resultado como nmero inteiro. Se o elemento for um nmero real, o
MATLAB apresenta-o com cinco dgitos significativos, ou seja, quatro dgitos direita do
ponto decimal. Podemos alterar o formato numrico utilizando o comando format.
Exemplo: Seja uma varivel A que armazene a raiz quadrada de 2.
A = sqrt(2)
De acordo com o formato numrico escolhido, a varivel A pode estar apresentada sob a
forma:
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 11
Comando MATLAB Varivel A Descrio
Format long 1.41421356237310 16 dgitos
Format short 1.4142 5 dgitos formato numrico padro
Format short e 1.4142e+000 5 dgitos - notao cientfica
Format long e 1.414213562373095e+000 16 dgitos notao cientfica
format + + + para valores positivos e - para
valores negativos
format rat 1393/985 aproximao racional
format hex 3ff6a09e667f3bcd formato hexadecimal
Comando disp
Quando quisermos exibir o contedo de uma matriz sem imprimir seu nome ou
imprimir um pequeno texto, usamos o comando disp. Assim, se a varivel temp contiver
um valor de temperatura em graus Celsius, podemos imprimir o valor em uma linha de
comando e a unidade na linha posterior:
disp(temp); disp (graus Celsius)
Se o valor de temp for 78, ento a sada ser:
78 graus Celsius
Comando fprintf
O comando fprintf nos permite imprimir textos e contedo de matrizes. Podemos
tambm especificar o formato numrico . Sua forma geral :
fprintf (formato, matriz)
O modo formato contm o texto e as especificaes que so:
% e indica que os valores da matriz sero impressos em notao exponencial
% f indica que os valores da matriz sero impressos em notao decimal ou em notao fixa,
isto , o usurio pode especificar o nmero de algarismos significativos juntamente com
o ponto decimal.
% g pode indicar as duas formas acima, dependendo de qual delas ser a mais curta.
O modo matriz denota a varivel cuja matriz est armazenada.
Um simples exemplo de aplicao do comando fprintf mostrado abaixo:
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 12
fprintf (A temperatura %f graus Celsius \n, temp)
A sada seria:
A temperatura 78.0000 graus Celsius
Se modificarmos o comando para esta forma:
fprintf (A temperatura \n %f graus Celsius \n, temp)
Ento, a sada seria:
A temperatura
78.0000 graus Celsius
Os formatos especficos %f, %e, e %g tambm podem conter informao para
especificar o nmero de casas decimais a imprimir e o nmero de algarismos significativos,
juntamente com o ponto decimal, conforme explicado no incio da seo. Considere o
seguinte comando:
fprintf (A temperatura %4.1f graus Celsius \n, temp)
A sada mostrar o valor de temp com 4 algarismos, sendo que um destes ser um
ponto decimal, conforme mostramos abaixo:
A temperatura 78.0 graus Celsius
Grficos X-Y
Suponhamos que queremos plotar os valores de uma matriz em vez de imprimi-los.
Podemos usar o MATLAB para plotar grficos. Nesta seo, mostraremos como gerar um
simples grfico x-y de dados armazenados em dois vetores. Ento, sem conhecer alguns
comandos, voc pode imediatamente comear usando o MATLAB para gerar grficos.
Suponha que queira plotar os dados de temperatura a seguir coletados em uma
experincia de fsica:
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 13
Tempo, s Temperatura, C
0 54.2
1 58.5
2 63.8
3 64.2
4 67.3
5 71.5
6 88.5
7 90.1
8 90.6
9 89.5
10 90.4
Suponha tambm que os dados relativos ao tempo estejam armazenados em um
vetor denominado x, e que os relativos temperatura estejam armazenados em um vetor
denominado y. Para plotar estes pontos, simplesmente usamos o comando plot , onde x e y
so vetores-linha ou vetores-coluna.
plot (x, y)
O grfico gerado automaticamente. A prtica mostra que um bom grfico deve
incluir unidades, ttulo e uma breve descrio. Logo, podemos aperfeio-lo como os
seguintes comandos:
Title Adiciona um ttulo ao grfico.
Xlabel Inclui uma descrio na direo do eixo-x
Y label Inclui uma descrio na direo do eixo-y
Grid Adiciona linhas de grade ao grfico
Whitebg Muda a cor de fundo do grfico para branco.
Assim,
plot (x,y),
title (Laboratrio de Fsica - Experincia 1),
xlabel (Tempo, s),
ylabel (Temperatura, graus Celsius),
grid
whitebg
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 14
Os trs pontos usados depois dos quatro comandos so usados para que o
MATLAB execute os seis comandos em uma nica vez. Para aprender mais opes para
gerar grficos x-y e outros tipos de grficos, veja o captulo 7.
Aplicao Soluo de Problemas: Anlise de Dados de um Tnel de Vento
Um tnel de vento uma cmara de teste construda para produzir diferentes
velocidades de vento, ou nmeros Mach (razo entre a velocidade do vento e a velocidade
do som). Modelos em escala precisa de aeronaves podem ser equipados sobre suportes de
medies de fora na cmara de teste, e as medidas das foras sobre o modelo podem ser
feitas para diferentes velocidades de vento e ngulos do modelo relativo direo da
velocidade. Ao final de um longo teste de tnel de vento, muitos grupos de dados so
coletados e podem ser usados para determinar o lift, drag e outras caractersticas da
performance aerodinmica do novo modelo para vrias velocidades de operao e posies.
Usamos esta aplicao vrias vezes em nossos problemas ao longo do texto. Nesta
seo, supomos que os dados coletados do teste do tnel de vento foram armazenados em
um arquivo ASCII denominado vento1.dat. Gostaramos de visualizar o grfico dos dados
para verificar se os sensores sobre o modelo em escala parecem trabalhar adequadamente.
Suponhamos que cada linha do arquivo contm um ngulo de vo em graus e um
correspondente coeficiente de lift. Para este exemplo, usamos os seguintes dados:
Curso de MATLAB
Cap. 2 Matrizes, Vetores e Escalares 15
ngulo de Vo
(graus)
-4 -2 0 2 4 6 8 10 12 14 15
Coeficiente de
Sustentao
-0,202 -0,050 0,108 0,264 0,421 0,573 0,727 0,880 1,027 1,150 1,195
ngulo de Vo
(graus)
17 18 19 20 21
Coeficiente de
Sustentao
1,225 1,250 1,245 1,221 1,177
Mesmo que parea simples ler e plotar os dados usando o MATLAB, usaremos a
metodologia descrita no captulo anterior para mostrar igualmente simples o processo que
nos permite estruturar nossas idias no desenvolvimento na soluo de problemas.
1. ENUNCIADO DO PROBLEMA
Gerar um grfico do ngulo de vo e coeficiente de lift.
2. DESCRIO ENTRADA/SADA
Sempre que for possvel, usaremos um diagrama I/O, conforme mostrado na figura
a seguir. Neste exemplo, lemos as informaes contidas em um arquivo e usamos o
MATLAB para plot-las. O diagrama contm um smbolo de um disquete para representar
o arquivo que a entrada (observe que colocamos o nome do arquivo abaixo do smbolo) e
um smbolo de um grfico para representar a sada, que o grfico dos dados.
3. EXEMPLO MANUAL
Apesar de ser apenas um grfico, devemos estudar superficialmente uma pequena
parte dos dados e determinar, grosseiramente, como seria o grfico correspondente. Neste
exemplo, se examinarmos os dados podemos perceber que inicialmente o coeficiente de lift
0,2 e que o mesmo cresce at alcanar um mximo de 1,25 para um ngulo de 18
0
. Se o
grfico que obtivermos for muito diferente do que espervamos (por exemplo, valor inicial
0,7 e um mximo de 1,177 para um ngulo de 21 graus), ento devemos novamente checar
os dados e os comandos MATLAB usados.
4. SOLUO MATLAB
5. TESTANDO
vento1.dat
Diagrama I/O
Curso de MATLAB
Cap. 3 Clculos com Matrizes 16
Captulo 3 - Clculo Fundamentais e Matrizes Especiais
As operaes de adio, subtrao, multiplicao e diviso so a maioria das operaes
fundamentais usadas por engenheiros e cientistas. Podemos executar outras operaes de rotina,
como o clculo da raiz quadrada ou o logaritmo de um valor ou a tangente de um ngulo. Estas
operaes podem ser executadas sobre um valor simples (um escalar), aplicadas a uma lista de
valores (vetor), ou aplicadas a um grupo de valores armazenados em uma matriz. Neste captulo
aprenderemos como executar todas estas operaes e funes. E tambm, aprenderemos como usar
nmeros complexos no MATLAB.
3.1 Valores Especiais e Matrizes Especiais
O MATLAB contm um grupo de constantes pr-definidas, valores e matrizes especiais
teis para uso em programas do MATLAB.
Valores Especiais

pi O valor de automaticamente armazenado nesta varivel.


-1 i,j Estas variveis so inicialmente agrupadas ao valor -1. Veja a seo 3.5 para
uma discusso completa sobre nmeros complexos.

inf Esta varivel a representao do MATLAB para infinito, o qual ocorre


tipicamente como o resultado de uma diviso por zero. Uma mensagem de
aviso imprimida, se voc mostrar o resultado da diviso, o valor ser .
Not-a-
number
NaN Ocorre em grande parte quando a expresso indefinida, como a diviso de
zero por zero.
clock Exibe a hora atual em um vetor linha de seis elementos contendo ano, ms, dia,
hora, minute e segundos.
date Exibe a data atual como por exemplo, 20-Jun-92.
ans Varivel usada para armazenar valores calculados por uma expresso que
calculada mas no armazenada em uma varivel nomeada.
Matrizes Especiais
O MATLAB contm um grupo de funes que geram matrizes especiais. Algumas destas
matrizes tem aplicao especfica s tcnicas numricas discutidas posteriormente.
Curso de MATLAB
Cap. 3 Clculos com Matrizes 17
Magic Square
Uma matriz magic square de ordem n uma matriz n x n constituda de nmeros inteiros
de 1 a n
2
. Os elementos a
ij
da matriz esto dispostos de forma tal que o somatrio de cada linha
igual ao somatrio de uma coluna.
Forma Geral: magic (n) matriz square magic de ordem n.
Assim, para saber o quadrado mgico de ordem 3 , o prompt do MATLAB deve
apresentar:
magic (3)
Zeros
Esta funo gera uma matriz zero, isto , uma matriz cujos elemento a
ij
so nulos.
Forma Geral: zeros(n) Gera uma matriz zero, quadrada, de ordem n.
zeros(m,n) Gera uma matriz zero de ordem m x n.
Ones
A funo ones gera uma matriz cujo valor dos elementos a
ij
unitrio.
Argumento: ones(n) Gera uma matriz quadrada de ordem n.
ones(m,n) Gera uma matriz de ordem m x n.
Eye
A matriz identidade pode ser gerada pelo MATLAB atravs da funo eye. Uma matriz
identidade uma matriz escalar de qualquer ordem cujos elementos a
ij
so iguais a 1 para i = j.
Apresenta o mesmo formato que as funes anteriores. O formato eye(n) gera uma matriz
identidade de ordem n. J o formato eye (m,n) gera uma matriz de ordem m x n .
Pascal
Cria uma matriz cujas diagonais lembram o tringulo de Pascal. Assim, se usarmos o
comando pascal(5), a seguinte matriz gerada:
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
Curso de MATLAB
Cap. 3 Clculos com Matrizes 18
3.2 Operaes entre Escalares
Clculos aritmticos so identificados usando expresses. Uma expresso pode ser to
simples como uma constante, ou pode ter matrizes e constantes combinadas com operaes
aritmticas. Nesta seo, discutiremos operaes envolvendo somente escalares. Na seo
posterior, estendemos as operaes incluindo operaes elemento por elemento entre escalares e
matrizes ou entre duas matrizes.
As operaes aritmticas entre dois escalares so mostradas na tabela 3.1. Uma expresso
pode ser resolvida e armazenada em uma varivel especfica, como no comando seguinte, o qual
especifica que os valores em a e b sero adicionados, e a soma armazenada em uma varivel x:
x = a + b
Este comando deve ser interpretado como o valor em b adicionado ao valor em a, e a
soma armazenado em x. Se ns interpretamos os comandos desta forma, ento ns preocupamos
pelo seguinte comando MATLAB vlido.
count = count + 1
bvio que esta instruo no um comando algbrico vlido, mas o MATLAB explica
que 1 adicionado ao valor em count, e o resultado ser armazenado nesta varivel. Ou seja, o valor
em count ser acrescido de 1 (ou incrementado por 1).
importante reconhecer que uma varivel pode armazenar somente um valor por vez. Por
exemplo, suponha que as seguintes instrues sero executadas seguidamente;
Time = 0.0
Time = 5.0
O valor 0.0 armazenado na varivel time quando a primeira instruo executado e ento
substitudo pelo valor 5.0 quando a segunda instruo executada.
Quando voc entra com uma expresso sem especificar uma varivel para armazenar o
resultado, o mesmo automaticamente armazenado em uma varivel denominada ans. Cada vez
que um novo valor armazenado em ans, o valor anterior perdido.
Curso de MATLAB
Cap. 3 Clculos com Matrizes 19
Tabela 3.1 Operaes aritmticas entre dois escalares
Operao Forma
Algbrica
MATLAB
Adio a + b a + b
Subtrao a - b a - b
Multiplicao a x b a*b
Diviso Direita a
b
a/b
Diviso
Esquerda
b
a
a\b
Exponenciao a
b
a^b
Hierarquia em Operaes Aritmticas
Sabendo que vrias operaes pode ser combinadas em uma simples expresso aritmtica,
importante conhecer a ordem nas quais as operaes sero executadas. A tabela 3.2 contm a
ordem de prioridade das operaes aritmticas no MATLAB. Note que esta prioridade tambm
segue a prioridade algbrica padro.
Tabela 3.2 Hierarquia em operaes aritmticas
Prioridade Operao
1 Parnteses
2 Exponenciao, esquerda direita
3 Multiplicao e Diviso, esquerda direita
4 Adio e Subtrao, esquerda direita
Suponha que queremos calcular a rea de um trapzio, e tambm suponha que a varivel
base contenha o comprimento da base e que altura_1 e altura_2 contenham as duas alturas. A rea
de um trapzio pode ser calculada usando o seguinte enunciado:
area = 0.5*h*(B + b);
Suponha que omitamos os parnteses:
area = 0.5*altura*B + b;
Este enunciado seria executado como se fosse o enunciado a seguir:
area = (0.5*altura*B) + b;
Note que embora a resposta incorreta tenha sido calculada, no h mensagens de erro
imprimidas alertando-nos quanto ao erro. Portanto, importante estar cauteloso quando
convertemos equaes para comandos do MATLAB. Adicionar parnteses extras uma maneira
Curso de MATLAB
Cap. 3 Clculos com Matrizes 20
fcil para ter certeza que os clculos so feitos na ordem que voc quer. Se uma expresso longa,
divida-a em vrias expresses. Por exemplo, considere a seguinte equao:
f = ___x
3
- 2x
2
+ 6,3___
x
2
+ 0,5005x 3,14
O valor de f poderia ser calculado usando os seguintes comandos, onde x um escalar:
numerador = x^3 - 2*x^2 + x + 6.3
denominador = x^2 + 0.5005*x - 3.14
f = numerador/ denominador
melhor usar vrias equaes que so mais fceis de compreender que apenas uma, que
requer maior cuidado na hora de imaginar a ordem das operaes.
E x e r c c i o s
D os seguintes comandos do MATLAB para calcular os seguintes valores. Suponha que
as variveis nas equaes so escalares e tenham valores determinados.
1. Coeficiente de frico entre um pneu e o pavimento:
Frico = __v
2
__
30s
2. Fator de correo em clculo de presso:
fator = 1 + _b_ + _c_
v v
2
3. Distncia entre dois pontos:
Slope = y
2
- y
1
x
2
- x
1
4. Resistncia de um circuito paralelo:
resistncia = 1 _
1_ + 1 + 1 _
r
1
r
2
r
3
5. Perda de presso de um cano de frico
perda = f . p. 1 . v
2
d 2
Curso de MATLAB
Cap. 3 Clculos com Matrizes 21
Limites Computacionais
Para a maioria dos computadores, a escala de valores estende-se de 10
-308
a 10
308
, o que
deve ser suficiente para acomodar grande parte dos clculos. Contudo, possvel obter resultados
que estejam fora deste alcance, como mostramos a seguir:
Suponha que executamos os seguintes comandos:
x = 2e200;
y = 1e200;
z = x*y;
Como o alcance de 10
-308
a 10
308
, ento os valores de x e y esto dentre do limite
estabelecido. Mas, o valor de z 2e400, e este valor ultrapassa o alcance. Este erro chamado
overflow porque o expoente do resultado de uma operao aritmtica demasiadamente alto para
ser armazenado na memria do computador. No MATLAB, o resultado de um expoente overflow
infinito().
Suponha agora que executamos os seguintes comandos:
x = 2.5e-200;
y = 1e200;
z = x/y;
O erro de underflow um erro similar causado pelo expoente do resultado de uma
operao aritmtica ser pequeno demais para ser armazenado na memria do computador. Os
valores de x e y novamente esto dentro do alcance permitido, mas o valor de z deve ser 2.5e-400.
Se o expoente menor que o mnimo, causamos um erro de underflow. No MATLAB, o resultado
de underflow zero.
Sabemos que a diviso por zero uma operao invlida. Se uma expresso resulta em
uma diviso por zero no MATLAB, o resultado da diviso . O MATLAB imprimir uma
mensagem de aviso e logo a seguir o clculo continua. As operaes posteriores usam como
resultado da diviso.
3.3 Operaes de Conjuntos
Uma operao de conjunto uma operao elemento por elemento. Por exemplo, suponha
que A e B sejam vetores-linha com cinco elementos. Um modo de gerar um novo vetor C com
valores que sejam produtos dos valores correspondentes em A e B o seguinte:
Curso de MATLAB
Cap. 3 Clculos com Matrizes 22
C(1) = A(1)*B(1);
C(2) = A(2)*B(2);
C(3) = A(3)*B(3);
C(4) = A(4)*B(4);
C(5) = A(5)*B(5);
Estes comandos so essencialmente comandos escalares porque cada comando multiplica
um simples valor por um outro e armazena o produto em um terceiro valor. Para indicar que
executamos uma multiplicao elemento por elemento entre duas matrizes de mesma ordem,
usamos um ponto antes da operao. Assim, os cinco comandos acima podem ser substitudos pelo
seguinte:
C = A .*B;
Se omitirmos o ponto estaremos executando uma operao matricial. Operaes matriciais
o tema que ser discutido no captulo 6.
Para as operaes de adio e subtrao, as operaes de conjunto e matriciais so
idnticas, e ento no precisamos distingu-las. Contudo, as operaes de conjunto para
multiplicao, diviso e exponenciao so diferentes das operaes matriciais para multiplicao,
diviso e exponenciao e por isso devemos usar o ponto quando queremos especificar uma
operao de conjunto.
Uma operao elemento por elemento, ou operaes de conjuntos, aplicam-se no somente
para operaes entre duas matrizes de mesma ordem como tambm em operaes entre um escalar
e um no escalar. Contudo, a multiplicao de uma matriz por um escalar e a diviso esquerda de
uma matriz por um escalar podem ser escritas de modo ou de outro. Assim, os dois comandos em
cada grupo de comandos abaixo so equivalentes para uma matriz no escalar A.
B = 3*A;
B = 3.*A;
C = A/5;
C = A ./5;
As matrizes resultantes B e C tero a mesma ordem de A.
Para mostrar as operaes de conjunto para vetores, considere os seguintes vetores-linha:
A = [2 5 6]
B = [2 3 5]
Se calculamos o produto elemento a elemento de A e B usando o seguinte enunciado:
C = A.*B
Curso de MATLAB
Cap. 3 Clculos com Matrizes 23
Ento, C conter os seguintes valores:
C = [ 4 15 30]
O MATLAB tem dois operadores de diviso uma diviso que usa o smbolo /e outra
que usa o smbolo \ . O comando para diviso direita:
C = A./B;
Ir gerar um novo vetor no qual cada elemento de A dividido pelo elemento
correspondente de B. Assim, C conter os seguintes valores:
C = [1 1.667 1.2]
O comando para diviso esquerda:
C = A.\B
Ir gerar um novo vetor no qual cada elemento o elemento correspondente de B dividido
pelo elemento correspondente de A. Ento, C conter os seguintes valores:
C = [1 0.6 0.833]
A exponenciao de conjunto tambm uma operao elemento por elemento. Por
exemplo, usamos os mesmos valores para A e B, considere os comandos:
C = A.^2;
D = A.^B;
Os vetores C e D sero os seguintes:
C = [4 25 36]
D = [4 125 7776]
A operao tambm vlida para uma base escalar e um expoente vetor, como o exemplo
a seguir:
C = 3.0. ^A;
que gera um vetor com os seguintes valores;
C = [9 243 729]
Este vetor poderia tambm ser calculado com a seguinte instruo:
C = (3).^A;
Curso de MATLAB
Cap. 3 Clculos com Matrizes 24
Contudo, a instruo a seguir incorreta:
C = 3.^A;
O MATLAB supe que o ponto parte da constante 3, e ento fazer uma exponenciao
matricial, que discutiremos no captulo 6. Se inserirmos um espao antes do ponto, como se segue:
C = 3 .^A;
Ento, o comando tentaria fazer a exponenciao elemento por elemento conforme
desejvamos. Estes exemplos indicam que devemos ter cuidado quando especificarmos operaes
de conjuntos. Se no tiver certeza que o que escreveu a expresso correta, sempre teste-a com
simples exemplos como aqueles que usamos.
d = [1:5; -1: -1: -5];
z = ones(2,5)
s = d z
p = d.*s
sq = d.^3;
Os valores destas matrizes so mostrados a seguir:
E x e r c c i o s
D os valores no vetor C depois execute os seguintes enunciados, onde A e B contm os
valores mostrados. Cheque suas respostas usando o MATLAB.
A = [2 -1 5 0] B = [3 2 -1 4]
1. C = A B;
2. C = B + A - 3;
3. C = 2*A + A.^B;
]
]
]

5 4 3 2 1
5 4 3 2 1
d
]
]
]

6 5 4 3 2
4 3 2 1 0
s
]
]
]

125 64 27 8 1
125 64 27 8 1
sq
]
]
]

1 1 1 1 1
1 1 1 1 1
z
]
]
]

30 20 12 6 2
20 12 6 2 0
p
Curso de MATLAB
Cap. 3 Clculos com Matrizes 25
4. C = B./ A;
5. C = B.\A;
6. C = A.^B;
7. C = (2).^B + A;
8. C = 2*B/3.0.*A;
Soluo de Problemas Aplicados Engenharia: Ecos em Sinais de Comunicao
Uma interessante pesquisa est sendo feita atualmente para desenvolver sistemas de
computadores que respondam a comandos verbais. O projeto do tal sistema supe que o microfone
colhe o comando de voz e tem uma representao ntida da fala. Infelizmente, sensores como os
microfones apresentam distores, denominadas rudo. Os sistemas com comunicaes duas vias
tambm raramente tem ecos que so inadvertidamente introduzidos pela instrumentao. Por essa
razo, um sistema reconhecedor de voz deve ser capaz de executar algum processamento do sinal de
voz para remover algumas das distores e componentes indesejveis, tal como os ecos, tentando
antes reconhecer as palavras. Como forma de testar um programa que foi projetado para remover
ecos, devemos estar aptos a gerar um sinal digital e adicionar ecos ao mesmo. Podemos ento
avaliar a performance do programa que suposta para remover os ecos. Nesta seo, definimos
sinais digitais, e ento desenvolveremos um programa MATLAB para adicionar ecos a um sinal
digital.
Sinais Digitais
Um sinal uma funo (normalmente em relao ao tempo) que representa informao.
Esta informao ou dado so coletados com um sensor. Alguns dos mais comuns tipos de sensores
so microfones, que medem acstica ou dados sonoros (como a fala); sismmetro, que mede
intensidade de tremor de terra; fotoclulas, que medem a intensidade da luz; termistores, o qual
medem a temperatura; e osciloscpios, que medem tenses. Os sensores so normalmente
conectados outra pea da instrumentao chamada conversor analgico-digital (A/D), que amostra
o sinal periodicamente e grava o tempo e os valores do sinal que possam ser armazenados em um
arquivo de dados. O sinal original normalmente uma funo contnua (ou analgica); a seqncia
de valores coletados do sinal original denominada sinal digital. A figura 3.1 contm um exemplo
de sinal analgico coletado de um sinal contnuo. O sinal analgico composto de um grupo de
coordenadas x-y e assim poderiam facilmente ser armazenadas em um arquivo de dados, e ento ler
um programa MATLAB. Quando plotamos um sinal analgico, geralmente ligamos os pontos com
segmentos de reta em vez de plotar apenas os pontos.
Curso de MATLAB
Cap. 3 Clculos com Matrizes 26
Gerando ecos em um sinal
Um eco de um sinal representado por uma verso atenuada do sinal original e que ocorre
atrasado no tempo em relao ao sinal original. Por exemplo, a figura 3.3 contm um sinal original
s(t) no primeiro esquema. O segundo esquema contm um eco do sinal original que foi atenuado
aproximadamente 50% (ou 0,5) do sinal original. O terceiro esquema contm um eco do sinal
original atenuado em 30% e atrasado 5 segundos em relao ao sinal original; este um ROLLED
eco porque os valores do eco so negativos do eco esperado. O quarto esquema contm o sinal
original mais os dois ecos adicionados ao mesmo.
Figura 3,1 Sinal Analgico ou contnuo
Figura 3..2 Amostra ou Sinal Digital
Curso de MATLAB
Cap. 3 Clculos com Matrizes 27
Figura 3.3 O sinal original e os ecos.
Suponha que um sinal original foi coletado um perodo de 10 segundos, com um intervalo
de tempo de amostragem de 0,1 segundos. O seguinte grupo de coordenadas foram coletados no
primeiro segundo, e todos os valores do sinal depois estes valores foram zerados:
Tempo(s) 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
Valor do sinal 0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0
Escreva um programa do MATLAB que gera um sinal que contm o sinal original com
trs ecos adicionados ao mesmo. O primeiro eco atenuado em 0,5 e atrasado em 2 segundos; o
segundo eco tem um tempo de atraso de 4 segundos e atenuado em 0,3 segundos; o terceiro eco
atrasado em 7,5 segundos e atenuado em 0,1. Plote o grfico do sinal original e o sinal com ecos
em um arquivo MAT denominado eco.mat.
1. ENUNCIADO DO PROBLEMA
Dado um sinal original, gerar um novo sinal contendo o sinal original mais trs ecos
especficos adicionados a ele.
2. DESCRIO ENTRADA/SADA
O retngulo tracejado contm uma figura detalhada do processo de gerao de ecos do
sinal de entrada [sn]. Este sinal atrasado e multiplicado por um fator escalar (representado pelo
tringulo) para gerar cada eco. Ento, o sinal original e todos os ecos que so adicionados juntos
em um novo sinal [gn], o qual plotado e armazenado um arquivo de dados chamado eco.mat.
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
t, segundos
t, segundos
t, segundos
t, segundos
s(t)
Eco 1
Eco 2
s(t) + Ecos
Curso de MATLAB
Cap. 3 Clculos com Matrizes 28
3. EXEMPLO MANUAL
Para um exemplo manual, usamos os trs primeiros valores do sinal original:
Tempo (s) Valor do sinal
0,0 0,0
0,1 0,5
0,2 1,0
Os ecos especficos ento tem os seguintes valores (no-nulos):
Tempo,s Valor do sinal
2,0 (0,5) . (0,0) = 0,0
2,1 (0,5) . (0,5) = 0,25
2,2 (0,5) . (1,0) = 0,5
Tempo,s Valor do sinal
4,0 (- 0,3) . (0,0) = 0,0
4,1 (- 0,3) . (0,5) = - 0,15
4,2 (- 0,3) . (1,0) = - 0,3
Tempo,s Valor do sinal
2,0 (0,1) . (0,0) = 0,0
2,1 (0,1) . (0,5) = 0,05
2,2 (0,1) . (1,0) = 0,1
A soma do sinal original mais os trs ecos so mostrados na figura 3.5.
0,5
-0,3
0,1
atraso 2s
atraso 4s
atraso7,5s
[sn]
eco.mat
[gn]
Figura 3.4 Diagrama entrada / sada
Curso de MATLAB
Cap. 3 Clculos com Matrizes 29
3.4 Funes Elementares
As expresses aritmticas raramente requerem outros clculos que no sejam a adio,
subtrao, multiplicao, diviso, e exponenciao. Por exemplo, muitas expresses requerem o
uso de logaritmos, exponenciais, e funes trigonomtricas. O MATLAB nos permite usar funes
para executar estes tipos de clculos em vez de nos exigirem calcul-los usando operaes
aritmticas bsicas. Por exemplo, se quisermos calcular o seno de um ngulo e armazenar o
resultado em b, podemos usar o seguinte comando:
b = sin(angle);
A funo sin supe que o argumento est em radianos. Se o argumento contm um valor
em graus, podemos convert-lo de graus para radianos dentro da funo referncia:
b = sin (angle*pi/180);
Poderamos tambm fazer a converso em comandos separados:
angle_radians = angle*pi/180;
b = sin(angle_radians);
Estes comandos so vlidos se angle um escalar ou se angle uma matriz. Se angle for
uma matriz, ento a funo ser aplicada elemento por elemento aos valores na matriz.
Agora que j vimos vrios exemplos de funes, iniciaremos uma reviso das regras
relativa s funes. Uma funo uma referncia que representa uma matriz. Os argumentos ou
parmetros da funo esto contidos em parnteses seguindo do nome da funo. Uma funo pode
no conter argumentos, um argumento ou muitos argumentos, dependendo de sua definio. Por
exemplo, pi uma funo que no tem argumento; quando usamos a funo referncia pi, o valor
F
i
g
u
r
a

3
.
5


S
i
n
a
l

O
r
i
g
i
n
a
l

m
a
i
s

o
s
t
r

s

e
c
o
s
.
Curso de MATLAB
Cap. 3 Clculos com Matrizes 30
para pi automaticamente substitui a funo referncia. Se uma funo contm mais que um
argumentos, muito importante dar os argumentos em ordem correta. Algumas funes tambm
exigem que os argumentos estejam unidades especficas. Por exemplo, as funes trigonomtricas
supem que os argumentos esto em radianos. No MATLAB, algumas funes usam o nmero de
argumentos para determinar a sada da funo. Por exemplo, a funo zeros pode ter um ou dois
argumentos, pelos quais determinamos a sada.
Uma funo referncia no pode ser usada ao lado esquerdo de um sinal de igualdade,
desde que este represente um valore e no uma varivel. Funes podem aparecer direita de um
sinal de igualdade e em expresses. Uma funo de referncia pode tambm ser parte do
argumento de uma outra funo de referncia. Por exemplo, o seguinte comando calcula o
logaritmo do valor absoluto de x:
log_x = log(abs(x))
Quando uma funo usada para calcular o argumento de uma outra funo, tenha certeza
de fechar o argumento de cada funo em seu prprio grupo de parnteses. Esta acomodao da
funo tambm chamada composio de funes. Nomes de funes devem estar em letras
minsculas a menos que o case sensitivy esteja desativado.
Agora discutiremos vrias categorias de funes que so freqentemente usadas em
clculos de engenharia. Outras funes sero apresentadas no decorrer dos captulos to logo
debatermos tpicos relevantes.
Funes Matemticas Elementares
As funes matemticas elementares incluem funes para executar um nmero de
clculos comuns como o clculo de valor absoluto e a raiz quadrada. Alm disso, tambm
inclumos um grupo de funes usadas em arredondamentos. Mostraremos a seguir uma lista destas
funes com uma breve descrio:
abs (x)
Calcula o valor absoluto de x.
sqrt(x)
Calcula a raiz quadrada de x.
round(x)
Arredonda o valor de x para o inteiro mais prximo.
fix(x)
Arredonda o valor de x para o inteiro mais prximo de zero.
floor(x)
Arredonda o valor de x para o inteiro mais prximo de -
ceil(x)
Arredonda o valor de x para o inteiro mais prximo de
sign(x)
Se x menor que zero, a funo retorna ao valor 1; se x for igual a
zero, retorna ao valor zero; caso contrrio, a funo retorna ao valor 1.
Rem(x,y)
Retorna o resto da diviso x/y. Por exemplo, rem (25,4) 1, e rem
(100,21) 16.
Exp(x)
Esta funo retorna ao valor de e
x
, onde e a base para logaritmo natural
Curso de MATLAB
Cap. 3 Clculos com Matrizes 31
ou aproximadamente 2.718282.
log(x)
Retorna a ln x, o logaritmo natural de x para a base e.
Log10(x)
Retorna a log
10
x, ou seja, o logaritmo de x na base 10.
E x e r c c i o s
Calcule as seguintes expresses, e ento verifique sua resposta no MATLAB.
1. round (-2.6)
2. fix(-2.6)
3. floor(-2.6)
4. ceil(-2.6)
5. sign(-2.6)
6. abs(round(-2.6))
7. sqrt(floor(10.7))
8. rem(15,2)
9. floor(ceil(10.8))
10. log10(100) + log10(0.001)
11. abs(-5.5)
12. round([0:0.3:2,1:0.74:4])
Funes Trigonomtricas
As funes trigonomtricas supem que os ngulos estejam representados em radianos.
Para converter para graus ou de graus para radianos, use as seguintes converses, sabendo que 180
= radianos:
ngulo_graus = ngulo_radianos*(180/pi);
ngulo_radianos = ngulo_graus*(pi/180);
A seguir uma lista de funes trigonomtricas com uma breve descrio:
sin(x) Calcula o seno de x, em radianos.
cos(x) Calcula o cosseno de x, em radianos.
tan(x) Calcula a tangente de x, em radianos.
asin(x) Calcula o arcoseno de x, onde x deve estar entre 1 e 1. A funo
apresenta um ngulo em radianos entre - /2 e /2.
acos(x) Calcula o arcocosseno de x, onde x deve estar entre 1 e 1. A funo
apresenta um ngulo em radianos entre 0 e .
atan(x) Calcula o arcotangente de x, onde x deve estar entre 1 e 1. A funo
apresenta um ngulo em radianos entre - /2 e /2.
atan2(x,y) Calcula o arcotangente do valor de y/x. A funo apresenta um ngulo
em radianos estar entre - e , dependendo dos sinais de x e y.
As outras funes trigonomtricas podem ser calculados usando as seguintes equaes:
Curso de MATLAB
Cap. 3 Clculos com Matrizes 32
sec x = 1/ cos x
csc x = 1 / sin x
cot x = 1 / tan x
Funes Hiperblicas
Funes Hiperblicas so funes de e
x
; as funes hiperblicas inversas so funes de ln
x. Estas funes so teis em aplicaes como o projeto de alguns tipos de filtros digitais. O
MATLAB inclui vrias funes hiperblicas, como as mostradas nesta breve descrio:
sinh(x) Calcula o seno hiperblico de x.
cosh(x) Calcula o cosseno hiperblico de x.
tanh(x) Calcula a tangente hiperblica de x.
asinh(x) Calcula o seno hiperblico inverso de x.
acosh(x) Calcula o cosseno hiperblico inverso de x.
atanh(x) Calcula a tangente hiperblica inversa de x.
E x e r c c i o s
D as expresses MATLAB para calcular os seguintes valores, dado o valor de x.
1. coth x
2. sec x
3. acoth x
4. csc x
5. asech x
6. acsc x
Funes de arquivo M
O MATLAB apresenta uma estrutura que nos permite criar funes sob a forma de
arquivos M. Como exemplo, considere uma funo que esteja em um arquivo-M denominado
circum.m:
function c = circum ( r)
% CIRCUM Circunferncia de um crculo de raio r.
% Para matrizes, CIRCUM ( r ) retorna uma matriz
% que contm as circunferncias de crculos com raios iguais
% aos valores no vetor original.
c = pi*2*r;
Assim, se o prompt do MATLAB apresentar:
Curso de MATLAB
Cap. 3 Clculos com Matrizes 33
r = [0 1.4 pi];
a = circum (r );
Os elementos da matriz A correspondero as circunferncias de crculos de raios 0, 1,4 e ,
respectivamente.
Para esta funo tambm so vlidos os comandos:
a = 5.6;
disp (circum(a))
c = [1.2 3; 5 2.3];
circum ( c) ;
Assim, circum passa a ser uma funo MATLAB assim como ones, sin e outras. A parte
comentada no arquivo circum.m usada quando digitarmos help circum no prompt do MATLAB.
H algumas regras para escrever uma funo de arquivo M:
A funo deve comear com uma linha contendo a palavra function, seguida pelo argumento de
sada, um sinal de igual, e o nome da funo. Os argumentos para a funo devem estar entre
parnteses. Esta linha define os argumentos de entrada e sada;
As primeiras linhas devem ser comentrios porque sero exibidas quando o menu help for usado
juntamente com o nome da funo , como help circum;
A nica informao retornada da funo contida nos argumentos de sada, que so,
obviamente, matrizes. Verificar se a funo inclui um comando que assegure um valor ao
argumento de sada.
Uma funo que possui mais de uma varivel de sada como por exemplo:
function [ dist, vel, acel] = motion (x)
Deve apresentar as variveis de sada dentro de colchetes. Alm disso, todos os valores devem
ser calculados dentro da funo.
Uma funo que tenha mltiplos argumentos de entrada deve listar os argumentos no comando
function, como mostramos no exemplo a seguir, que tem dois argumentos de entrada:
function error = mse (w,d)
As variveis especiais nargin e nargout podem ser usadas para determinar o nmero de
argumentos de entrada passadas para uma funo e o nmero de argumentos de sada solicitados
quando a funo chamada.
Curso de MATLAB
Cap. 3 Clculos com Matrizes 34
Soluo de Problemas Aplicados Engenharia: Sinais de Sonar
O estudo do sonar (sound navigation and ranging) inclui a gerao, transmisso, e
recepo de energia sonora na gua. Dentre as aplicaes destacamos: mapeamento geolgico,
medidas de sinal biolgico, navegao submarina e explorao mineral. Um sistema sonar ativo
transmite um sinal que normalmente um sinal senoidal de freqncia conhecida. As reflexes ou
os ecos do sinal so recebidos e analisados para prover informaes sobre o meio envolvente. Um
sistema sonar passivo no transmite sinais mas coleta-os de sensores e os analisa baseado em suas
freqncias.
Nesta seo, descreveremos as senides, j que um sinal bsico usando em sistemas
sonar. Depois, desenvolveremos um programa MATLAB para gerar um sinal sonar.
Gerao de um Sinal Senoidal
Uma senide uma funo seno escrita em funo do tempo:
g(t) = sen (2ft)
onde f a freqncia da senide em ciclos por segundo, ou Hertz(Hz).
Se a freqncia de uma senide for 5 HZ, teremos:
g(t) = sen (25t) = sen (10t)
Ento haver cinco ciclos da senide em um segundo, ou seja, a freqncia de uma senide
5 HZ. O perodo P de uma senide o intervalo de tempo que corresponde a um ciclo; portanto,
o perodo desta senide 0,2 segundos. A relao entre perodo e freqncia dada por
f = 1/ P
onde f a freqncia em Hz e P o perodo em segundos.
Se a senide multiplicada por um escalar A, a equao pode ser escrita nesta forma:
g(t) = Asen (2ft)
O escalar tambm chamado de amplitude da senide. Uma senide com um ngulo de
fase em radianos pode ser escrita como:
g(t) = Asen (2ft + )
Se o ngulo de fase for igual a /2 radianos, a senide poder ser escrita sob termos de
uma funo seno ou cosseno, e pode ou no incluir um ngulo de fase.
Curso de MATLAB
Cap. 3 Clculos com Matrizes 35
Gerando um sinal sonar
Conforme j dito, um dos tipos de sinais usados em sistemas de sonar um sinal senoidal.
As senides podem ser representadas pela equao:
onde :
E a energia transmitida,
PD a durao do pulso em segundos,
f
c
a freqncia em Hertz.
Durao de um sinal sonar podem alcanar de uma frao de milisegundos a alguns
segundos; e as freqncias, de poucas centenas de Hz a dezenas de KHz dependendo do sistema e
do alcance de operao desejado.
Escreva um programa MATLAB que permita ao usurio entrar com valores de E, PD, e f
c
para gerar um sinal sonar. Armazene os valores do sinal em um arquivo MAT denominado
sonar.mat. A amostragem do sinal deve cobrir a durao do pulso e conter 10 amostras de cada
perodo de x(t). Alm disso, adicione um perodo de 200 pontos de silncio depois do pulso.
1. ENUNCIADO DO PROBLEMA
Escreva um programa para gerar um sinal sonar que contenha 10 amostras de cada perodo
de uma senide especfica, cobrindo uma durao de tempo determinada.
2. DESCRIO ENTRADA/SADA
Os valores de E (energia transmitida em joules), PD (durao do pulso em segundos), e f
c
(freqncia em Hz) so os valores de entrada. A sada um arquivo denominado sonar.mat, que
contm os valores de tempo e sinal para a durao do pulso sonar, como mostramos na figura 3.7.
Tambm plotamos o sinal sonar.
3. EXEMPLO MANUAL

'

tes ins demais os para


PD t fc
PD
E
t s
tan 0
0 ), 2 cos(
2
) (

sonar.mat
Curso de MATLAB
Cap. 3 Clculos com Matrizes 36
Para um exemplo manual, usamos os valores a seguir:
E = 500 joules
PD = 5 milisegundos (ms)
f
c
= 3,5 KHz
O perodo da senide 1/3500, ou aproximadamente 0,3 ms. Assim, para ter 10 amostras
por perodo, o intervalo da amostragem precisa ser aproximadamente 0,03 ms. A durao do pulso
0,5 ms, e portanto precisamos de 167 amostras do sinal:
Os primeiros valores do sinal sonar so calculados com aproximao de uma casa decimal.
t (ms) 0,00 0,03 0,06 0,09 0,12 0,15 0,18 0,21 0,24 0,27 0,30 0,33
s(t) 447,2 353,4 111,2 -177,6 -391,9 -441,7 -306,1 -42,1 239,6 420,8 425,3 251,4
Adicionaramos 200 pontos de silncio atravs de dados adicionais com seus tempos
correspondentes e valores de sinais.
4. SOLUO MATLAB
3.5 Nmeros Complexos
As solues de muitos problemas de engenharia como sistema de controle para um brao
mecnico ou anlise da estabilidade de um circuito eltrico envolvem a busca das razes de uma
equao da seguinte forma:
y = f(x)
onde as razes so os valores de x para qual y igual a zero.
Considere a forma geral para um polinmio de grau n:
a
1
x
n
+ a
2
x
n-1
+ a
3
x
n-2
+ + n
a-1
x
2
+ a
n
x + a
n+1
= 0
Um polinmio de grau n ter n razes, sendo que algumas podem ser razes mltiplas ou
razes complexas. Nesta seo discutiremos as operaes com nmeros complexos e as funes
MATLAB que os usam.
) t 3500 2 cos( 2 , 447 ) t ( s
) t ) 3500 ( 2 cos(
005 , 0
1000
) t ( s
) t f 2 cos(
PD
E 2
) t ( s
c



Curso de MATLAB
Cap. 3 Clculos com Matrizes 37
Operaes Aritmticas com Nmeros Complexos
Os comandos MATLAB reconhecem os nmeros complexos usando i para representar -1.
(O MATLAB tambm reconhece o uso de j para representar -1. Esta notao mais usada na
Engenharia Eltrica). O comando a seguir define uma varivel complexa:
x = 1 - 0.5*i;
Quando executamos operaes entre dois complexos, o MATLAB automaticamente
executa os clculos necessrios. Se uma operao for entre um nmero real e um complexo, o
MATLAB supe que a parte imaginria do nmero real igual a zero. O MATLAB inclui vrias
funes que so especficas aos nmeros complexos:
real (x) Calcula a parte real do nmero complexo x.
imag(x) Calcula a parte imaginria do nmero complexo x.
conj(x) Calcula o conjugado do nmero complexo x.
abs(x) Calcula o mdulo do nmero complexo x.
angle(x) Calcula o ngulo usando o valor de atan2 (imag(x), real(x)), e portanto o ngulo est
entre - e .
Estas funes tornam mais fcil converter o complexo da forma polar para retangular.
Coordenadas polar e retangulares
Podemos representar um nmero complexo em um plano com eixos real e imaginrio. Os
nmeros reais representam o eixo x, e os nmeros imaginrios representam o eixo y, e os nmeros
com partes real e imaginria representam o resto do plano.
Quando representamos um nmero complexo com uma parte real e imaginria, como 2 +
i3, estamos usando uma notao retangular. A figura 3.10 mostra que o nmero complexo pode ser
escrito com um ngulo e raio r em relao origem. Esta forma chamada de notao polar, e o
ponto 2 + i3 pode ser representado em notao polar com um ngulo de 0,98 radianos e um raio3,6.
Eixo
imaginrio
Eixo
real
1 2 3 4
3
2
1
(2,3)
Figura 3.10 Plano Complexo
Curso de MATLAB
Cap. 3 Clculos com Matrizes 38
Converso
- retangular a polar
- polar a retangular
a = r cos
b = r sen
Se x um nmero complexo, ento o mdulo e a fase podem ser calculados com os
seguintes comandos:
r = abs (x);
theta = angle (x);
Para calcular o nmero complexo usando mdulo e fase determinados, usamos o comando:
y = r*exp (i*theta);
Podemos calcular a parte real e a parte imaginria de um complexo com os comandos:
a = real (x);
b = imag (x);
Para calcular o complexo com partes real e imaginria especficas, usamos:
y = a + i*b;
E x e r c c i o s
Converter os nmeros complexos nos problemas abaixo. Verifique suas respostas usando o
MATLAB.
1. 3 i2
2. i
3. 2
4. 0,5 + i
a
b
tan
b a r
1
2 2


+
Curso de MATLAB
Cap. 3 Clculos com Matrizes 39
Converter os valores abaixo para forma retangular. Verifique suas respostas usando as
funes MATLAB.
5. e
i
6. e
i0,75
7. 0,5 e
i2,3
8. 3,5e
i3
Curso de MATLAB
Cap. 4 Controle de Fluxo 40
Captulo 4 - Controle de Fluxo
4.1 Operadores Lgicos e Relacionais
Operadores Relacionais
O MATLAB tem operadores relacionais que podem ser usados para comparar duas
matrizes de mesma ordem ou para comparar uma matriz e um escalar, como os mostrados a seguir:
Operador Descrio
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
= = Igual a (no sentido de condio)
~ = No igual a
A finalidade dos operadores fornecer respostas a perguntas do tipo falso/verdadeiro.
Assim, se a comparao for verdadeira, atribui-se o valor 1; se for falsa, o valor 0.
Considere a expresso lgica a seguir:
a < b
Se a e b forem escalares, ento o valor da expresso ser 1 (verdadeira) se a for menor que
b; caso contrrio, a expresso ser 0 (falsa). Se a e b forem vetores com os valores a seguir:
a = [ 2 4 6]
b = [ 3 5 1]
Ento, o valor de a < b ser o vetor [1 1 0], enquanto o valor de a ~ = b ser [1 1 1].
Operadores Lgicos
Podemos combinar expresses usando os operadores lgicos do MATLAB. Os operadores
so representados pelos seguintes smbolos.
Curso de MATLAB
Cap. 4 Controle de Fluxo 41
Operadores Descrio
& e
| ou
~ no
Quando duas expresses so unidas por e ; o resultado ser 1 (verdadeiro) se ambas
expresses forem verdadeiras, para expresses unidas por ou, o resultado ser 1 (verdadeiro) se uma
ou ambas expresses forem verdadeiras. Assim, para a seguinte expresso lgica
a < b & b < c
O resultado ser 1 (verdadeiro) somente se a < b < c; e falso (0) para todos resultados
diferentes. Alm disso, a operao s ser vlida se as matrizes resultantes (a < b e b < c) tiverem
o mesmo tamanho.
Uma expresso pode conter vrios operadores lgicos, como a expresso abaixo:
~ (b = = c | b = = 5.5)
O MATLAB analisaria primeiro, as expresses b = = c e b = = 5.5 (obviamente, por causa
do uso de parnteses). O resultado seria inversamente pelo operador no. Assim, suponha b = = 3
e c = = 5. Nenhuma das expresses verdadeira, logo, a expresso b = = c | b = = 5.5 falsa.
Aplicando o operador no, o valor da expresso alterado e a mesma torna-se verdadeira.
A prioridade dos operadores lgicos, do mais alto ao mais baixo, : no, e, e ou.
E x e r c c i o s
Determine se as expresses nos problema 1 a 8 so verdadeiras ou falsas. Depois,
verifique suas respostas usando o MATLAB. Lembre que ao verific-las , voc precisa entrar com
a expresso. Suponha que as variveis tenham os valores indicados abaixo:
a = 5.5 b = 1.5 k = -3
1. a < 10.0
2. a + b >= 6.5
3. k ~= 0
4. b k > a
5. ~(a = = 3*b)
6. k < = k + 6
7. a < 10 & a > 5
8. abs (k) > 3 | k < b - a
Curso de MATLAB
Cap. 4 Controle de Fluxo 42
4.2 Tomada de Decises
Estrutura If Else End
if expresso
Comandos
End
Se a expresso lgica for verdadeira, os comandos entre if e end so executados. Como
exemplo, temos:
if a < 50
count = count +1;
sum = sum + a;
end
Suponha que a seja um escalar. Se a < 50, ento count incrementada por 1 e a
adicionada sum; caso contrrio, os comandos no sero executados. Se a no for um escalar,
ento count incrementado por 1 e a adicionada sum somente se cada elemento em a for menor
que 50.
A prxima estrutura contm um parmetro if dentro de outro parmetro if:
if expresso 1
grupo de comandos A
if expresso 2
grupo de comandos B
end
grupo de comandos C
end
grupo de comandos D
Se a expresso 1 for verdadeira, os grupos de comandos A e C so executados. Se a
expresso 2 tambm for verdadeira, o grupo de comandos B executado antes do grupo de
comandos C. Se a expresso 1 for falsa, imediatamente salta-se para os comandos D. Como
exemplo, temos:
if a < 50
count = count + 1
sum = sum + a;
if b > a
b = 0;
end
end
Curso de MATLAB
Cap. 4 Controle de Fluxo 43
Novamente, suponha que a e b sejam escalares. Ento, se a < 50 aumentaremos count por 1
e adicionaremos a sum. Se b > a, ento b ser igual a zero. Se a no for menor que 50, ento
pula-se diretamente para o segundo end. Se a e nem b forem escalares, ento b maior que a
somente se cada par de elementos correspondentes de a e b so valores nos quais b > a. Se a ou b
um escalar, ento a matriz comparada ao escalar.
Instruo Else
Esta instruo permite que executemos um comando se a expresso lgica verdadeira e
um diferente comando se a expresso falsa. A forma geral do comando if combinada instruo
else mostrada a seguir:
if expresso
grupo de comandos A
else
grupo de comandos B
end
Se a expresso lgica verdadeira, ento o grupo de comandos A executado. Caso
contrrio, o grupo de comandos B executado.
Como exemplo, suponha que um txi esteja passando entre dois edifcios. Considere que a
varivel d contenha a distncia do veculo ao edifcio mais prximo. Se o carro estiver a 10 metros
do edifcio, a velocidade calculada usando a seguinte equao:
velocidade = 0,425 + 0,00175d
2
Se o txi estiver a uma distncia maior que 10 metros, use a equao a seguir:
velocidade = 0,625 + 0,12d 0,00025d
2
Calculamos a velocidade correta com estes comandos:
if d < = 1 0
velocidade = 0.425 + 0.00175*d^2
else
velocidade = 0.625 + 0.12d 0.00025*d^2
end
Quando h muitas alternativas a serem executadas, pode ser mais difcil determinar quais
expresses lgicas devam ser verdadeiras (ou falsas) para executar cada grupo de comandos. Neste
caso, a clusula elseif freqentemente usada para simplificar o programa lgico:
Curso de MATLAB
Cap. 4 Controle de Fluxo 44
if expresso 1
grupo de comandos A
elseif expresso 2
grupo de comandos B
elseif expresso 3
grupo de comandos C
end
Se a expresso 1 for verdadeira, somente o grupo de comandos A executado. Se a
expresso 1 for falsa e a expresso 2 for verdadeira, ento somente o segundo grupo de comandos
executado. Se as expresses 1 e 2 forem falsas e a expresso 3 for verdadeira, ento somente o
grupo de comandos C executado. Se mais de uma expresso lgica for verdadeira, a primeira que
for verdadeira determina qual grupo de comandos ser executado. Se nenhuma das expresses
lgicas forem verdadeiras, ento nenhum dos comandos dentro da estrutura if executado.
Else e elseif podem ser combinadas dentro de uma estrutura if-else-end, como mostramos
a seguir:
if expresso 1
grupo de comandos A
elseif expresso 2
grupo de comandos B
elseif expresso 3
grupo de comandos C
else
grupo de comandos D
end
Se nenhuma das expresses lgicas forem verdadeiras, ento o grupo de comandos D
executado.
E x e r c c i o s
Nos problemas 1 a 7, d os comandos MATLAB necessrios para executar os passos
indicados. Suponha que as variveis so escalares.
1. Se time maior que 50, ento incremente-a por 1.
2. Quando a raiz quadrada de poly for menor que 0,001, imprima o valor de poly;
3. Se a diferena entre volt_1 e volt_2 for maior que 2, imprimir os valores de volt_1 e volt_2;
4. Se o valor de den for menor que 0, 003; atribua zero a result; caso contrrio, atribua a result
num dividido por dez;
Curso de MATLAB
Cap. 4 Controle de Fluxo 45
5. Se o logaritmo natural de x for maior ou igual a 10, atribua zero a time e incremente-o por
count;
6. Se dist for maior que 50 e time for maior que 10, incremente time por 2; caso contrrio,
incremente time por 5.
7. Se dist for maior ou igual a 100, incremente time por 10. Se dist estiver entre 50 e 100,
incremente time por 1. Caso contrrio incremente time por 0,5.
4.3 Loop FOR
O MATLAB contm dois comandos para gerar loops, o comando for e o comando while.
Nesta seo, discutiremos o comando for, e a seo 4.4 discutiremos o comando while.
O comando for tem a estrutura a seguir:
for varivel = expresso
Grupo de comandos A
end
Os comandos entre as instrues for e end so executados uma vez para cada coluna da
expresso matricial. A cada iterao, a varivel atribuda para a prxima coluna da matriz, isto ,
durante o i-simo ciclo do loop, temos que varivel = expresso matricial (: , i ). Veja o exemplo a
seguir:
Suponha que temos um grupo de valores que representam a distncia de um txi da torre
mais prxima. Queremos gerar um vetor que contenha as respectivas velocidades. Se o txi est a
10 metros do edifcio, usamos a equao:
velocidade = 0,425 + 0,00175d
2
Se o txi estiver a uma distncia maior que 10 metros, use a equao a seguir:
velocidade = 0,625 + 0,12d 0,00025d
2
Como a escolha da equao da velocidade depende do valor de d, devemos determinar
separadamente d(1), d(2), e assim por diante. Contudo, no queremos o mesmo para calcular
velocidade(1), velocidade(2) e assim por diante. Logo, usaremos um loop, com a varivel usada
como subscrito.
Na primeira soluo, supomos que existiam 25 elementos no vetor d..
Curso de MATLAB
Cap. 4 Controle de Fluxo 46
for d = 1:25
if d < = 10
velocidade = 0.425 + 0.00175*d^2
else
velocidade = 0.625 + 0.12*d 0.00025*d^2
end
Na prxima soluo, supomos que o tamanho do vetor d desconhecido. Contudo,
usamos a funo size para determinar o nmero de vezes que queremos executar o loop.
for k = 1:size (d,2)
if d(k) < = 10
velocidade = 0.425 + 0.00175*d(k)^2
else
velocidade = 0.625 + 0.12*d 0.00025*d(k)^2
end
end
As regras para um loop for so:
Se o conjunto for uma matriz vazia, o loop no ser executado. O fluxo de controle passar ao
prximo comando aps a instruo end;
Se a expresso for um escalar, o loop ser executado uma nica vez;
Se a expresso for um vetor-linha, ento a cada iterao a varivel conter o prximo valor do
vetor;
Se a expresso for uma matriz, ento a cada iterao a varivel conter a prxima coluna da
matriz;
Uma vez completo o loop for a varivel contm o ltimo valor usado.
Se o operador dois-pontos usado para definir a expresso matricial usando o formato:
for k = incio: incremento: limite
Ento o nmero de vezes que o loop executar pode ser calculado usando a equao:
Se este valor for negativo, o loop no ser executado. Portanto, se um comando for
contiver a seguinte informao:
for k = 5: 4: 83
Ento, o nmero de vezes em que executa-se o loop ser:
1
incremento
incio ite lim
floor +
,
`

.
|
Curso de MATLAB
Cap. 4 Controle de Fluxo 47
O valor de k seria 5, depois 9, 13, e assim por diante at o valor final 81. O loop no seria
executado para k = 85 porque maior que o limite, 83.
Comando break
O comando break pode ser usado para sair de um loop antes que o mesmo seja completo.
freqentemente usado se houver um erro detectado dentro do loop.
E x e r c c i o s
Determine o nmero de vezes que o loop for definido pelos comandos a seguir so
executados. Verifique sua resposta .
1. for k = 3:20
2. for count = -2:14
3. for k = -2:-1:10
4. for time = 10:-1:0
5. for time = 10:5
6. for index = 52 : -12
Aplicao Soluo de Problemas: Fibras ticas
Se a luz est direcionada para o extremo de uma longa haste de vidro ou plstico, a luz ser
totalmente refletida pelas paredes, ziguezagueando e segue adiante at chegar a outra extremidade.
Este interessante fenmeno tico pode ser usado para transmitir luz e imagens regulares, de um
lugar para outro. Se guia de luz, a luz seguir a forma da haste e emergir somente na
extremidade, como mostramos na figura a seguir:
20 1
4
78
floor 1
4
5 83
floor +
,
`

.
|
+
,
`

.
|
fibra tica
Curso de MATLAB
Cap. 4 Controle de Fluxo 48
A fibra tica uma fibra de vidro muito fina. Se os extremos das fibras so polidos e o
arranjo espacial o mesmo em ambos extremos (um feixe coerente), a fibra pode ser usada para
transmitir uma imagem, e o feixe chamado condutor de imagem. Se as fibras no tem o mesmo
arranjo para ambos extremos (feixe incoerente), a luz transmitida em vez da imagem, e por esta
razo chamada guia de luz. Por causa da flexibilidade das fibras ticas, as guias de luz e
condutores de imagens so usados em instrumentos projetados para permitir a observao visual de
objetos ou reas que de outro modo seriam inacessveis. Por exemplo, um endoscpio um
instrumento usado por fsicos para examinar o interior do corpo de um paciente com somente um
pequeno corte. Um endoscpio usa uma fibra tica para transmitir a luz necessria dentro do corpo
de um paciente. As fibras ticas podem ser usadas para transmitir feixes de luz LASER, o qual
pode ser usado para desobstruir artrias, quebrar pedras nos rins, e limpar cataratas.
Este fenmeno de reflexo total interna origina-se da lei de Snell e depende unicamente
dos ndices de refrao para os material considerados para guias de luz. Um guia de luz
composto de dois materiais o ncleo central e o material que o envolve, denominado de
blindagem. O material que compe o ncleo tem o ndice de refrao mais alto que o meio que o
envolve. Quando a luz incide em uma interface entre dois meios com ndices de refrao diferentes,
parte dela refletida a outra parte refratada. A quantidade de luz refratada depende dos ndices de
refrao dos materiais e o ngulo de incidncia da luz. Se a luz incidente na interface entre dois
meios provm de um material com maior ndice de refrao, ento parte da luz atravessa a interface.
O ngulo de incidncia onde a luz totalmente refletida pela superfcie chamado de ngulo crtico

c
. Como o ngulo crtico depende dos ndices de refrao de dois materiais, podemos calcular este
ngulo e determinar se a luz que entra em uma haste a um ngulo particular permanecer no interior
da mesma. Suponha que n
2
o ndice de refrao do meio envolvente, e n
1
o ndice de refrao da
haste. Se n
2
maior que n
1
, a haste no transmitir luz; caso contrrio, o ngulo crtico pode ser
determinado pela equao
sen
c
= n
2
/
_
n
1
Escreva um programa MATLAB que determina se a luz ser ou no transmitida por dois
materiais que forma um guia. Suponha que um arquivo de dados ASCII denominado indices.dat
contenha o nmero de possveis ndices de refrao da fibra seguido pelo ndice de refrao do meio
que o envolve. O programa deve determinar se os materiais formaro um guia de luz e, ento, para
quais ngulos a luz entra no guia.
1. ENUNCIADO DO PROBLEMA
Determine se os materiais especificados formaro ou no um guia de luz. Se eles no
formarem, calcule os ngulos para o qual a luz pode entra na haste e ser transmitida.
Curso de MATLAB
Cap. 4 Controle de Fluxo 49
2. DESCRIO ENTRADA \ SADA
Como mostramos na figura abaixo, a entrada ao programa um arquivo de dados contendo
os ndices de refrao para os guias de luz em potencial. A sada uma mensagem indicando se a
luz ou no transmitida e o ngulos para quais pode entrar no guia.
3. EXEMPLO MANUAL
O ndice de refrao do ar 1,0003 e o ndice do vidro 1,5. Se formarmos um guia de luz
de vidro envolvido pelo ar, o ngulo crtico
c
pode ser calculado como mostramos a seguir:

c
=

sen
1
(n
2
/ n
1
) = sen
1
(1,0003 / 1,5 ) = sen
1
( 0,66687 ) = 41, 82
0
O guia de luz transmitir luz para todos os ngulos de incidncia maiores que 41,82
0
.
4. SOLUO DO MATLAB
5. TESTANDO
4.4 Loops WHILE
O loop while uma importante estrutura para repetio de um grupo de comandos quando
a condio especificada for verdadeira. O formato geral para esta estrutura de controle :
while expresso
grupo de comandos A
end
Indices.dat
Mensagem
e c
Curso de MATLAB
Cap. 4 Controle de Fluxo 50
Se a expresso for verdadeira, ento o grupo de comandos A executado. Depois destes
comandos serem executados, a condio novamente questionada. Se for verdadeira, o grupo de
comandos novamente executado. Quando a condio for falsa, o controle pula para o comando
posterior ao comando end. As variveis modificadas no grupo de comandos A devem incluir as
variveis na expresso, ou o valor da expresso nunca ser mudado. Se a expresso for verdadeira
(ou um valor no-nulo), o loop torna-se um loop infinito.( Lembre-se que voc pode usar ^c para
sair um loop infinito).
Podemos mostrar que o uso de um loop while em um grupo de comandos que adicionam
valores em um vetor para uma soma at o valor negativo ser alcanado. Como todos os valores no
vetor podem ser positivos, a expresso no loop while deve acomodar a situao:
x = [ 1 2 3 4 5 6 7 8 9 ];
sum = 0;
k = 1;
while x (k) > =0 & k < size (x,2)
sum = sum + x(k);
k = k + 1;
end
Aplicao Soluo de Problemas: Equilbrio de Temperatura
O projeto de novos materiais para o aperfeioamento das caractersticas do fluxo de ar
acerca dos veculos envolve a anlise dos materiais para no somente o fluxo de ar mas tambm
para propriedades como a distribuio de temperatura. Neste problema, consideramos a
distribuio em uma fina placa metlica tal que esta alcance um ponto de equilbrio trmico. A
placa projetada para ser usada em uma aplicao na qual as temperaturas de todos os quatro lados
da placa metlica estejam a temperaturas constantes ou a temperaturas isotrmicas. A temperatura
para os outros pontos da placa uma funo da temperatura dos pontos envolventes. Se
considerarmos as placas para serem semelhantes a uma grade, ento uma matriz poderia ser usada
para armazenar as temperaturas dos pontos correspondentes sobre a placa. A figura abaixo mostra
uma grade para uma placa que est sendo analisada com seis medidas de temperatura ao longo dos
lados e oito temperaturas ao longo das partes superior e inferior. Os pontos isotrmicos nos quatros
lados so sombreados. Um total de 48 valores de temperaturas esto representados.
Curso de MATLAB
Cap. 4 Controle de Fluxo 51
Grade de uma placa metlica
As temperaturas isotrmicas sobre os quatro lados seriam especificadas; supomos que os
lados superior, esquerdo e direito so mantidos mesma temperatura enquanto que o lado inferior
da placa mantida a uma temperatura diferente. Os pontos restantes so inicialmente selecionados
para uma temperatura arbitrria, normalmente zero. A nova temperatura de cada ponto interno
calculado como a mdia das quatro temperaturas envolventes (veja a figura a seguir) e dada por:
T
0
= T1 + T2 + T3 + T4
4
Pontos que envolvem T
0
Depois de calcular a nova temperatura para um ponto interno, a diferena entre a antiga e a
temperatura recente calculada. Se a mudana de temperatura for maior que algum valor de
tolerncia especificado, a placa j no est em equilbrio trmico, e o processo inteiro repetido.
superior
inferior
e
s
q
u
e
r
d
a
d
i
r
e
i
t
a
T
0
T1
T
0
T
4
T
3
T
2
Curso de MATLAB
Cap. 4 Controle de Fluxo 52
Usamos as duas matrizes para as temperaturas, uma das antigas temperaturas e uma das
recentes temperaturas. Precisamos de duas matrizes porque supomos que a temperatura muda para
todos os pontos que ocorrem simultaneamente, sempre que as calculamos. Se usarmos uma nica
matriz, estaramos atualizando informao sem que antes estivssemos com a informao antiga.
Por exemplo, suponha que estamos calculando a nova temperatura para a posio (3, 3). O novo
valor a mdia das temperaturas nas posies (2, 3), (3, 2), (3, 4), e (4, 3). Quando calculamos a
nova temperatura para a posio (3, 4), novamente calculamos uma mdia, mas queremos usar o
antigo valor na posio (3, 3), e no o seu valor atualizado.
Portanto, usamos uma matriz de temperaturas antigas para calcular uma matriz de novas
temperaturas e para determinar se alguma temperatura muda acima da tolerncia. Quando
movemos as novas temperaturas para o conjunto antigo. Quando nenhuma das temperaturas muda
acima da tolerncia, supomos que o equilbrio foi alcanado, e imprimimos as temperaturas finais.
1. ENUNCIADO DO PROBLEMA
Determine os valores de equilbrio para uma placa de metal com lados isotrmicos.
2. DESCRIO ENTRADA / SADA
Como mostra a figura abaixo, a entrada o tamanho da grade da placa, as temperaturas
isotrmicas e o valor de tolerncia. A sada o grupo de temperaturas de equilbrio para a placa de
metal.
3. EXEMPLO MANUAL
Tenha a certeza que compreende o processo, examinamos um simples caso, estudando
cada iterao. Supondo que a matriz contm quatro linhas e quatro colunas. As temperaturas
isotrmicas so 100 e 50, e ns iniciamos todos os pontos restantes do zero. Usamos uma
tolerncia de 40. O grupo inicial de temperaturas e as sucessivas iteraes ao equilbrio trmico
so mostradas a seguir:
temperaturas isotrmicas
tamanho da grade
tolerncia
Equilbrio de
temperatura
Curso de MATLAB
Cap. 4 Controle de Fluxo 53
Temperaturas Iniciais
100 100 100 100
100 0 0 100
100 0 0 100
50 50 50 50
Primeira Iterao
100 100 100 100
100 50 50 100
100 37,5 37,5 100
50 50 50 50
Segunda Iterao
100 100 100 100
100 71,875 71,875 100
100 59,375 59,375 100
50 50 50 50
Como nenhuma das temperaturas alteradas entre a primeira e segunda interao
ultrapassam a tolerncia de 40
0
, as temperaturas na segunda iterao esto tambm em equilbrio.
4. SOLUO DO MATLAB
5. TESTANDO
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 54
Captulo 5 - Medidas Estatsticas
Analisar dados coletados de ensaios de engenharia uma parte importante da
avaliao dos mesmos. O alcance da anlise estende-se dos mais simples clculos de
dados, como a mdia aritmtica, mais complexa anlise que calcula medidas como o
desvio padro ou varincia dos dados. Medidas como estas so medidas estatsticas
porque suas propriedades no so exatas. Por exemplo, o seno de 60
0
uma medida
exata pois o valor sempre o mesmo toda vez que o calculamos, mas a velocidade
mxima que atingimos com o nosso carro uma medida estatstica porque varia
dependendo de parmetros como a temperatura, condies da estrada, e se estamos
nas montanhas ou no deserto. No s podemos medir as propriedades e caractersticas
de dados estatsticos como tambm usar o computador para gerar seqncias de
valores (nmeros aleatrios) com caractersticas especficas. Neste captulo,
aprenderemos a usar as funes para anlise de dados do MATLAB e a gerar
seqncias de nmeros aleatrios com caractersticas especficas.
5.1 Funes para Anlise de Dados
Para se estudar o desempenho de duas companhias corretoras de aes,
selecionou-se de cada uma delas amostras aleatrias das aes negociadas. Para cada
ao selecionada, computou-se a porcentagem de lucro apresentada durante um
perodo de tempo. Os dados esto a seguir:
Corretora A 45 60 54 62 55 70 38 48 64 55 56 55 54 59 48 65 55 60
Corretora B 57 55 58 50 52 59 59 55 56 61 52 53 57 57 50 55 58 54
Os grficos para os dados das corretoras A e B so mostrados abaixo para
podermos comparar os dois conjuntos de dados:
Para decidir qual corretora obteve melhor desempenho, alguns critrios
foram considerados como:
Mdia mais alta de percentagem de lucro;
Maior percentagem de lucro;
Menor variao de Percentagem de lucro;
Figura 5.2 - Percentagem de lucro
apresentada pela corretora B durante 18
dias.
Figura 5.1 - Percentagem de lucro
apresentada pela corretora A durante 18
dias.
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 55
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:
Qual a mdia percentual de lucro das aes durante os 18 dias de observao?
mean : calcula a mdia aritmtica de um grupo de valores. Assim, para as corretoras A
e B, temos:
mean (corretoraA) mean (corretoraB)
ans = ans =
55.7222 55.4444
Qual corretora alcanou a mais alta percentagem de lucros?
A funo max determina a maior percentagem de lucro em cada corretora. A
funo max determina o maior valor de um conjunto de dados.
max(corretoraA) max(corretoraB)
ans = ans =
70 61
E a menor percentagem?
As menores margens de lucro obtidas por cada corretora so dadas pelo
comando min .
min(corretoraA) min(corretoraB)
ans = ans =
38 50
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 56
Qual corretora apresenta menor variao de percentual de lucro de aes?
As duas corretoras tiveram mdias bastantes prximas. Contudo, a mdia,
por ser uma medida representativa de posio central, mascara toda a informao
sobre a variabilidade dos dados das corretoras A e B. necessrio uma medida que
resuma a variabilidade de dois grupos de valores, permitindo compara-los, conforme
algum critrio estabelecido. O critrio mais comum aquele que mede a concentrao
de dados em torno de sua mdia e, as medidas mais usadas so: o desvio mdio e a
varincia.
Desvio Mdio, Varincia e Desvio Padro
Sabendo que a mdia dos valores da corretora A 55,72 , os desvios x
i
x
so: 10,72; - 4,28; 1.72; - 6,28; 0,72; -14,28 , Para qualquer conjunto de dados, a
soma dos desvios igual a zero. mais conveniente usarmos ou o total dos desvios
em valor absoluto ou o total dos quadrados dos desvios. Assim, teramos:
O desvio mdio e a varincia so definidos, usando os termos acima:
Ento, desvio mdio e a varincia dos dados da corretora A so
respectivamente 5,5802 e 58,9183. Para a corretora B, seriam 2,5556 e 9,9084. A
corretora A tem maior variabilidade em porcentagem de lucro de aes, segundo o
desvio mdio. Isto significa que o percentual de lucro de aes da corretora B mais
homogneo que o da corretora A.
Para evitar erros de interpretao a varincia uma medida que expressa
um desvio quadrtico mdio usamos o desvio padro (), que definido como a
raiz quadrada da varincia ()
2
. O MATLAB tem uma funo especfica para o
clculo de desvio padro denominada std . Portanto, para o exemplo das corretoras:
std(corretoraA) std(corretoraB)
ans =7.6758 ans =3.1478
4436 , 100 28 , 4 72 , 0 ... 28 , 14 72 , 0 28 , 6 72 , 1 28 , 4 72 , 10 x x
18
0 i
i
+ + + + + + + +

( ) 5294 , 1060 44 , 1 56 , 2 ... 56 , 3 44 , 3 44 , 5 56 , 2 44 , 0 56 , 1 x x


18
0 i
2
i
+ + + + + + + +

( )
n
x x
Varincia
2
n
1 i
i

n
x x
o DesvioMdi
n
1 i
i

Curso de MATLAB
Cap. 5 - Medidas Estatsticas 57
Para o MATLAB, a varincia de um conjunto de dados definida por:
onde a mdia do conjunto de valores. O denominador N 1 deve ser usado toda
vez que estivermos trabalhando com uma amostra. Quando no houver a preocupao
em saber se trabalhamos com populao ou amostra, podemos usar o denominador n.
Para grandes amostras pouca diferena far se usarmos um ou outro.
Os comandos mean, std, max e min determinam, respectivamente, a mdia, o
desvio padro, o mximo valor e o valor mnimo de um vetor. No exemplo acima,
usamos os dados da corretora A e armazenamos em um vetor denominado
corretoraA e fizemos o mesmo para a corretora B. Mas estas funes tambm so
vlidas para matrizes. Elas retornam um vetor-linha contendo, respectivamente, a
mdia, o desvio padro, o mximo valor, o mnimo valor de cada coluna. Um
exemplo de aplicao de medidas estatsticas para matrizes dado a seguir:
A JR Indstria de Alimentcios, desejando melhorar o nvel de seus
funcionrios em cargos de chefia, montou um curso experimental e indicou 15
funcionrios para sua primeira turma. Os dados referentes seo a que pertencem e
notas obtidas esto na tabela a seguir.
Usando os dados da tabela, determine:
A mdia em cada disciplina;
As menores notas em cada disciplina e os funcionrios que as obtiveram;
E,
Dispor as notas de Administrao em forma crescente;
Comparar os funcionrios das sees de Vendas e Tcnicas e determinar a maior
nota destes funcionrios em cada disciplina;
Comparar a distribuio dos dados nas disciplinas de Direito, Metodologia e
Economia.
( )
1 N
x
N
1 k
2
k
2

Curso de MATLAB
Cap. 5 - Medidas Estatsticas 58
Func. Seo ADM DIR RED ECO ING MET
1 Pessoal 8.0 9.0 8.6 8.5 9.0 9.0
2 Pessoal 8.0 9.0 7.0 8.0 9.0 6.5
3 Pessoal 8.0 9.0 8.0 8.5 8.0 9.0
4 Pessoal 6.0 9.0 8.6 8.5 8.0 6.0
5 Pessoal 8.0 9.0 8.0 9.0 9.0 6.5
6 Tcnica 10.0 9.0 8.0 8.5 8.0 6.0
7 Tcnica 8.0 9.0 9.0 8.0 9.0 10.0
8 Tcnica 10.0 9.0 8.0 7.5 8.0 9.0
9 Tcnica 8.0 9.0 10.0 8.0 10.0 10.0
10 Tcnica 8.0 9.0 7.0 8.5 7.0 6.5
11 Vendas 8.0 9.0 9.0 7.5 7.0 9.0
12 Vendas 8.0 9.0 7.0 7.0 8.0 10.0
13 Vendas 8.0 9.0 8.0 7.5 9.0 6.0
14 Vendas 6.0 9.0 9.0 7.5 4.0 6.0
15 Vendas 6.0 9.0 4.0 8.5 7.0 6.0
Sabemos que a funo mean calcula a mdia dos elementos de um vetor. Em
uma matriz, a funo calcula um vetor linha que contm a mdia de cada coluna.
Para o exemplo do curso de aperfeioamento, podemos considerar a lista de
funcionrios e suas respectivas notas em cada disciplina, uma matriz 15 x 6, onde as
colunas representam as disciplinas do curso, facilitando o clculo da mdia da turma
em cada matria. Ento, definindo a matriz no MATLAB.
TURMA = [ 8.0 9.0 8.6 8.5 9.0 9.0
8.0 9.0 7.0 8.0 9.0 6.5
8.0 9.0 8.0 8.5 8.0 9.0
6.0 9.0 8.6 8.5 8.0 6.0
8.0 9.0 8.0 9.0 9.0 6.5
10.0 9.0 8.0 8.5 8.0 6.0
8.0 9.0 9.0 8.0 9.0 10.0
10.0 9.0 8.0 7.5 8.0 9.0
8.0 9.0 10.0 8.0 10.0 10.0
8.0 9.0 7.0 8.5 7.0 6.5
8.0 9.0 9.0 7.5 7.0 9.0
8.0 9.0 7.0 7.0 8.0 10.0
8.0 9.0 8.0 7.5 9.0 6.0
6.0 9.0 9.0 7.5 4.0 6.0
6.0 9.0 4.0 8.5 7.0 6.0];
E denominando o vetor que representa a mdia da turma em cada disciplina
de MEDIA_TURMA, temos:
MEDIA_TURMA = mean (TURMA)
A
D
M


a
d
m
i
n
i
s
t
r
a

o
D
I
R


d
i
r
e
i
t
o
R
E
D


r
e
d
a

o
E
C
O


e
c
o
n
o
m
i
a
I
N
G


i
n
g
l

s
M
E
T

-

m
e
t
o
d
o
l
o
g
i
a
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 59
MEDIA_TURMA =
7.8667 9.0000 7.9467 8.0667 8.0000 7.7000
A sada do MATLAB mostra que as mdias da turma nas disciplinas de
Administrao, Direito, Redao, Economia, Ingls e Metodologia so,
respectivamente, 7.8667, 9.0000, 7.9467, 8.0667, 8.0000 e 7.7000.
Se quisssemos apenas a mdia da turma em Redao, usaramos o operador
dois pontos (:), conforme mostraremos a seguir:
MEDIA_RED = mean (TURMA (: , 3))
MEDIA_RED =
7.9467
ou ainda, a mdia dos funcionrios da seo de Pessoal em Direito:
MEDIA_PDIR = mean (TURMA(1:5, 2))
MEDIA_PDIR =
9.0000
Menores notas e os funcionrios que as obtiveram
A funo min retorna o menor valor de um vetor. Em uma matriz, a funo
retorna um vetor-linha cujos elementos so os menores valores de cada coluna. Alm
disso, apresenta a forma [y, i] = min (x) onde armazena os menores elementos de
cada coluna em um vetor y, e os ndices (respectivas linhas) no vetor i. se existirem
valores idnticos, o ndice do primeiro retornado. Logo, se usarmos esta forma da
funo min na matriz TURMA, podemos determinar a menor nota em cada disciplina
o funcionrio que a obteve. No caso, o vetor y denominar-se- GRAU_MIN.
[ GRAU_MIN, i ] = min (TURMA)
GRAU_MIN =
6 9 4 7 4 6
i =
14 1 15 12 14 4
Assim, o funcionrio 14 obteve a menor nota (6,0) em Administrao, o
mesmo acontece em Ingls. Observe que atribuiu-se ao funcionrio 1 o menor grau
em Direito, disciplina em que todos tiveram o mesmo grau. Conforme vimos, quando
h valores mnimos idnticos, o ndice do primeiro valor retornado. Por isso, a
atribuio do funcionrio 1.
Esta forma vlida tambm para a funo max.
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 60
Notas de Administrao em Forma Ascendente
O MATLAB contm uma funo que distribui, em ordem ascendente, os
elementos de um vetor ou os elementos de cada coluna de uma matriz. Sua forma
geral :
sort(x)
Como queremos apenas as notas da turma em Administrao em ordem ascendente,
usamos a funo sort. Porm, devemos antes selecionar a disciplina de
Administrao, utilizando o operador dois pontos ( : ),
ADM = TURMA( : , 1);
GRAU_ASC = sort (ADM)
Poderamos calcular diretamente sem
precisar definir o vetor-coluna ADM:
GRAU_ASC = sort (TURMA( : , 1))
Se quisssemos somente as trs menores notas,
faramos:
GRAU_ASC = sort (TURMA( : , 1));
ASC_3 = sort (GRAU_ASC ( 1: 3 , 1))
A funo sort tambm apresenta a forma [y, I ] = sort
(x) onde os valores dispostos em forma crescente so
armazenados na matriz y e seus ndices , na matriz i.
Se x contiver valores complexos, os elementos sero
distribudos de forma ascendente de acordo com seus
valores absolutos.
Tente fazer:
[y,i] = sort (TURMA)
Comparao entre as distribuies de dados de Direito, Metodologia e
Economia.
Para auxiliar na comparao entre dados de variveis, usaremos um tipo
especial de grfico que particularmente relevante s medidas estatsticas discutidas
nesta seo. Um histograma um grfico que mostra a distribuio de um grupo de
valores. No MATLAB, o histograma calcula o nmero de valores a distribuir em 10
GRAU_ASC =
6
6
6
8
8
8
8
8
8
8
8
8
8
8
10
10
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 61
barras igualmente espaadas entre os valores mximos e mnimo de um grupo de
valores. A forma geral para plotar um histograma mostrada a seguir:
hist (x)
onde x um vetor contendo os dados a serem usados no histograma. Se quisermos
plotar a segunda coluna em uma matriz, podemos usar o operador dois pontos como
mostrado a seguir:
hist (x ( :, 2 ))
O comando hist nos permite selecionar o nmero de barras. Portanto, se
quisermos aumentar a resoluo dos histograma tal que usemos 25 barras, em vez de
10, faremos:
hist ( x , 25)
A informao usada para plotar tambm pode ser armazenada em vetores.
Considere os seguintes comandos:
[ n , x ] = hist (GRAU_MIN);
[ n , x ] = hist (GRAU_MIN, 6);
Nenhum destes comandos plota um histograma. O primeiro comando calcula
valores para dois vetores, n e x. O vetor n contm os dados para 10 barras, e o vetor x
contm o ponto que corresponde ao meio de cada alcance da barra. O segundo
comando similar, mais armazena 6 dados em n, e 6 pontos de meio barra em x.
Estes vetores so usados geralmente em grficos do tipo bar, que ser discutido no
captulo 7.
Agora, podemos usar o histograma para comparar e indicar as diferenas
existentes entre as distribuies de dados de Direito, Metodologia e Economia.
Figura 5.3 - Histograma de Direito Figura 5.4 - Histograma de Economia
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 62
Observe as diferenas entre os histogramas. Enquanto o histograma de
Direito indica que todos os alunos obtiveram grau 9,0; em Economia, indica que
apenas 1 funcionrio conseguiu o mesmo grau e em Metodologia, quatro
funcionrios. Tambm em Metodologia, h maior percentagem de notas menores que
7,0. Podemos afirmar que as notas so mais homogneas em Direito. O que
confirmado se usarmos funes j vistas como mean e std.
Para terminar a parte de funes de anlise de dados, mais um exemplo.
Seja o quadro abaixo que mostra a taxa de juros durante os ltimos 18 meses.
Suponha que algum lhe perguntasse como acompanhar o acmulo de taxa de juros
ms a ms.
Ms/ano Jan/97 Fev/97 Mar/97 Abr/97 Mai/97 Jun/97 Jul/97
Juros a.m (%) 1,25 1,16 1,13 1,12 1,4 1,16 1,16
Ms/ano Ago/97 Set/97 Out/97 Nov/97 Dez/97 Jan/98 Fev/98
Juros a.m (%) 1,13 1,15 1,10 2,04 1,82 1,65 0,95
Provavelmente, voc diria que bastaria somar taxa de juros inicial, os
juros do ms seguinte e assim por diante. um exemplo tpico de soma cumulativa.
No MATLAB, a funo que corresponde soma cumulativa dos elementos
de um vetor cumsum conforme mostrado a seguir:
JUROS = [1.25 1.16 1.13 1.12 1.4 1.16 1.16 1.13 1.15 1.10 2.04 1.82 1.65 0.95];
ACUM_JUROS = cumsum (JUROS)
ACUM_JUROS =
Columns 1 through 7
1.2500 2.4100 3.5400 4.6600 6.0600 7.2200 8.3800
Figura 5.5 - Histograma de Metodologia
Curso de MATLAB
Cap. 5 - Medidas Estatsticas 63
Columns 8 through 14
9.5100 10.6600 11.7600 13.8000 15.6200 17.2700 18.2200
Logo, o primeiro elemento do vetor ACUM_JUROS 1,25 ; o segundo ser
1,25 + 1,16 ; o terceiro, 1,25 + 1,16 + 1,13 e assim por diante.
Se quisermos saber o total de juros durante este intervalo de tempo, usamos a
funo sum :
TOTAL_JUROS = sum(JUROS)
TOTAL_JUROS =
18.2200
As funes prod (x) e cumprod (x) so anlogas s funes sum (x) e
cumsum(x), onde prod(x) calcula o produto dos elementos de um vetor ou produto de
cada coluna, em uma matriz; cumprod (x) calcula o produto acumulativo dos
elementos de um vetor x.
H tambm a funo median que calcula a mediana dos elementos de um
vetor x. Mediana a realizao que ocupa a posio central da srie de observaes
quando estas esto ordenadas segundo suas grandezas (crescente ou
decrescentemente). Assim, se as cinco observaes de uma varivel, como erros de
impresso na primeira pgina forem 20, 16, 14, 8 e 19; a mediana o valor 16. Se o
nmero de observaes par, usa-se como mediana a mdia aritmtica das duas
observaes centrais. Logo, se as observaes de uma varivel, forem 20, 14, 16 e 8,
a mediana
Mediana = (14 + 16) / 2 = 15.
E x e r c c i o s
Determine as matrizes representadas pelas funes a seguir. Depois, use o MATLAB
para verificar suas respostas. Suponha que w, x, e y sejam as matrizes:
w = [ 0 3 -2 7]
x = [ 3 -1 5 7]
]
]
]
]
]

2 1 6
4 8 2
7 3 1
y
Curso de Matlab
Cap. 5 Medidas Estatsticas 64
1. max (w)
2. min(y)
3. min (w, x)
4. [ z, i ] = max(y)
5. mean (y)
6. median(w)
7. cumprod(y)
8. sort(2*w + x)
9. sort (y)
10. std (w)
11. std(x)^2
12. std (y(:, 2))
13. std (y)
15. std (y).^2
Aplicao Soluo de Problemas: Anlise do Sinal de Voz
Suponha que queiramos projetar um sistema que reconhea as palavras que representam os
dez algarismos: zero, um, dois, ..., nove. Uma das primeiras coisas que devemos fazer
analisar os dados para as dez seqncias correspondentes (ou sinais) para verificar se h algumas
medidas estatsticas nas quais possamos distingui-los. As funes para anlise de dados do
MATLAB nos permite facilmente calcular estas medidas. Podemos ento imprimir uma tabela de
medidas e procurar por aquelas que nos permita distinguir valores.
Atualmente, podemos usar sinais de voz para calcular um nmero de medidas estatsticas
que poderiam ser usadas como parte de um algoritmo de reconhecimento de dgitos. Os dados para
cada dgito contm mil valores. Escreva um programa MATLAB para ler um arquivo de dados
ASCII denominado zero.dat e calcule as seguintes informao: mdia, desvio padro, varincia, a
mdia do mdulo.
J discutimos mdia, desvio padro e varincia. A mdia quadrtica o valor mdio
quadrtico ser discutido com mais detalhes na prxima seo. A mdia dos mdulo a mdia dos
valores absolutos do conjunto de dados.
1. ENUNCIADO DO PROBLEMA
Calcular as medidas estatsticas a seguir para um sinal de voz.
Curso de Matlab
Cap. 5 Medidas Estatsticas 65
2. DESCRIO ENTRADA/SADA
O diagrama abaixo mostra o arquivo que contm os dados como a entrada e as vrias medidas
estatsticas como a sada.
3. EXEMPLO MANUAL
Para um exemplo manual, suponha que um sinal contenha a seguinte seqncia de valores:
[ 2.5 8.2 -1.1 -0.2 1.5]
Usando uma calculadora, calculamos os seguintes valores:
a. mdia = (2.5 + 8.2 - 1.1 - 0.2 + 1.5)/5 = 2.18
b. varincia = [(2.5 - )
2
+ (8.2 - )
2
+ (-1.1 - )
2
+ (-0.2 - )
2
+ (1.5 - )
2
]/4 =
13.307
c. desvio padro = 13.307 = 3.648
d. mdia quadrtica = (2.5
2
+ 8.2
2
+ (-1.1)
2
+(-0.2)
2
+ 1.5
2
)/5 = 15.398
e. mdia dos mdulos = ( |2.5|

+ |8.2| + |-1.1| + |-0.2| + | 1.5| /5 = 15.398
4. SOLUO DO MATLAB
5. TESTANDO
Mdia
Desvio Padro
Varincia
Mdia dos Mdulos
Mdia Quadrtica
zero.dat
Figura 5.6 diagrama I/O
Curso de Matlab
Cap. 5 Medidas Estatsticas 66
5.2 Nmeros Aleatrios
Nmeros aleatrios no so definidos por uma equao. Contudo, possuem certas
caractersticas que os definem. H muitos problemas que pedem o uso de nmeros aleatrios no
desenvolvimento de uma soluo. Em alguns casos so usados para desenvolver a simulao de um
problema complexo. A simulao pode ser testada diversas vezes para analisar os resultados e cada
teste representa um repetio do experimento. Tambm usamos nmeros aleatrios para aproximar
seqncias de rudo. Por exemplo, o que ouvimos no rdio uma seqncia de rudo. Se
estivermos testando um programa que use um arquivo de entrada que representa um sinal de rdio,
poderamos gerar rudos e adicion-los ao sinal de voz ou a uma msica em seqncia para prover
mais sinais reais.
Funo Nmero Aleatrio
A funo rand no MATLAB gera nmeros aleatrios no intervalo [ 0,1]. Os nmeros
aleatrios podem ser uniformemente distribudos no intervalo [0,1] ou podem ser distribudos
normalmente, nos quais mdia e varincia so, respectivamente, 0 e 1. Um valor usado para
iniciar uma seqncia aleatria.
Rand (n) Retorna uma matriz de ordem n cujos elementos so nmeros aleatrios
entre 0 e 1.
Rand (m,n) Matriz com m linhas e n colunas cujos elementos so nmeros aleatrios
entre 0 e 1.
Rand(size (A)) Matriz de mesma ordem que a matriz A.
Rand (uniform)
Rand (normal)
Especificam se os nmeros aleatrios desejados sero uniformemente ou
normalmente distribudos.
Rand (seed, n) Determina n como o valor inicial de uma seqncia de nmeros aleatrios.
Rand (seed) Retorna ao valor atual de incio do gerador de nmeros aleatrios.
Funo Densidade de Probabilidade
Suponha que o ponteiro dos segundos de um relgio eltrico possa parar a qualquer
instante por defeitos tcnicos. Como h infinitos pontos nos quais o ponteiro pode parar, cada uma
com igual probabilidade, cada ponto teria a probabilidade de ocorrer igual a zero. Contudo,
podemos determinar a probabilidade de o ponteiro parar numa regio entre dois valores quaisquer.
Assim, a probabilidade de o ponteiro parar no intervalo entre os nmeros 9 e 12 , pois neste
intervalo corresponde a do total. Ento,
P (270
0
X 360
0
) =
Curso de Matlab
Cap. 5 Medidas Estatsticas 67
onde X medido em graus.
Sempre poderemos achar a probabilidade de o ponteiro parar num ponto qualquer de um
intervalo, por menor que seja, compreendido entre os nmeros a e b, de forma que
P ( a X b) = b a _
360
0
Construindo um histograma da varivel X:
O histograma corresponde funo:
A rea correspondente ao intervalo [a,b] indica a probabilidade de a variabilidade de a
varivel estar entre a e b. Matematicamente,
A funo f(x) chamada funo densidade de probabilidade (f.d.p). A f.d.p. determina a regio
onde h maior probabilidade de uma varivel X assumir um valor pertencente a um intervalo.
f(x)
a b c d 360 x (em graus)
1/360

'

<
<

0
0 0
0
360 x se , 0
360 X 0 se , 360 / 1
0 X se , 0
) x ( f
0
b
a
b
a
0
360
a b
dx
360
1
dx ) x ( f ) b X a ( P



Figura 5.7 histograma da varivel X
Curso de Matlab
Cap. 5 Medidas Estatsticas 68
Existem alguns modelos freqentemente usados para representar a f.d.p. de uma varivel
aleatria contnua como :
a) Modelo Uniforme
Definio: Uma varivel aleatria X tem distribuio uniforme com a e b (a<b) reais, se a sua
f.d.p. dada por:
Grfico:
Varincia (
2
)

2
= (b a)
2
12
b) Modelo Normal
A varivel X tem distribuio normal com parmetros e
2
, denotada por X: (,
2
),
onde - < < + e 0 <
2
< + , se sua f.d.p. dada por:
f(x)

'

< <

. pontos demais , 0
b x a se ,
a b
1
) x ( f
2
2
2
) x (
e
2
1
) x ( f


Figura 5.9 distribuio uniforme


1/ (b a)
a 0 b x
Curso de Matlab
Cap. 5 Medidas Estatsticas 69
Para - < < +.
Grfico: A curva normal particular para mdia e varincia
2
.
Como a probabilidade de a varivel X ocorrer num intervalo, matematicamente, a rea
sob a curva, teramos valores diferentes de probabilidade para cada valor de e de . Por isso,
usamos a curva normal padro ou reduzida ( = 0,
2
= 1) ver figura acima, denotada por
N(0,1). Se X: N(,
2
) , ento a varivel aleatria Z com distribuio N (0, 1) definida por:
Z = X -

Exemplo: 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?
a) 45 horas
f(Z)
0
+1 -1 z
5 , 0 ) 0 Z ( P
3
45 45
3
45 T
P ) 45 2 D ( P
308 , 0 192 , 0 5 , 0 )
6
1
Z ( P
6
42 45
6
42 T
P ) 45 1 D ( P
>

,
`

.
|
>

>
>

,
`

.
|
>

>
Figura 5.9 Curva Normal Padro
Curso de Matlab
Cap. 5 Medidas Estatsticas 70
b) 49 horas
O comando hist pode ser usado para estimar a f.d.p. de um sinal qualquer. Se tivermos mil
valores e plotarmos o histograma, plotaremos um verso de f.d.p. para nmeros aleatrios. Antes,
aprenderemos como o MATLAB pode ser usado para gerar nmeros aleatrios uniforme ou
normalmente distribudos. Por exemplo, se quisermos gerar uma seqncia de 10 nmeros
aleatrios uniformemente distribudos entre os valores 0 e 1 , devemos fazer:
rand (seed,0)
rand (uniform)
rand (10,1)
Podemos converter um nmero r que est uniformemente distribudo entre 0 e 1 para um
valor situado entre um intervalo qualquer. Por exemplo, se quisermos gerar 10 nmeros aleatrios
uniformes entre 5 e 5, devemos primeiro gerar os nmeros entre 0 e 1. Logo em seguida,
usamos a equao:
x = (b a) . r + a
onde b e a so, respectivamente, os limites inferior e superior (no caso, 5 e 5). Assim, suponha
que armazenamos os dez nmeros aleatrios determinados anteriormente em um vetor coluna
denominado SINAL. Para convert-los em valores entre 5 e 5 usamos:
x = (10*SINAL) 5
E x e r c c i o s
Determine os comandos do MATLAB necessrios para gerar 10 nmeros aleatrios com as
caractersticas especficas. Verifique sua respostas.
Nmeros uniformemente distribudos entre 0 e 10,0
Nmeros uniformemente distribudos entre -1 e 1.
Nmeros uniformemente distribudos entre - 20 e 10.
Nmeros uniformemente distribudos entre 4,5 e 5,0
Nmeros uniformemente distribudos entre e -.
093 , 0 407 , 0 5 , 0
3
4
Z ' P
3
45 49
3
45 T
P ) 49 2 D ( P
123 , 0 377 , 0 5 , 0
6
7
Z ' P
6
42 49
6
42 T
P ) 49 1 D ( P

,
`

.
|
>
,
`

.
|
>

>

,
`

.
|
>
,
`

.
|
>

>
Curso de Matlab
Cap. 5 Medidas Estatsticas 71
O MATLAB tambm gera valores distribudos normalmente cuja mdia igual a zero e a
varincia, igual a 1. Se quisermos modificar estes valores para uma outra distribuio,
multiplicamos os valores pelo desvio padro da distribuio desejada e os adicionamos mdia
desta distribuio. Portanto, se r um nmero qualquer com mdia 0 e varincia 1, a equao a
seguir ir gerar um novo nmero aleatrio x com desvio padro a e mdia b:
x = a . r + b
Os comando abaixo geram nmeros normalmente distribudos com mdia 5 e varincia
igual a 2:
rand (seed,0)
rand ( normal)
s = sqrt(2)*rand (10,1) + 5
Os valores a serem impressos por este programa so:
s =
6.6475
5.8865
5.1062
5.4972
4.0150
7.3987
5.0835
7.5414
5.3734
6.2327
Funes Densidade de Probabilidade: Histograma
Conforme dito anteriormente, podemos usar um histograma para avaliar a f.d.p de um sinal
qualquer. Se tivermos mil valores, e os plotarmos, estaremos plotando uma verso da f.d.p. para os
nmeros aleatrios. Por exemplo, suponha que geramos mil nmeros aleatrios entre 0 e 1, e os
armazenamos no vetor U_VALORES. Podemos usar o comando hist para plotar a f.d.p. usando as
25 barras:
rand (uniform)
U_VALORES = rand (1000, 1)
hist (U_VALORES, 25)
Curso de Matlab
Cap. 5 Medidas Estatsticas 72
O grfico mostrado na figura abaixo. Os nmeros aleatrios esto distribudos entre 0 e
1 e a distribuio relativamente alisada.
Figura 5.10 - Histograma para nmeros aleatrios uniformemente distribudos
Suponha agora que queiramos gerar mil nmeros aleatrios distribudos normalmente (cuja
distribuio N(0,1) ) e armazen-los em um vetor coluna denominado G_VALORES. Podemos
plotar a funo com os comandos:
rand(normal)
G_VALORES = rand (1000,1);
hist (G_VALORES, 25)
O grfico correspondente mostrado a seguir. Conforme espervamos, a distribuio
atinge seu valor mximo onde a mdia igual a zero, e a maioria dos valores est entre dois desvios
padres (-2 a 2).
Figura 5.11 - Histograma para nmeros aleatrios normalmente distribudos
Curso de Matlab
Cap. 5 Medidas Estatsticas 73
E x e r c c i os
Use o MATLAB para gerar mil valores com as caractersticas desejadas. Calcule a mdia
e a varincia de mil valores, e compare-as aos valores especificados. Estes valores devem ser
semelhantes. Tambm plote um histograma dos valores, usando 25 barras.
1. Nmeros normalmente distribudos com = 5 e
2
= 0,5;
2. Nmeros normalmente distribudos com = -5.5 e = 0,25;
3. Nmeros normalmente distribudos com = -5.5 e = 1,25;
4. Nmeros normalmente distribudos com = e = /8;
Aplicao Soluo de Problemas: Simulador de Vo
As simulaes em computadores so usadas para gerar situaes que modelam ou imitam
uma situao do mundo real. Algumas simulaes computacionais so desenvolvidas para jogos
como pquer ou damas. Para jogar, voc indica seu movimento e o computador ento selecionar
uma resposta apropriada. Outros jogos usam a computao grfica para desenvolver uma interao
tal como o uso do teclado ou do mouse para jogar. Nas simulaes mais sofisticadas, como um
simulador de vo o computador no somente responde entrada do usurio mas tambm gera
valores como temperaturas, velocidade do vento, e os locais de outras aeronaves. Os simuladores
tambm simulam emergncias que ocorrem durante o vo de uma aeronave. Se toda esta
informao gerada pelo computador for sempre a mesma srie de informao, ento o valor do
simulador seria grandemente reduzido. importante que estejamos aleatoriamente gerao de
dados. As simulaes de Monte Carlo usam nmeros aleatrios para gerar valores que modelam os
eventos.
Escreva um programa MATLAB para gerar um seqncia de nmeros aleatrios para
simular uma hora de dados de velocidade do vento, o qual atualizado a cada 10 segundos. (Uma
hora de dados ento representada por 361 valores.) De uma anlise do padro real de vento, foi
determinado que a velocidade do vento pode ser modelada como um nmero aleatrio distribudo
normalmente. A mdia e a varincia so exclusivamente para uma regio especfica e perodo do
ano e so como parmetros de entrada. Alm do mais, supe-se que o avio tem 1% de chance de
voar sob uma pequena tempestade . A durao do tempo que o avio est em uma pequena
tempestade trs minutos. Quando o plano est numa pequena tempestade, a velocidade do vento
aumenta em 10milhas por hora. Tambm, h 0.01% de chances que o avio voar para um , o qual
microrrajadas, o qual permanece por um minuto e aumenta a velocidade do vento para 50 milhas
por hora. Plote o tempo e a velocidade e salve-os em um arquivo ASCII nomeado vento_vel.dat.
Curso de Matlab
Cap. 5 Medidas Estatsticas 74
1. ENUNCIADO DO PROBLEMA
Gerar uma hora de velocidade simulada do vento usando estatsticas desenvolvidas para
rea de vo.
2. DESCRIO ENTRADA/SADA
A figura abaixo, a entrada para o programa as estatsticas do tempo no plano de vo, as
quais so representadas pelo mdia e varincia da velocidade do vento em tempo normal. A sada
o grfico e o arquivo de dados contendo os valores das velocidades do vento simuladas.
3. EXEMPLO MANUAL
Esta simulao usa vrias seqncias diferentes de nmeros aleatrios. A velocidade do
vento um nmero aleatrio normalmente distribudo com mdia e varincia particulares. As
possibilidades de encontrar uma tempestade ou microrrajadas so dadas como valores percentuais e
podem ser modelados como nmeros uniformemente distribudos. Suporemos que ocorrer uma
tempestade se um nmero aleatrio uniforme entre 0 e 1 tiver um valor entre 0.0 e 0.01, e que
ocorrer um microrrajadas se o nmero aleatrio uniforme estiver entre 0.01 e 0.0101.
4. SOLUO MATLAB
5. TESTANDO
venvlc.dat
Mdia
Varincia
Incio de
Seqncia
Curso de Matlab
Cap. 5 Medidas Estatsticas 75
5.3 Relao Sinal/Rudo
Quando a gerao de sinais usada em tcnicas de testes de engenharia, freqentemente
queremos gerar seqncias como uma senide com rudo adicionado. De rudo pode ser
especificado como uma relao sinal/rudo, ou SNR. A SNR definida em termos de energia de
um sinal . Discutiremos energia de um sinal e ento retornaremos a definio matemtica de SNR.
Energia de um Sinal
Intuitivamente, a energia uma medida da amplitude de um sinal. Quanto maiores forem
os valores da amplitude, maior a energia do sinal. Como a amplitude pode ser positiva ou
negativa, a energia definida em termos do quadrados das amplitudes, para que os valores sejam
sempre positivos. A energia em um sinal x (representado por um vetor x) pode ser avaliada pela
mdia quadrtica do sinal:
Observe que isto pode ser facilmente calculado usando a funo MATLAb sum:
Energia = sum (x.^2)
pode ser mostrado que a energia em um sinal igual a soma dos quadrados da varincia e mdia:
energia =
2
+
2
No MATLAB, isto pode ser calculado com o comando a seguir:
Energia = std(x) ^2 + mean (x) ^2;
Se o sinal for uma senide, pode ser mostrado matematicamente que a energia do sinal igual a
metade do quadrado da amplitude da senide. Assim, a energia da senide 4sen2t igual a 16/2,
ou 8.
E x e r c c i o s
D os comandos do MATLAB para gerar mil valores da seqncia indicada. Calcule a energia
usando o valor mdio quadrtico e ento calcule-o usando a mdia e a varincia; os valores devem
ser semelhantes.
N
x
energia
N
1 k
2
k

Curso de Matlab
Cap. 5 Medidas Estatsticas 76
1. Valores uniformes entre 0 e 10;
2. Valores uniformes entre 2 e 4;
3. Valores uniformes com mdia 0 e varincia 1,0;
4. Valores uniformes com mdia 0.5 e varincia 4,0;
5. Valores normalmente com mdia 0 e varincia 2,0;
6. Valores normalmente com mdia 0 e varincia 0,5;
7. Valores normalmente com mdia 2,5 e varincia 0,5.
Clculo de SNR
Uma relao sinal/rudo a relao entre a energia em um sinal e a energia em um rudo.
Por exemplo, uma SNR de 1 especifica que a relao entre a energia do sinal e a energia do rudo
1:1. Se tivermos uma senide com uma amplitude 3 adicionada a um rudo uniforme entre 1 e 1,
podemos calcular a SNR usando as medidas de energia de dois sinais. A energia da senide 9/2, e
a energia do sinal igual a 2
2
/12 ou 1/3. Contudo, a SNR pode ser calculada como:
SNR = 9 / 2 = 13.5
1/3
Para um sinal geral com amplitude A, e rudo uniforme entre a e b, a SNR pode ser
calculada usando os seguintes comandos MATLAB:
SNR = ( (A^2) / 2 ) / ( (b a)^2/12 );
Para ilustrar com outro exemplo, suponha que queiramos gerar 201 pontos de um sinal que
contenha uma senide de 1Hz com rudo cuja mdia 0 em uma SNR de 46. A senide deve Ter
uma amplitude de 1.5 e um ngulo de fase de 0.0, e ser uma amostra de 100 Hz (cuja mdia uma
amostra de tempo de 1/100 segundos). A SNR igual a energia da senide dividida pela energia do
rudo.
SNR = energia do sinal _ = (1.5
2
) / 2 = 46
energia do rudo energia do rudo
Assim, para a energia do rudo, temos:
Energia do rudo = (1.5
2
) /2 = 0.024
46
Como o rudo especificado para ter mdia zero, a energia do rudo igual a varincia.
Assim, a varincia do rudo 0.024. J que o rudo uniforme e tem mdia zero, ele alcana entre
a e -a. Logo, a varincia igual a (2a)
2
/12 e 0.024 = (2a)
2
/12 ou a = 0,27.
Curso de Matlab
Cap. 5 Medidas Estatsticas 77
Podemos gerar o sinal de rudo desejado e adicion-lo senide para obter a SNR
desejada. Os comandos para gerar estes sinal so mostrados a seguir:
%
% Gerar e plotar senide mais rudo
%
rand(seed,0);
rand (uniform);
t = 0: 0.01: 2.0;
s = 1.5*sin(2*pi*t) + (0.54*rand (1,201) 0.27);
plot (t, s),
title(Senide com rudo),
xlabel ( t, segundos),
ylabel([s(k)]),
grid
O grfico mostrado a seguir. Observe que h dois perodos do sinal em dois segundos.
Isto corresponde ao fato que a freqncia 1 Hz, de modo que perodo 1 segundo.
Adicionando rudo a um sinal existente
Suponha que queiramos adicionar um rudo a um sinal j coletado e armazenado em um arquivo de
dados. Se quisermos adicionar rudos que mantenham uma SNR especificada, precisaremos avaliar
a energia do sinal tal que possamos determinar a energia apropriada para o sinal de rudo. Uma boa
avaliao da energia de uma sinal a mdia quadrtica do valor do sinal , o qual pode ser
facilmente calculado usando o MATLAB. Podemos determinar a energia necessria para o rudo.
Curso de Matlab
Cap. 5 Medidas Estatsticas 78
Sabemos que a energia uma funo de mdia e varincia, ento precisaramos de um destes
valores especificados em ordem para determinar o outro. desejvel para o rudo ter mdia zero,
para isto supomos que no h outra informao considervel. Podemos calcular a varincia
necessria e gerar o rudo e adicion-lo ao sinal existente.
E x e r c c i o s
Gerar e plotar um sinal composto de 100 pontos de uma amostra senoidal de 5 Hz a 50 Hz mais
um rudo de mdia zero como especificado a seguir:
1. Rudo uniforme com SNR igual a 5;
2. Rudo uniforme com SNR igual a 1;
3. Rudo uniforme com SNR igual a 0,2;
4. Rudo normal com SNR igual a 5;
5. Rudo normal com SNR igual a 1;
6. Rudo normal com SNR igual a 0,2.

Você também pode gostar