EDIÇÃO Curso de - pads.ufrj.brgabriel/eel760/matlab_1.pdf · Curso de MATLAB I AGRADECIMENTOS...

download EDIÇÃO Curso de - pads.ufrj.brgabriel/eel760/matlab_1.pdf · Curso de MATLAB I AGRADECIMENTOS Estas notas sobre o uso da versão 5.1 do MATLAB são o resultado do trabalho persistente

If you can't read please download the document

Transcript of EDIÇÃO Curso de - pads.ufrj.brgabriel/eel760/matlab_1.pdf · Curso de MATLAB I AGRADECIMENTOS...

  • Introduo Soluo de Problemas de EngenhariaIntroduo Soluo de Problemas de EngenhariaIntroduo Soluo de Problemas de Engenharia

    Faculdade deEngenharia

    Laboratrio deEngenharia Eltrica

    Programa Prodenge / Sub-Programa ReengeUniversidade do Estado do Rio de Janeiro

    Curso deMATLAB 5.1Curso deMATLAB 5.1

    2a EDIO

    Revista e Ampliada

    2a EDIO

    Revista e Ampliada

  • Curso de MATLAB

    I

    AGRADECIMENTOS

    Estas notas sobre o uso da verso 5.1 do MATLAB so o resultado do trabalhopersistente dos alunos da Faculdade de Engenharia da UERJ, bolsistas de iniciaoTecnolgica do Projeto REENGE - Joana Figueiredo Konte, Jorge Lus PinheiroTeixeira, Pat Evie Alves - e da estagiria Luciana Faletti que se encarregaram de darcorpo segunda edio de um curso de Introduo Soluo de Problemas deEngenharia usando a metodologia da Profa. Delores M. Etter, autora da obra Engeneering Problem Solving with MATLAB que inspirou, de perto, a confeco destaapostila. A este grupo entusiasmado de jovens, aderiram outros estagirios doLaboratrio de Engenharia Eltrica, como Hlio Justino Mattos Filho. A todos eles oscumprimentos pelo xito e pela forma como se envolveram de corpo e alma na execuodas tarefas. O sucesso obtido na implementao de ambos os cursos no sem dvidafruto de uma obra isolada. Dela participaram, com entusiasmo a equipe tecnico-administrativa do Laboratrio de Engenharia Eltrica, cujos membros contriburam coma dedicao que lhes peculiar, atravs do suporte e infra-estrutura e o envolvimentodireto com os alunos e com a coordenao do projeto. Um muito obrigado equipeformada pelos funcionrios Alberto Avelar Santiago, Andr Vallim Stachlewski, JosEmlio Gomes, Jair Medeiros Jnior, Joo Elias Souza da Costa, Luiz Roberto FrancoFagundes Filho, Marcos Augusto Mafra, Antnio Marcos Medeiros Corra, SueliFerreira dos Santos e pela Srta. Carla Aparecida Caldas de Almeida, do curso de Ps-Graduao latu-senso em Engenharia Mecatrnica da UERJ. Uma palavra dereconhecimento especial ao diretor Dr. Nival Nunes de Almeida, coordenador geral doREENGE, pelo apoio e pelo incentivo dado viabilizao de inmeras atividades nombito da faculdade como um todo e do LEE em particular. Profa. Maria EugniaMosconi de Golveia, vice-diretora da faculdade de Engenharia uma palavra de gratidopelo empenho em viabilizar juntamente com o diretor as solicitaes de estgio internono LEE. Ao grupo de colaboradores silenciosos da administrao pelo apoio nasatividades no mbito de suas competncias, o obrigado sincero da Orientao dotrabalho. Ao CNPq que patrocinou as bolsas que permitiram este trabalho mediante osrecursos 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 5Mtodo Simples 6Arquivos MAT e ASCII 6Operador dois pontos 8Comando Input 8Imprimindo matrizes 11Comando format 11Comando disp 12Comando fprintf 12

    2.2 Grficos X-Y 13Aplicao Soluo de Problemas: Anlise de um tnel de vento 15

    3 CLCULOS FUNDAMENTAIS E MATRIZES ESPECIAIS 16

    3.1 Valores Especiais e Matrizes Especiais 16Magic Square 17Matriz de Zeros 17Matriz de ums 17Matriz identidade 17Tringulo de Pascal 17

    3.2 Operaes entre escalares 18Hierarquia em operaes aritmticas 19Limites Computacionais 21

    3.3 Operaes de Conjuntos 21Aplicao soluo de problemas: Ecos em sinais de comunicao 25

    3.4 Funes Elementares 29Funes matemticas elementares 30Funes trigonomtricas 31Funes hiperblicas 32Funes de Arquivos M 32Aplicao soluo de problemas: sinais de sonar 34

    3.5 Nmeros Complexos 36Operaes aritmticas com complexos 37Coordenadas polares e retangulares 37

  • Curso de MATLAB

    III

    4 CONTROLE DE FLUXO 404.1 Operadores lgicos e relacionais 40

    4.2 Tomada de decises 42Estrutura if-then-else 42

    4.3 Loop FOR 45Comando break 47Aplicao soluo de problemas: fibras ticas 47

    4.4 Loop WHILE 49Aplicao soluo de problemas: equilbrio de temperatura 50

    5 MEDIDAS ESTATSTICAS 54

    5.1 Funes para anlise de dados 56Desvio mdio, varincia e desvio padro 56Comando sort 60Histograma 61Aplicao soluo de problemas: anlise do sinal de voz 64

    5.2 Nmeros Aleatrios 66Funo nmero aleatrio 66Funo Densidade de Probabilidade 66Modelo uniforme 68Modelo normal 68Histograma: comando hist 71Aplicao Soluo de Problemas: simulador de vo 73

    5.3 Relao Sinal/Rudo 75Energia de um sinal 75Clculo de SNR 76Adicionando um rudo a um sinal existente 77

    6 OPERAES COM MATRIZES 79

    6.1 Operaes com matrizes 79Matriz transposta 79Somatrio de produtos 79Comando sum 80Multiplicao de matrizes 80Matriz Power 81Matriz inversa 81Determinante 82Aplicao Soluo de Problemas: peso molecular de protenas 82

  • Curso de MATLAB

    IV

    6.2 Manipulao com matrizes 84Comando rot90 84Comando fliplr 84Comando flipud 84Comando reshape 85Comando diag 85Comando triu 86Comando tril 87Aplicao Soluo de Problemas: alinhamento de imagens 87

    7 GRFICOS 91

    7.1 Grficos X-Y 91Coordenadas retangulares 91Legendas 91

    7.2 Grficos Polares 92Coordenadas Polares 92Transformaes retangular/polar 93Grficos de barras e degrau 94

    7.3 Opes 94

    7.4 Grficos 3D 97Aplicao 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 103Diviso de matrizes 104Matriz Inversa 104Aplicao Soluo de Problemas: anlise de um circuito eltrico 105

    9 INTERPOLAO E AJUSTE DE CURVAS 106

    9.1 Interpolao 106Interpolao linear 107Funo table1 107Funo table2 109Comando spline 110Aplicao Soluo de Problemas: brao robtico 112

  • Curso de MATLAB

    V

    9.2 Ajuste de curvas 113

    Regresso Linear 113Comando polyfit 114

    Comando polyval 115

    10 ANLISE POLINOMIAL 116

    10.1 Avaliao do polinmio 116Comando polyval 116Operaes Aritmticas 117Aplicao Soluo de Problemas: bales meteorolgicos 118

    10.2 Razes de polinmios 120

    11 INTEGRAO NUMRICA E DIFERENCIAO 122

    11.1 Integrao Numrica 122Regra Trapezoidal e Regra de Simpson 122Comando Quadratura 122Aplicao Soluo de Problemas: anlise de escoamento de um leo num oleoduto 123

    11.2 Diferenciao Numrica 125Derivao por expresso de diferena 126Comando diff 127

    12 EQUAES DIFERENCIAIS ORDINRIAS 129

    12.1 Equaes Diferenciais Ordinrias de Primeira Ordem 129

    12.2 Mtodo de Runge-Kutta 130Aproximao de Primeira Ordem (mtodo de Euler) 130Comando ODE 131Aplicao 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 137Aplicao soluo de problemas: adaptador para reduo de rudos 141

    13.2 Decomposio e Fatorao 143

  • Curso de MATLAB

    VI

    Fatorao Triangular 143Fatorao QR 144

    14 PROCESSAMENTO DE SINAIS 146

    14.1 Anlise no domnio da freqncia 146

    14.2 Anlise de filtros 149Funo de Transferncia Analgica 149Funo de Transferncia Digital 151

    14.3 Implementao de Filtros Digitais 153

    14.4 Projetos de Filtros Digitais 155Filtros IIR 156Filtros FIR 157Aplicao soluo de problemas: filtros para separao de canais 158

    15 MATEMTICA SIMBLICA 161

    15.1 Expresses Simblicas 161Representaes de Expresses Simblicas no MATLAB 162

    15.2 Variveis Simblicas 163

    15.3 Operaes em expresses simblicas 165

    15.4 Operaes Algbricas Padro 166Operaes Avanadas 167

    15.5 Funes de Converso 169

    15.6 Derivao e Integrao 170

    15.7 Transformadas 171Transformada de Laplace 173Transformada de Fourier 173Transformada 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 mastambm dos cursos de Matemtica, Fsica, Qumica e Cincia da Computao. Logo, importanteuma base slida em soluo de problemas. Tambm de grande auxlio um embasamento suficientepara trabalhar em todas estas reas, para que no tenhamos que aprender uma tcnica paraproblemas de matemtica, e uma tcnica diferente para problemas de fsica, e assim por diante. Atcnica de soluo de problemas que apresentamos trabalhos para problemas de engenharia e podeser seguida de perto para resolver problemas em outras reas; mas, supe-se que estamos usando oMATLAB para ajudar a resolv-los.

    O processo ou metodologia para resoluo de problemas que usaremos ao longo do textopossui 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 pontosem um plano.

    1. ENUNCIADO DO PROBLEMA

    O primeiro passo enunciar o problema claramente. extremamente importante que oenunciado 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 problemae ento identificar os valores a serem calculados. Estes itens representam a entrada e a sada para oproblema e agregadamente podem ser chamados entrada/sada, ou I/0. Para muitos problemas, tilusar um diagrama que mostra a entrada e a sada. Algumas vezes, este tipo de diagrama chamadode caixa preta porque no estamos definindo para este ponto todos os passos para determinar asada, 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 umpequeno grupo de dados. um passo muito importante e no deve ser ignorado por mais simplesque seja o problema. um item no qual voc trabalha os detalhes da soluo do problemas. Se vocno pode pegar um simples grupo de nmeros e calcular a sada (seja manualmente ou com umacalculadora), ento voc no est pronto para executar o prximo passo; voc deve reler oproblemas e talvez consultar material de referncia. Uma vez que pode trabalhar o problema de umsimples grupo de dados, ento voc est pronto para desenvolver um algoritmo ou um esboo passoa passo da soluo. Este esboo convertido para os comandos MATLAB para que possamos usaro computador para fazer todos os clculos. O exemplo manual para o este exemplo mostrado aseguir:

    Suponha que os pontos p1 e p2 tenham as seguintes coordenadas:

    p1 = (1,5), p2 = (4,7)

    Queremos calcular a distncia entre dois pontos, que a hipotenusa de um tringuloretngulo, conforme mostra a figura 1.2. Usando o Teorema de Pitgoras, podemos calcular adistncia d com a seguinte equao:

    Figura 1.2 Distncia entre dois pontos.

    ponto 1

    ponto 2distncia entre os pontos

    61,3d

    13d

    )57()14(d

    2s1sd22

    22

    ==

    +=

    +=

    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 podever que os comandos so muito similares s equaes que foram usadas no exemplo manual. Osinal 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 inicialp2 = [4,7]; % ponto2 iniciald = 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. Quandoos 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 MATLABno 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 vriosgrupos 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 deengenharia. s vezes, o dado um simples nmero como o raio de um crculo. Outras, um grupode coordenadas x-y-z que representam os quatro vrtices de uma pirmides com uma base triangularno espao. Podemos representar o exemplos citados usando um tipo especial de estrutura de dadosdenominada 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, umacoordenada x-y pode ser considerada uma matriz com uma linha e duas colunas, e um grupo dequatro coordenadas x-y-z pode ser considerada uma matriz com quatro linhas e trs colunas. Comoexemplo, 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, aij. O primeiro, i, indica a linha, o segundo, j,indica a coluna onde o elemento se encontra. Assim, o elemento a1,2 da matriz B 3.1. Se onmero de linhas e colunas forem iguais, ento dizemos que a matriz uma matriz quadrada. Se amatriz tiver apenas uma linha e uma coluna, podemos dizer que o valor um escalar, se a matrizcontiver 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]

    =

    200

    011

    011

    001

    C

    =

    5.05.43.22.1

    5.04.25.05.0

    5.10.92.87.5

    0.21.05.02.8

    5.03.25.16.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 vriosmtodos de definio de matrizes no MATLAB. Vejamos cada um:

    Modo mais simples:

    Nome da matriz = [ a11 a12 a13 a1n ; a21 a22 a23 a2n ; ; am1 am2 am3 amn ];

    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 quepodem ser nmeros, letras ou caracter sublinhado, e aparece ao lado esquerdo do sinal de igual. Olado direito contm os dados entre colchetes por ordem de linhas. O ponto-e-vrgula separa aslinhas, e os valores das linhas podem estar separados por vrgulas ou por espaos. O valor podeconter 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 amenos que coloquemos um ponto-e-vrgula depois da definio. Tente entrar com as matrizes A, Be C sem o ponto-e-vrgula.

    Voc tambm pode definir uma matriz digitando uma cada linha separadamente. Comoexemplo, a matriz C:

    C = [ -1 0 01 1 01 1 00 0 2];

    Se quisermos, por exemplo, definir um vetor-linha F com 10 valores, tambm podemosfazer:

    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 umalinha com uma vrgula seguida de trs ou mais pontos, e continuar a entrar com os valores restantesna 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, considereas 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 entreparnteses. 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 automaticamentenulos, 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 emarquivos. O MATLAB trabalha com dois tipos diferentes de arquivos: Os arquivos MAT eos arquivos ASCII.

    Os arquivos MAT

    Os arquivos MAT so gerados por um programa MATLAB usando o comandosave, 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 eC, 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 deveconter informao exclusivamente numrica, e cada linha do arquivo deve conter o mesmonmero de dados. O arquivo pode ser gerado utilizando um processador de texto ou, porexemplo, utilizando programas como o Fortran ou ainda, por um programa MATLABusando 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 MATe 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 vetorx, e a segunda coluna em um vetor y. O uso do operador dois pontos (:) til na criao dematrizes ou vetores. Dependendo do argumento, pode significar todas as linhas ou todas ascolunas 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 segundocomando 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 damatriz 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 doisnmeros inteiros gera todos os inteiros entre os dois nmeros especificados. Se for usadopara separar trs nmeros, os dois pontos geraro valores entre o primeiro e terceironmeros, 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 deuma 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. Comoexemplo, temos:

    A = [ ]B = 4: -1: 5

    A expresso C ( : ) equivale a uma longa matriz coluna que contm a primeira coluna deC, 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,05,43,22,1

    5,04,25,05,0

    5,10,92,87,5

    0,21,05,02,8

    5,03,25,16,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 comandoinput 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 usuriopode entrar com uma expresso como [ 5.1 6.3 -18.0] o qual especifica valores para z. Jque o comando input termina com um ponto-e-vrgula, os valores de z no so imprimidosquando o comando executado.

    Imprimindo Matrizes

    O modo mais simples de imprimir uma matriz entrar com seu nome. O nome damatriz repetido, os valores da matriz sero imprimidos na prxima linha. Existem vrioscomandos 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 MATLABapresenta o resultado como nmero inteiro. Se o elemento for um nmero real, oMATLAB apresenta-o com cinco dgitos significativos, ou seja, quatro dgitos direita doponto 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 aforma:

  • Curso de MATLAB

    Cap. 2 Matrizes, Vetores e Escalares 11

    Comando MATLAB Varivel A DescrioFormat long 1.41421356237310 16 dgitosFormat short 1.4142 5 dgitos formato numrico padroFormat short e 1.4142e+000 5 dgitos - notao cientficaFormat long e 1.414213562373095e+000 16 dgitos notao cientficaformat + + + para valores positivos e - para

    valores negativosformat rat 1393/985 aproximao racionalformat hex 3ff6a09e667f3bcd formato hexadecimal

    Comando disp

    Quando quisermos exibir o contedo de uma matriz sem imprimir seu nome ouimprimir um pequeno texto, usamos o comando disp. Assim, se a varivel temp contiverum valor de temperatura em graus Celsius, podemos imprimir o valor em uma linha decomando 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. Podemostambm 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 como 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 paraespecificar 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 oseguinte 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 umponto 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 umsimples grfico x-y de dados armazenados em dois vetores. Ento, sem conhecer algunscomandos, voc pode imediatamente comear usando o MATLAB para gerar grficos.

    Suponha que queira plotar os dados de temperatura a seguir coletados em umaexperincia de fsica:

  • Curso de MATLAB

    Cap. 2 Matrizes, Vetores e Escalares 13

    Tempo, s Temperatura, C0 54.21 58.52 63.83 64.24 67.35 71.56 88.57 90.18 90.69 89.5

    10 90.4

    Suponha tambm que os dados relativos ao tempo estejam armazenados em umvetor denominado x, e que os relativos temperatura estejam armazenados em um vetordenominado y. Para plotar estes pontos, simplesmente usamos o comando plot , onde x e yso vetores-linha ou vetores-coluna.

    plot (x, y)

    O grfico gerado automaticamente. A prtica mostra que um bom grfico deveincluir unidades, ttulo e uma breve descrio. Logo, podemos aperfeio-lo como osseguintes comandos:

    Title Adiciona um ttulo ao grfico.Xlabel Inclui uma descrio na direo do eixo-xY label Inclui uma descrio na direo do eixo-yGrid Adiciona linhas de grade ao grficoWhitebg 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), gridwhitebg

  • Curso de MATLAB

    Cap. 2 Matrizes, Vetores e Escalares 14

    Os trs pontos usados depois dos quatro comandos so usados para que oMATLAB execute os seis comandos em uma nica vez. Para aprender mais opes paragerar 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 diferentesvelocidades de vento, ou nmeros Mach (razo entre a velocidade do vento e a velocidadedo som). Modelos em escala precisa de aeronaves podem ser equipados sobre suportes demedies de fora na cmara de teste, e as medidas das foras sobre o modelo podem serfeitas para diferentes velocidades de vento e ngulos do modelo relativo direo davelocidade. Ao final de um longo teste de tnel de vento, muitos grupos de dados socoletados e podem ser usados para determinar o lift, drag e outras caractersticas daperformance aerodinmica do novo modelo para vrias velocidades de operao e posies.

    Usamos esta aplicao vrias vezes em nossos problemas ao longo do texto. Nestaseo, supomos que os dados coletados do teste do tnel de vento foram armazenados emum arquivo ASCII denominado vento1.dat. Gostaramos de visualizar o grfico dos dadospara 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 umcorrespondente 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 deSustentao

    -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 deSustentao

    1,225 1,250 1,245 1,221 1,177

    Mesmo que parea simples ler e plotar os dados usando o MATLAB, usaremos ametodologia descrita no captulo anterior para mostrar igualmente simples o processo quenos 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 figuraa seguir. Neste exemplo, lemos as informaes contidas em um arquivo e usamos oMATLAB para plot-las. O diagrama contm um smbolo de um disquete para representaro arquivo que a entrada (observe que colocamos o nome do arquivo abaixo do smbolo) eum 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 pequenaparte dos dados e determinar, grosseiramente, como seria o grfico correspondente. Nesteexemplo, 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 180 . Se ogrfico que obtivermos for muito diferente do que espervamos (por exemplo, valor inicial0,7 e um mximo de 1,177 para um ngulo de 21 graus), ento devemos novamente checaros 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 operaesfundamentais 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. Estasoperaes podem ser executadas sobre um valor simples (um escalar), aplicadas a uma lista devalores (vetor), ou aplicadas a um grupo de valores armazenados em uma matriz. Neste captuloaprenderemos como executar todas estas operaes e funes. E tambm, aprenderemos como usarnmeros complexos no MATLAB.

    3.1 Valores Especiais e Matrizes Especiais

    O MATLAB contm um grupo de constantes pr-definidas, valores e matrizes especiaisteis 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 parauma discusso completa sobre nmeros complexos.

    inf Esta varivel a representao do MATLAB para infinito, o qual ocorretipicamente como o resultado de uma diviso por zero. Uma mensagem deaviso 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 dezero 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 destasmatrizes 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 inteirosde 1 a n2. Os elementos aij 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 deveapresentar:

    magic (3)

    Zeros

    Esta funo gera uma matriz zero, isto , uma matriz cujos elemento aij 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 aij 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 matrizidentidade uma matriz escalar de qualquer ordem cujos elementos aij so iguais a 1 para i = j.Apresenta o mesmo formato que as funes anteriores. O formato eye(n) gera uma matrizidentidade 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 ocomando 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 tosimples como uma constante, ou pode ter matrizes e constantes combinadas com operaesaritmticas. Nesta seo, discutiremos operaes envolvendo somente escalares. Na seoposterior, estendemos as operaes incluindo operaes elemento por elemento entre escalares ematrizes ou entre duas matrizes.

    As operaes aritmticas entre dois escalares so mostradas na tabela 3.1. Uma expressopode ser resolvida e armazenada em uma varivel especfica, como no comando seguinte, o qualespecifica 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 asoma armazenado em x. Se ns interpretamos os comandos desta forma, ento ns preocupamospelo seguinte comando MATLAB vlido.

    count = count + 1

    bvio que esta instruo no um comando algbrico vlido, mas o MATLAB explicaque 1 adicionado ao valor em count, e o resultado ser armazenado nesta varivel. Ou seja, o valorem count ser acrescido de 1 (ou incrementado por 1).

    importante reconhecer que uma varivel pode armazenar somente um valor por vez. Porexemplo, suponha que as seguintes instrues sero executadas seguidamente;

    Time = 0.0Time = 5.0

    O valor 0.0 armazenado na varivel time quando a primeira instruo executado e entosubstitudo pelo valor 5.0 quando a segunda instruo executada.

    Quando voc entra com uma expresso sem especificar uma varivel para armazenar oresultado, o mesmo automaticamente armazenado em uma varivel denominada ans. Cada vezque 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 escalaresOperao Forma

    AlgbricaMATLAB

    Adio a + b a + bSubtrao a - b a - bMultiplicao a x b a*bDiviso Direita a

    ba/b

    DivisoEsquerda

    ba

    a\b

    Exponenciao ab 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 aordem de prioridade das operaes aritmticas no MATLAB. Note que esta prioridade tambmsegue a prioridade algbrica padro.

    Tabela 3.2 Hierarquia em operaes aritmticasPrioridade Operao

    1 Parnteses2 Exponenciao, esquerda direita3 Multiplicao e Diviso, esquerda direita4 Adio e Subtrao, esquerda direita

    Suponha que queremos calcular a rea de um trapzio, e tambm suponha que a varivelbase contenha o comprimento da base e que altura_1 e altura_2 contenham as duas alturas. A reade 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 erroimprimidas alertando-nos quanto ao erro. Portanto, importante estar cauteloso quandoconvertemos 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 = ___x3 - 2x2 + 6,3___x2 + 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.3denominador = x^2 + 0.5005*x - 3.14f = numerador/ denominador

    melhor usar vrias equaes que so mais fceis de compreender que apenas uma, querequer 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 queas variveis nas equaes so escalares e tenham valores determinados.

    1. Coeficiente de frico entre um pneu e o pavimento:Frico = __v2__

    30s

    2. Fator de correo em clculo de presso:fator = 1 + _b_ + _c_

    v v2

    3. Distncia entre dois pontos:Slope = y2 - y1

    x2 - x1

    4. Resistncia de um circuito paralelo:resistncia = 1 _

    1_ + 1 + 1 _ r1 r2 r3

    5. Perda de presso de um cano de fricoperda = f . p. 1 . v2

    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 10308, o quedeve ser suficiente para acomodar grande parte dos clculos. Contudo, possvel obter resultadosque 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 10308, ento os valores de x e y esto dentre do limiteestabelecido. Mas, o valor de z 2e400, e este valor ultrapassa o alcance. Este erro chamadooverflow porque o expoente do resultado de uma operao aritmtica demasiadamente alto paraser 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 umaoperao aritmtica ser pequeno demais para ser armazenado na memria do computador. Osvalores 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 resultadode underflow zero.

    Sabemos que a diviso por zero uma operao invlida. Se uma expresso resulta emuma diviso por zero no MATLAB, o resultado da diviso . O MATLAB imprimir umamensagem 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, suponhaque A e B sejam vetores-linha com cinco elementos. Um modo de gerar um novo vetor C comvalores 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 multiplicaum simples valor por um outro e armazena o produto em um terceiro valor. Para indicar queexecutamos 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 peloseguinte:

    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 soidnticas, e ento no precisamos distingu-las. Contudo, as operaes de conjunto paramultiplicao, diviso e exponenciao so diferentes das operaes matriciais para multiplicao,diviso e exponenciao e por isso devemos usar o ponto quando queremos especificar umaoperao de conjunto.

    Uma operao elemento por elemento, ou operaes de conjuntos, aplicam-se no somentepara operaes entre duas matrizes de mesma ordem como tambm em operaes entre um escalare um no escalar. Contudo, a multiplicao de uma matriz por um escalar e a diviso esquerda deuma matriz por um escalar podem ser escritas de modo ou de outro. Assim, os dois comandos emcada 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 outraque usa o smbolo \ . O comando para diviso direita:

    C = A./B;

    Ir gerar um novo vetor no qual cada elemento de A dividido pelo elementocorrespondente 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 divididopelo 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. Porexemplo, 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 exemploa 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 exponenciaomatricial, 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 conformedesejvamos. Estes exemplos indicam que devemos ter cuidado quando especificarmos operaesde conjuntos. Se no tiver certeza que o que escreveu a expresso correta, sempre teste-a comsimples exemplos como aqueles que usamos.

    d = [1:5; -1: -1: -5];z = ones(2,5)s = d zp = d.*ssq = 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 osvalores 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;

    =54321

    54321d

    =65432

    43210s

    =125642781

    125642781sq

    =

    11111

    11111z

    =

    30201262

    2012620p

  • 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 decomputadores que respondam a comandos verbais. O projeto do tal sistema supe que o microfonecolhe o comando de voz e tem uma representao ntida da fala. Infelizmente, sensores como osmicrofones apresentam distores, denominadas rudo. Os sistemas com comunicaes duas viastambm raramente tem ecos que so inadvertidamente introduzidos pela instrumentao. Por essarazo, um sistema reconhecedor de voz deve ser capaz de executar algum processamento do sinal devoz para remover algumas das distores e componentes indesejveis, tal como os ecos, tentandoantes reconhecer as palavras. Como forma de testar um programa que foi projetado para removerecos, devemos estar aptos a gerar um sinal digital e adicionar ecos ao mesmo. Podemos entoavaliar a performance do programa que suposta para remover os ecos. Nesta seo, definimossinais digitais, e ento desenvolveremos um programa MATLAB para adicionar ecos a um sinaldigital.

    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 sensoresso microfones, que medem acstica ou dados sonoros (como a fala); sismmetro, que medeintensidade de tremor de terra; fotoclulas, que medem a intensidade da luz; termistores, o qualmedem a temperatura; e osciloscpios, que medem tenses. Os sensores so normalmenteconectados outra pea da instrumentao chamada conversor analgico-digital (A/D), que amostrao sinal periodicamente e grava o tempo e os valores do sinal que possam ser armazenados em umarquivo de dados. O sinal original normalmente uma funo contnua (ou analgica); a seqnciade valores coletados do sinal original denominada sinal digital. A figura 3.1 contm um exemplode sinal analgico coletado de um sinal contnuo. O sinal analgico composto de um grupo decoordenadas x-y e assim poderiam facilmente ser armazenadas em um arquivo de dados, e ento lerum programa MATLAB. Quando plotamos um sinal analgico, geralmente ligamos os pontos comsegmentos 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 ocorreatrasado no tempo em relao ao sinal original. Por exemplo, a figura 3.3 contm um sinal originals(t) no primeiro esquema. O segundo esquema contm um eco do sinal original que foi atenuadoaproximadamente 50% (ou 0,5) do sinal original. O terceiro esquema contm um eco do sinaloriginal atenuado em 30% e atrasado 5 segundos em relao ao sinal original; este um ROLLEDeco porque os valores do eco so negativos do eco esperado. O quarto esquema contm o sinaloriginal 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 intervalode tempo de amostragem de 0,1 segundos. O seguinte grupo de coordenadas foram coletados noprimeiro 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,0Valor 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 comtrs ecos adicionados ao mesmo. O primeiro eco atenuado em 0,5 e atrasado em 2 segundos; osegundo 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 ecosem um arquivo MAT denominado eco.mat.

    1. ENUNCIADO DO PROBLEMA

    Dado um sinal original, gerar um novo sinal contendo o sinal original mais trs ecosespecficos adicionados a ele.

    2. DESCRIO ENTRADA/SADA

    O retngulo tracejado contm uma figura detalhada do processo de gerao de ecos dosinal de entrada [sn]. Este sinal atrasado e multiplicado por um fator escalar (representado pelotringulo) para gerar cada eco. Ento, o sinal original e todos os ecos que so adicionados juntosem 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 sinal0,0 0,00,1 0,50,2 1,0

    Os ecos especficos ento tem os seguintes valores (no-nulos):

    Tempo,s Valor do sinal2,0 (0,5) . (0,0) = 0,02,1 (0,5) . (0,5) = 0,252,2 (0,5) . (1,0) = 0,5

    Tempo,s Valor do sinal4,0 (- 0,3) . (0,0) = 0,04,1 (- 0,3) . (0,5) = - 0,154,2 (- 0,3) . (1,0) = - 0,3

    Tempo,s Valor do sinal2,0 (0,1) . (0,0) = 0,02,1 (0,1) . (0,5) = 0,052,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 ouso de logaritmos, exponenciais, e funes trigonomtricas. O MATLAB nos permite usar funespara executar estes tipos de clculos em vez de nos exigirem calcul-los usando operaesaritmticas bsicas. Por exemplo, se quisermos calcular o seno de um ngulo e armazenar oresultado 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 valorem 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 foruma 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 regrasrelativa s funes. Uma funo uma referncia que representa uma matriz. Os argumentos ouparmetros da funo esto contidos em parnteses seguindo do nome da funo. Uma funo podeno conter argumentos, um argumento ou muitos argumentos, dependendo de sua definio. Porexemplo, pi uma funo que no tem argumento; quando usamos a funo referncia pi, o valor

    Figura 3.5 S

    inal Original m

    ais ostrs ecos.

  • Curso de MATLAB

    Cap. 3 Clculos com Matrizes 30

    para pi automaticamente substitui a funo referncia. Se uma funo contm mais que umargumentos, muito importante dar os argumentos em ordem correta. Algumas funes tambmexigem que os argumentos estejam unidades especficas. Por exemplo, as funes trigonomtricassupem que os argumentos esto em radianos. No MATLAB, algumas funes usam o nmero deargumentos para determinar a sada da funo. Por exemplo, a funo zeros pode ter um ou doisargumentos, 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 umsinal de igualdade e em expresses. Uma funo de referncia pode tambm ser parte doargumento de uma outra funo de referncia. Por exemplo, o seguinte comando calcula ologaritmo do valor absoluto de x:

    log_x = log(abs(x))

    Quando uma funo usada para calcular o argumento de uma outra funo, tenha certezade fechar o argumento de cada funo em seu prprio grupo de parnteses. Esta acomodao dafuno tambm chamada composio de funes. Nomes de funes devem estar em letrasminsculas a menos que o case sensitivy esteja desativado.

    Agora discutiremos vrias categorias de funes que so freqentemente usadas emclculos de engenharia. Outras funes sero apresentadas no decorrer dos captulos to logodebatermos tpicos relevantes.

    Funes Matemticas Elementares

    As funes matemticas elementares incluem funes para executar um nmero declculos comuns como o clculo de valor absoluto e a raiz quadrada. Alm disso, tambminclumos um grupo de funes usadas em arredondamentos. Mostraremos a seguir uma lista destasfunes 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 ex, 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 log10x, 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 xcsc x = 1 / sin xcot x = 1 / tan x

    Funes Hiperblicas

    Funes Hiperblicas so funes de ex; as funes hiperblicas inversas so funes de lnx. Estas funes so teis em aplicaes como o projeto de alguns tipos de filtros digitais. OMATLAB 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 x2. sec x3. acoth x4. csc x5. asech x6. acsc x

    Funes de arquivo M

    O MATLAB apresenta uma estrutura que nos permite criar funes sob a forma dearquivos M. Como exemplo, considere uma funo que esteja em um arquivo-M denominadocircum.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 partecomentada 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 desada, um sinal de igual, e o nome da funo. Os argumentos para a funo devem estar entreparnteses. Esta linha define os argumentos de entrada e sada;

    As primeiras linhas devem ser comentrios porque sero exibidas quando o menu help for usadojuntamente 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 aoargumento 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 devemser calculados dentro da funo.

    Uma funo que tenha mltiplos argumentos de entrada deve listar os argumentos no comandofunction, 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 deargumentos de entrada passadas para uma funo e o nmero de argumentos de sada solicitadosquando 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, erecepo de energia sonora na gua. Dentre as aplicaes destacamos: mapeamento geolgico,medidas de sinal biolgico, navegao submarina e explorao mineral. Um sistema sonar ativotransmite um sinal que normalmente um sinal senoidal de freqncia conhecida. As reflexes ouos ecos do sinal so recebidos e analisados para prover informaes sobre o meio envolvente. Umsistema sonar passivo no transmite sinais mas coleta-os de sensores e os analisa baseado em suasfreqncias.

    Nesta seo, descreveremos as senides, j que um sinal bsico usando em sistemassonar. 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 defase 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 deuma 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,fc a freqncia em Hertz.

    Durao de um sinal sonar podem alcanar de uma frao de milisegundos a algunssegundos; e as freqncias, de poucas centenas de Hz a dezenas de KHz dependendo do sistema edo alcance de operao desejado.

    Escreva um programa MATLAB que permita ao usurio entrar com valores de E, PD, e fcpara gerar um sinal sonar. Armazene os valores do sinal em um arquivo MAT denominadosonar.mat. A amostragem do sinal deve cobrir a durao do pulso e conter 10 amostras de cadaperodo 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 perodode 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 fc(freqncia em Hz) so os valores de entrada. A sada um arquivo denominado sonar.mat, quecontm 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

    =tesinsdemaisospara

    PDtfcPD

    Ets

    tan0

    0),2cos(2

    )(

    sonar.mat

  • Curso de MATLAB

    Cap. 3 Clculos com Matrizes 36

    Para um exemplo manual, usamos os valores a seguir:

    E = 500 joulesPD = 5 milisegundos (ms)fc = 3,5 KHz

    O perodo da senide 1/3500, ou aproximadamente 0,3 ms. Assim, para ter 10 amostraspor 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,33s(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 temposcorrespondentes e valores de sinais.

    4. SOLUO MATLAB

    3.5 Nmeros Complexos

    As solues de muitos problemas de engenharia como sistema de controle para um braomecnico ou anlise da estabilidade de um circuito eltrico envolvem a busca das razes de umaequao 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:

    a1xn + a2x

    n-1 + a3xn-2 + + na-1 x

    2 + anx + an+1 = 0

    Um polinmio de grau n ter n razes, sendo que algumas podem ser razes mltiplas ourazes complexas. Nesta seo discutiremos as operaes com nmeros complexos e as funesMATLAB que os usam.

    )t35002cos(2,447)t(s

    )t)3500(2cos(005,0

    1000)t(s

    )tf2cos(PD

    E2)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 naEngenharia Eltrica). O comando a seguir define uma varivel complexa:

    x = 1 - 0.5*i;

    Quando executamos operaes entre dois complexos, o MATLAB automaticamenteexecuta os clculos necessrios. Se uma operao for entre um nmero real e um complexo, oMATLAB supe que a parte imaginria do nmero real igual a zero. O MATLAB inclui vriasfunes 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. Osnmeros reais representam o eixo x, e os nmeros imaginrios representam o eixo y, e os nmeroscom 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 serescrito com um ngulo e raio r em relao origem. Esta forma chamada de notao polar, e oponto 2 + i3 pode ser representado em notao polar com um ngulo de 0,98 radianos e um raio3,6.

    Eixoimaginrio

    Eixoreal 1 2 3 4

    321

    (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 osseguintes 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 oMATLAB.

    1. 3 i22. i3. 24. 0,5 + i

    a

    btan

    bar

    1

    22

    =

    +=

  • Curso de MATLAB

    Cap. 3 Clculos com Matrizes 39

    Converter os valores abaixo para forma retangular. Verifique suas respostas usando asfunes MATLAB.

    5. e i

    6. e i0,75

    7. 0,5 e i2,3

    8. 3,5ei3

  • 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 duasmatrizes de mesma ordem ou para comparar uma matriz e um escalar, como os mostrados a seguir:

    Operador Descrio< Menor que 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 queb; 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 operadoresso 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 ambasexpresses forem verdadeiras, para expresses unidas por ou, o resultado ser 1 (verdadeiro) se umaou 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 resultadosdiferentes. Alm disso, a operao s ser vlida se as matrizes resultantes (a < b e b < c) tiveremo 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 causado uso de parnteses). O resultado seria inversamente pelo operador no. Assim, suponha b = = 3e 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 coma expresso. Suponha que as variveis tenham os valores indicados abaixo:

    a = 5.5 b = 1.5 k = -31. a < 10.02. a + b >= 6.53. k ~= 04. b k > a5. ~(a = = 3*b)6. k < = k + 67. a < 10 & a > 58. 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 expressoComandos

    End

    Se a expresso lgica for verdadeira, os comandos entre if e end so executados. Comoexemplo, temos:

    if a < 50count = 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 menorque 50.

    A prxima estrutura contm um parmetro if dentro de outro parmetro if:

    if expresso 1grupo de comandos Aif expresso 2

    grupo de comandos Bendgrupo de comandos C

    endgrupo de comandos D

    Se a expresso 1 for verdadeira, os grupos de comandos A e C so executados. Se aexpresso 2 tambm for verdadeira, o grupo de comandos B executado antes do grupo decomandos C. Se a expresso 1 for falsa, imediatamente salta-se para os comandos D. Comoexemplo, temos:

    if a < 50count = count + 1sum = 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 1e adicionaremos a sum. Se b > a, ento b ser igual a zero. Se a no for menor que 50, entopula-se diretamente para o segundo end. Se a e nem b forem escalares, ento b maior que asomente 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 eum diferente comando se a expresso falsa. A forma geral do comando if combinada instruoelse mostrada a seguir:

    if expressogrupo de comandos A

    elsegrupo de comandos B

    end

    Se a expresso lgica verdadeira, ento o grupo de comandos A executado. Casocontrrio, o grupo de comandos B executado.

    Como exemplo, suponha que um txi esteja passando entre dois edifcios. Considere que avarivel d contenha a distncia do veculo ao edifcio mais prximo. Se o carro estiver a 10 metrosdo edifcio, a velocidade calculada usando a seguinte equao:

    velocidade = 0,425 + 0,00175d2

    Se o txi estiver a uma distncia maior que 10 metros, use a equao a seguir:

    velocidade = 0,625 + 0,12d 0,00025d2

    Calculamos a velocidade correta com estes comandos:

    if d < = 1 0velocidade = 0.425 + 0.00175*d^2

    elsevelocidade = 0.625 + 0.12d 0.00025*d^2

    end

    Quando h muitas alternativas a serem executadas, pode ser mais difcil determinar quaisexpresses lgicas devam ser verdadeiras (ou falsas) para executar cada grupo de comandos. Nestecaso, a clusula elseif freqentemente usada para simplificar o programa lgico:

  • Curso de MATLAB

    Cap. 4 Controle de Fluxo 44

    if expresso 1grupo de comandos A

    elseif expresso 2grupo de comandos B

    elseif expresso 3grupo de comandos C

    end

    Se a expresso 1 for verdadeira, somente o grupo de comandos A executado. Se aexpresso 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 ogrupo de comandos C executado. Se mais de uma expresso lgica for verdadeira, a primeira quefor verdadeira determina qual grupo de comandos ser executado. Se nenhuma das expresseslgicas 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 mostramosa seguir:

    if expresso 1grupo de comandos A

    elseif expresso 2grupo de comandos B

    elseif expresso 3grupo de comandos C

    elsegrupo 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 passosindicados. 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 porcount;

    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 = expressoGrupo de comandos A

    end

    Os comandos entre as instrues for e end so executados uma vez para cada coluna daexpresso 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 aseguir:

    Suponha que temos um grupo de valores que representam a distncia de um txi da torremais prxima. Queremos gerar um vetor que contenha as respectivas velocidades. Se o txi est a10 metros do edifcio, usamos a equao:

    velocidade = 0,425 + 0,00175d2

    Se o txi estiver a uma distncia maior que 10 metros, use a equao a seguir:

    velocidade = 0,625 + 0,12d 0,00025d2

    Como a escolha da equao da velocidade depende do valor de d, devemos determinarseparadamente d(1), d(2), e assim por diante. Contudo, no queremos o mesmo para calcularvelocidade(1), velocidade(2) e assim por diante. Logo, usaremos um loop, com a varivel usadacomo subscrito.

    Na primeira soluo, supomos que existiam 25 elementos no vetor d..

  • Curso de MATLAB

    Cap. 4 Controle de Fluxo 46

    for d = 1:25if d < = 10

    velocidade = 0.425 + 0.00175*d^2else

    velocidade = 0.625 + 0.12*d 0.00025*d^2end

    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)^2else

    velocidade = 0.625 + 0.12*d 0.00025*d(k)^2 endend

    As regras para um loop for so:

    Se o conjunto for uma matriz vazia, o loop no ser executado. O fluxo de controle passar aoprximo 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 forcontiver a seguinte informao:

    for k = 5: 4: 83

    Ento, o nmero de vezes em que executa-se o loop ser:

    1incremento

    incioitelimfloor +

  • 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 seriaexecutado 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 soexecutados. Verifique sua resposta .

    1. for k = 3:202. for count = -2:143. for k = -2:-1:104. for time = 10:-1:05. for time = 10:56. 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 sertotalmente 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 umlugar para outro. Se guia de luz, a luz seguir a forma da haste e emergir somente naextremidade, como mostramos na figura a seguir:

    2014

    78floor1

    4

    583floor =+

    =+

    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 oarranjo espacial o mesmo em ambos extremos (um feixe coerente), a fibra pode ser usada paratransmitir uma imagem, e o feixe chamado condutor de imagem. Se as fibras no tem o mesmoarranjo para ambos extremos (feixe incoerente), a luz transmitida em vez da imagem, e por estarazo chamada guia de luz. Por causa da flexibilidade das fibras ticas, as guias de luz econdutores de imagens so usados em instrumentos projetados para permitir a observao visual deobjetos ou reas que de outro modo seriam inacessveis. Por exemplo, um endoscpio uminstrumento usado por fsicos para examinar o interior do corpo de um paciente com somente umpequeno corte. Um endoscpio usa uma fibra tica para transmitir a luz necessria dentro do corpode um paciente. As fibras ticas podem ser usadas para transmitir feixes de luz LASER, o qualpode 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 unicamentedos 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 deblindagem. O material que compe o ncleo tem o ndice de refrao mais alto que o meio que oenvolve. 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 derefrao dos materiais e o ngulo de incidncia da luz. Se a luz incidente na interface entre doismeios 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 crticoc. Como o ngulo crtico depende dos ndices de refrao de dois materiais, podemos calcular estengulo e determinar se a luz que entra em uma haste a um ngulo particular permanecer no interiorda mesma. Suponha que n2 o ndice de refrao do meio envolvente, e n1 o ndice de refrao dahaste. Se n2 maior que n1, a haste no transmitir luz; caso contrrio, o ngulo crtico pode serdeterminado pela equao

    sen c = n2 / _n1

    Escreva um programa MATLAB que determina se a luz ser ou no transmitida por doismateriais que forma um guia. Suponha que um arquivo de dados ASCII denominado indices.datcontenha o nmero de possveis ndices de refrao da fibra seguido pelo ndice de refrao do meioque o envolve. O programa deve determinar se os materiais formaro um guia de luz e, ento, paraquais ngulos a luz entra no guia.

    1. ENUNCIADO DO PROBLEMA

    Determine se os materiais especificados formaro ou no um guia de luz. Se eles noformarem, 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 contendoos ndices de refrao para os guias de luz em potencial. A sada uma mensagem indicando se aluz 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 luzde vidro envolvido pelo ar, o ngulo crtico c pode ser calculado como mostramos a seguir:

    c = sen 1 (n2 / n1 ) = 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,820 .

    4. SOLUO DO MATLAB

    5. TESTANDO

    4.4 Loops WHILE

    O loop while uma importante estrutura para repetio de um grupo de comandos quandoa condio especificada for verdadeira. O formato geral para esta estrutura de controle :

    while expressogrupo 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 destescomandos serem executados, a condio novamente questionada. Se for verdadeira, o grupo decomandos novamente executado. Quando a condio for falsa, o controle pula para o comandoposterior ao comando end. As variveis modificadas no grupo de comandos A devem incluir asvariveis 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 parasair um loop infinito).

    Podemos mostrar que o uso de um loop while em um grupo de comandos que adicionamvalores em um vetor para uma soma at o valor negativo ser alcanado. Como todos os valores novetor 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 aracerca dos veculos envolve a anlise dos materiais para no somente o fluxo de ar mas tambmpara propriedades como a distribuio de temperatura. Neste problema, consideramos adistribuio em uma fina placa metlica tal que esta alcance um ponto de equilbrio trmico. Aplaca projetada para ser usada em uma aplicao na qual as temperaturas de todos os quatro ladosda placa metlica estejam a temperaturas constantes ou a temperaturas isotrmicas. A temperaturapara os outros pontos da placa uma funo da temperatura dos pontos envolventes. Seconsiderarmos as placas para serem semelhantes a uma grade, ento uma matriz poderia ser usadapara armazenar as temperaturas dos pontos correspondentes sobre a placa. A figura abaixo mostrauma grade para uma placa que est sendo analisada com seis medidas de temperatura ao longo doslados e oito temperaturas ao longo das partes superior e inferior. Os pontos isotrmicos nos quatroslados 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 oslados superior, esquerdo e direito so mantidos mesma temperatura enquanto que o lado inferiorda placa mantida a uma temperatura diferente. Os pontos restantes so inicialmente selecionadospara 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:

    T0 = T1 + T2 + T3 + T44

    Pontos que envolvem T0

    Depois de calcular a nova temperatura para um ponto interno, a diferena entre a antiga e atemperatura recente calculada. Se a mudana de temperatura for maior que algum valor detolerncia especificado, a placa j no est em equilbrio trmico, e o processo inteiro repetido.

    superior

    inferior

    esqu

    erda

    direita

    T0

    T1

    T0T4

    T3

    T2

  • Curso de MATLAB

    Cap. 4 Controle de Fluxo 52

    Usamos as duas matrizes para as temperaturas, uma das antigas temperaturas e uma dasrecentes temperaturas. Precisamos de duas matrizes porque supomos que a temperatura muda paratodos os pontos que ocorrem simultaneamente, sempre que as calculamos. Se usarmos uma nicamatriz, 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 novovalor a mdia das temperaturas nas posies (2, 3), (3, 2), (3, 4), e (4, 3). Quando calculamos anova temperatura para a posio (3, 4), novamente calculamos uma mdia, mas queremos usar oantigo valor na posio (3, 3), e no o seu valor atualizado.

    Portanto, usamos uma matriz de temperaturas antigas para calcular uma matriz de novastemperaturas e para determinar se alguma temperatura muda acima da tolerncia. Quandomovemos as novas temperaturas para o conjunto antigo. Quando nenhuma das temperaturas mudaacima 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 temperaturasisotrmicas e o valor de tolerncia. A sada o grupo de temperaturas de equilbrio para a placa demetal.

    3. EXEMPLO MANUAL

    Tenha a certeza que compreende o processo, examinamos um simples caso, estudandocada iterao. Supondo que a matriz contm quatro linhas e quatro colunas. As temperaturasisotrmicas so 100 e 50, e ns iniciamos todos os pontos restantes do zero. Usamos umatolerncia de 40. O grupo inicial de temperaturas e as sucessivas iteraes ao equilbrio trmicoso mostradas a seguir:

    temperaturas isotrmicas

    tamanho da grade

    tolerncia

    Equilbrio detemperatura

  • Curso de MATLAB

    Cap. 4 Controle de Fluxo 53

    Temperaturas Iniciais

    100 100 100 100100 0 0 100100 0 0 10050 50 50 50

    Primeira Iterao

    100 100 100 100100 50 50 100100 37,5 37,5 10050 50 50 50

    Segunda Iterao

    100 100 100 100100 71,875 71,875 100100 59,375 59,375 10050 50 50 50

    Como nenhuma das temperaturas alteradas entre a primeira e segunda interaoultrapassam a tolerncia de 400, 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 daavaliao dos mesmos. O alcance da anlise estende-se dos mais simples clculos dedados, como a mdia aritmtica, mais complexa anlise que calcula medidas como odesvio padro ou varincia dos dados. Medidas como estas so medidas estatsticasporque suas propriedades no so exatas. Por exemplo, o seno de 600 uma medidaexata pois o valor sempre o mesmo toda vez que o calculamos, mas a velocidademxima que atingimos com o nosso carro uma medida estatstica porque variadependendo de parmetros como a temperatura, condies da estrada, e se estamosnas montanhas ou no deserto. No s podemos medir as