Cur So Matlab 52

Embed Size (px)

Citation preview

Introduo Soluo de Problemas de Engenharia Introduo Soluo de Problemas de Engenharia Introduo Soluo de Problemas de EngenhariaFaculdade deEngenhariaLaboratrio deEngenharia EltricaPrograma Prodenge / Sub-Programa ReengeUniversidade do Estado do Rio de JaneiroCurso deMATLAB5.1Curso deMATLAB5.12a EDIORevista e Ampliada2a EDIORevista e AmpliadaCurso de MATLABIAGRADECIMENTOSEstas notas sobre o uso da verso 5.1 do MATLAB so o resultado do trabalhopersistentedosalunosdaFaculdadedeEngenhariadaUERJ,bolsistasdeiniciaoTecnolgicadoProjetoREENGE-JoanaFigueiredoKonte,JorgeLusPinheiroTeixeira,PatEvieAlves-edaestagiriaLucianaFalettiqueseencarregaramdedarcorposegundaediodeumcursodeIntroduoSoluodeProblemasdeEngenhariausandoametodologiadaProfa.DeloresM.Etter,autoradaobraEngeneering Problem Solving with MATLAB que inspirou, de perto, a confeco destaapostila.Aestegrupoentusiasmadodejovens,aderiramoutrosestagiriosdoLaboratriodeEngenhariaEltrica,comoHlioJustinoMattosFilho.Atodoselesoscumprimentos pelo xito e pela forma como se envolveram de corpo e alma na execuodastarefas.Osucessoobtidonaimplementaodeambososcursosnosemdvidafrutodeumaobraisolada.Delaparticiparam,comentusiasmoaequipetecnico-administrativa do Laboratrio de Engenharia Eltrica, cujos membros contriburam comadedicaoquelhespeculiar,atravsdosuporteeinfra-estruturaeoenvolvimentodiretocomosalunosecomacoordenaodoprojeto.UmmuitoobrigadoequipeformadapelosfuncionriosAlbertoAvelarSantiago,AndrVallimStachlewski,JosEmlioGomes,JairMedeirosJnior,JooEliasSouzadaCosta,LuizRobertoFrancoFagundesFilho,MarcosAugustoMafra,AntnioMarcosMedeirosCorra,SueliFerreiradosSantosepelaSrta.CarlaAparecidaCaldasdeAlmeida,docursodePs-Graduaolatu-sensoemEngenhariaMecatrnicadaUERJ.UmapalavradereconhecimentoespecialaodiretorDr.NivalNunesdeAlmeida,coordenadorgeraldoREENGE,peloapoioepeloincentivodadoviabilizaodeinmerasatividadesnombitodafaculdadecomoumtodoedoLEEemparticular.Profa.MariaEugniaMosconideGolveia,vice-diretoradafaculdadedeEngenhariaumapalavradegratidopeloempenhoemviabilizarjuntamentecomodiretorassolicitaesdeestgiointernonoLEE.Aogrupodecolaboradoressilenciososdaadministraopeloapoionasatividadesnombitodesuascompetncias,oobrigadosincerodaOrientaodotrabalho.AoCNPqquepatrocinouasbolsasquepermitiramestetrabalhomedianteosrecursos alocados pela FINEP, o nosso agradecimento._______________________________Bernardo Severo da Silva FilhoOrientador e chefe do Lab. De Engenharia EltricaCurso de MATLABIIndice1 INTRODUO SOLUO DE PROBLEMAS 12 MATRIZES, VETORES E ESCALARES 42.1 Definindo matrizes no MATLAB 5Mtodo Simples 6Arquivos MAT e ASCII 6Operador dois pontos 8Comando Input 8Imprimindo matrizes 11Comando format 11Comando disp 12Comando fprintf 122.2 Grficos X-Y 13Aplicao Soluo de Problemas:Anlise de um tnel de vento 153 CLCULOS FUNDAMENTAIS E MATRIZES ESPECIAIS 163.1 Valores Especiais e Matrizes Especiais 16Magic Square 17Matriz de Zeros 17Matriz de ums 17Matriz identidade 17Tringulo de Pascal 173.2 Operaes entre escalares 18Hierarquia em operaes aritmticas 19Limites Computacionais 213.3 Operaes de Conjuntos 21Aplicao soluo de problemas:Ecos em sinais de comunicao 253.4 Funes Elementares 29Funesmatemticas elementares 30Funes trigonomtricas 31Funes hiperblicas 32Funes de Arquivos M 32Aplicao soluo de problemas:sinais de sonar 343.5 Nmeros Complexos 36Operaes aritmticas com complexos 37Coordenadas polares e retangulares 37Curso de MATLABIII4 CONTROLE DE FLUXO 404.1 Operadores lgicos e relacionais 404.2 Tomada de decises 42Estrutura if-then-else 424.3 Loop FOR 45Comando break 47Aplicao soluo de problemas:fibras ticas 474.4 Loop WHILE 49Aplicao soluo de problemas:equilbrio de temperatura 505 MEDIDAS ESTATSTICAS 545.1 Funes para anlise de dados 56Desvio mdio, varincia e desvio padro 56Comando sort 60Histograma 61Aplicao soluo de problemas:anlise do sinal de voz 645.2 Nmeros Aleatrios 66Funo nmero aleatrio 66Funo Densidade de Probabilidade 66Modelo uniforme 68Modelo normal 68Histograma: comando hist 71Aplicao Soluo de Problemas:simulador de vo 735.3 Relao Sinal/Rudo 75Energia de um sinal 75Clculo de SNR 76Adicionando um rudo a um sinal existente 776 OPERAES COM MATRIZES 796.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 82Curso de MATLABIV6.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 877 GRFICOS 917.1Grficos X-Y 91Coordenadas retangulares 91Legendas 917.2 Grficos Polares 92Coordenadas Polares 92Transformaes retangular/polar 93Grficos de barras e degrau 947.3 Opes 947.4 Grficos 3D 97Aplicao Soluo de Problemas: trajetria de um satlite 1008 SOLUES DE SISTEMAS DE EQUAES LINEARES 1018.1 Interpretao Grfica 1018.2 Soluo usando operaes matriciais 103Diviso de matrizes 104Matriz Inversa 104Aplicao Soluo de Problemas:anlise de um circuito eltrico 1059 INTERPOLAO E AJUSTE DE CURVAS 1069.1 Interpolao 106Interpolao linear 107Funo table1 107Funo table2 109Comando spline 110Aplicao Soluo de Problemas: brao robtico 112Curso de MATLABV9.2 Ajuste de curvas 113Regresso Linear 113Comando polyfit 114Comando polyval 11510 ANLISE POLINOMIAL 11610.1 Avaliao do polinmio 116Comando polyval 116Operaes Aritmticas 117Aplicao Soluo de Problemas: bales meteorolgicos 11810.2 Razes de polinmios 12011 INTEGRAO NUMRICA E DIFERENCIAO 12211.1 Integrao Numrica 122Regra Trapezoidal e Regra de Simpson 122Comando Quadratura 122Aplicao Soluo de Problemas: anlise de escoamento de um leo num oleoduto 12311.2 Diferenciao Numrica 125Derivao por expresso de diferena 126Comando diff 12712 EQUAES DIFERENCIAIS ORDINRIAS 12912.1 Equaes Diferenciais Ordinrias de Primeira Ordem 12912.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 13312.3 Equaes Diferenciais de Ordens Superiores 13513 FATORAO E DECOMPOSIO DE MATRIZES 13713.1 Autovalores e autovetores 137Aplicao soluo de problemas: adaptador para reduo de rudos 14113.2 Decomposio e Fatorao 143Curso de MATLABVIFatorao Triangular 143Fatorao QR 14414 PROCESSAMENTO DE SINAIS 14614.1 Anlise no domnio da freqncia 14614.2 Anlise de filtros 149Funo de Transferncia Analgica 149Funo de Transferncia Digital 15114.3 Implementao de Filtros Digitais 15314.4 Projetos de Filtros Digitais 155Filtros IIR 156Filtros FIR 157Aplicao soluo de problemas: filtros para separao de canais 15815 MATEMTICA SIMBLICA 16115.1 Expresses Simblicas 161Representaes de Expresses Simblicas no MATLAB 16215.2 Variveis Simblicas 16315.3 Operaes em expresses simblicas 16515.4 Operaes Algbricas Padro 166Operaes Avanadas 16715.5 Funes de Converso 16915.6 Derivao e Integrao 17015.7 Transformadas 171Transformada de Laplace 173Transformada de Fourier 173Transformada Z 174Curso de MATLABCap. 1 - Uma Introduo Soluo de Problemas 1Captulo 1 Uma Introduo Soluo de ProblemasAsoluodeproblemasparteessencialnosomentedoscursosdeengenhariamastambmdoscursosdeMatemtica,Fsica,QumicaeCinciadaComputao.Logo,importanteuma base slida em soluo de problemas. Tambm de grande auxlio um embasamento suficienteparatrabalharemtodasestasreas,paraquenotenhamosqueaprenderumatcnicaparaproblemasdematemtica,eumatcnicadiferenteparaproblemasdefsica,eassimpordiante.Atcnica de soluo de problemas que apresentamos trabalhos para problemas de engenharia e podeser seguida de perto pararesolver problemas em outras reas; mas, supe-se que estamos usando oMATLABpara ajudar a resolv-los.Oprocessooumetodologiapararesoluodeproblemasqueusaremosaolongodotextopossui 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 PROBLEMAOprimeiropassoenunciaroproblemaclaramente.extremamenteimportantequeoenunciado 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/SADAO 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 chamadodecaixapretaporquenoestamosdefinindoparaestepontotodosospassosparadeterminarasada,masestamosmostrandoainformaoqueusadaparacalcularasada.Paraesteexemplo,poderamos usar o diagrama na figura 1.1.Curso de MATLABCap. 1 - Uma Introduo Soluo de Problemas 2Figura 1.1 Diagrama I/O3.EXEMPLO MANUALOterceiropassotrabalharoproblemamanualmenteoucomumacalculadora,usandoumpequenogrupodedados.umpassomuitoimportanteenodeveserignoradopormaissimplesque seja o problema. um item no qual voc trabalha os detalhes da soluo do problemas. Se vocnopodepegarumsimplesgrupodenmerosecalcularasada(sejamanualmenteoucomumacalculadora),entovocnoestprontoparaexecutaroprximopasso;vocdevereleroproblemas e talvez consultar material de referncia. Uma vez que pode trabalhar o problemade 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 usarocomputadorparafazertodososclculos.Oexemplomanualparaoesteexemplomostradoaseguir:Suponha que os pontos p1 e p2 tenham as seguintes coordenadas:p1 =(1,5),p2 = (4,7)Queremoscalcularadistnciaentredoispontos,queahipotenusadeumtringuloretngulo,conformemostraafigura1.2.UsandooTeoremadePitgoras,podemoscalcularadistnciadcom a seguinte equao:Figura 1.2 Distncia entre dois pontos.ponto 1ponto 2distncia entre os pontos61 , 3 d13 d) 5 7 ( ) 1 4 ( d2 s 1 s d2 22 2 + + d(1,5)(4,7)S2S1xyCurso de MATLABCap. 1 - Uma Introduo Soluo de Problemas 34.SOLUO MATLABNo prximo captulo, falaremos sobre os comandos MATLAB. Contudo, da soluo voc podeverqueoscomandossomuitosimilaressequaesqueforamusadasnoexemplomanual.Osinalde percentagem usado para anteceder comentrios que explicam os comandos MATLAB.%% Este programa calculae imprime% distncia, em linha reta,entre dois pontos.p1 = [1,5]; % ponto 1 inicialp2 = [4,7]; % ponto2iniciald = sqrt (sum ((p2-p1).^2)) % calcular distncia5.TESTANDOOpassofinalemnossoprocessodesoluodeproblemastestarasoluo.Primeiramente,devemostestarasoluocomosdadosdoexemplomanual,jquecalculamosasoluo.Quandoos comandos MATLAB na soluo so executados, o computador mostra a seguinte sada:d = 3.6056Estasadacoincidecomovalorquecalculamosnoexemplomanual.SeasoluoMATLABnocoincidircomoexemplomanual,devemosreverambassoluesafimdeencontraroerro.Umavezqueasoluotrabalhacomoexemplomanual,devemostambmtest-lacomvriosgruposdedadosparacertificarqueasoluovlidaparaoutrassriesdedados.Curso de MATLABCap. 2 Matrizes, Vetores e Escalares 4

Captulo 2 - Matrizes, Vetores e EscalaresA 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 dadosdenominadamatriz.Matrizumatabeladenmerosdispostosemmlinhasencolunas.Assim,umsimplesnmeropodeserconsideradoumamatrizcomumalinhaeumacoluna,umacoordenadax-ypodeserconsideradaumamatrizcomumalinhaeduascolunas,eumgrupodequatro coordenadas x-y-z pode ser considerada uma matriz com quatro linhas e trs colunas.Comoexemplo, temos:Seumamatrizcontivermlinhasencolunas,entoconterumtotaldem.nelementos.Cadaelementodamatrizindicadoporndices,aij.Oprimeiro,i,indicaalinha,osegundo,j,indicaacolunaondeoelementoseencontra.Assim,oelementoa1,2 damatrizB3.1.Seonmero de linhas e colunas forem iguais, ento dizemos que a matriz umamatriz quadrada.Se amatriz tiver apenas uma linha e uma coluna, podemos dizer que o valor umescalar,seamatrizcontiverapenasumalinhaouumacoluna,aomatrizchamadavetor-linhaouvetor-coluna,respectivamente.E x e r c c i o sResponda s seguintes questes sobre esta matriz:1.Qual a ordem de G?2.G uma matriz quadrada?3.D as referncias para todas as posiesque contm o valor 0.5.4.D as referncias para todas as posies que contmvalores negativos.A = [ 3.5] B = [ 1.53.1]1111]1

2 0 00 1 10 1 10 0 1C111111]1

5 . 0 5 . 4 3 . 2 2 . 15 . 0 4 . 2 5 . 0 5 . 05 . 1 0 . 9 2 . 8 7 . 50 . 2 1 . 0 5 . 0 2 . 85 . 0 3 . 2 5 . 1 6 . 0GCurso de MATLABCap. 2 Matrizes, Vetores e Escalares 5

Definindo Matrizes no MATLABSuponha 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 a13a1n ;

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];Onomedamatrizdevecomearcomumaletraeconternomximo19caracteresquepodemsernmeros,letrasoucaractersublinhado,eapareceaoladoesquerdodosinaldeigual.Oladodireitocontmosdadosentrecolchetesporordemdelinhas.Oponto-e-vrgulaseparaaslinhas,eosvaloresdaslinhaspodemestarseparadosporvrgulasouporespaos.Ovalorpodeconter 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.Voctambmpodedefinirumamatrizdigitandoumacadalinhaseparadamente.Comoexemplo, a matriz C:C = [ -10 01 1 01 1 00 0 2];Sequisermos,porexemplo,definirumvetor-linhaFcom10valores,tambmpodemosfazer: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 alinha de umamatriz 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 MATLABCap. 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.0B];Estes comandos equivalem a:S = [ 3.01.53.1];Podemostambmmudareadicionarvaloresnamatrizusandoumrefernciaentreparnteses.Assim, o seguinte comando;S (2) = -1.0;Muda o segundovalor da matriz Sde 1.5 para 1.0.A ordem da matriz pode ser alterada.Se executarmos o seguinte comando:S(4) = 5.5Ento a matriz S ter quatro valores em vez de trs.Se executarmos o comando:S(8) = 9.5;EntoamatrizSter8elementos,eosvaloresdeS(5),S(6)eS(7)soautomaticamentenulos, j que no foram atribudos valores para eles.E x e r c c i o sDetermine 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 = [ 34 57 9 10];5. E = [35100;0003;3998];6. T =[ 4249];Q = [ T0T ];7. X = [ 36];8. R = [C; X, 5 ];9. V = [C(2,1) ; B ];10. A(2,1) = -3;Curso de MATLABCap. 2 Matrizes, Vetores e Escalares 7 Asmatrizestambmpodemserdefinidasatravsdeinformaoarmazenadaemarquivos.O MATLAB trabalha com dois tipos diferentes de arquivos: Os arquivos MAT eos arquivos ASCII.Os arquivos MATOsarquivosMATsogeradosporumprogramaMATLABusandoocomandosave, 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:saveteste_1 A B C;Para recuperar as matrizes no programa MATLAB, usamos o comando:load teste_1Arquivos ASCIIUm arquivo ASCII que ser usado juntamente com um programa MATLAB deveconter informao exclusivamente numrica, e cada linha do arquivo deve conter o mesmonmerodedados.Oarquivopodesergeradoutilizandoumprocessadordetextoou,porexemplo,utilizandoprogramascomooFortranouainda,porumprogramaMATLABusando a seguinte forma do comando save:save teste_1.datR/asciiCadalinhadamatrizRserescritaparalinhasdistintasnoarquivosdedados.Recomenda-se utilizar a extenso .datpara sermais 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 MATLABCap. 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 );Oselementosdovetorxcorrespondemprimeiracolunadedata1.Osegundocomando cria um vetor y cujos elementos correspondem segunda coluna da matriz data1.Sequisssemoscriarumvetorzcujoselementossejamoselementosdaprimeiralinhadamatriz 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, 7e 8.O operador : entre os doisnmeros inteiros geratodos os inteiros entre os dois nmeros especificados.Se for usadoparaseparartrsnmeros,osdoispontosgerarovaloresentreoprimeiroeterceironmeros,usandoosegundonmerocomoincremento.Anotaoabaixogeraumvetor-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 MATLABCap. 2 Matrizes, Vetores e Escalares 9 Observaes:OMATLABreconheceumamatrizvazia.Hvriasmaneirasdeger-la.Comoexemplo, temos:A = [ ]B = 4: -1: 5A 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 sDetermine 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:111111]1

5 , 0 5 , 4 3 , 2 2 , 15 , 0 4 , 2 5 , 0 5 , 05 , 1 0 , 9 2 , 8 7 , 50 , 2 1 , 0 5 , 0 2 , 85 , 0 3 , 2 5 , 1 6 , 0GCurso de MATLABCap. 2 Matrizes, Vetores e Escalares 10 Comando InputVocpodeentrarcomosvaloresdamatriz,viateclado,utilizandoocomandoinput que mostra um texto eento 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.16.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 MatrizesO 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 formatSuponha os comandos abaixo: a = [1 2 3]; T = [ 1.12.4 3.7]; c = 2*a U = 2*T c =U = 2 4 6 2.20004.80007.4000Pordefinio,seoelementodeumamatrizforumnmerointeiro,oMATLABapresentaoresultadocomonmerointeiro.Seoelementoforumnmeroreal,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)Deacordocomoformatonumricoescolhido,avarivelApodeestarapresentadasobaforma:Curso de MATLABCap. 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 + + +paravalorespositivose-paravalores negativosformat rat 1393/985 aproximao racionalformat hex 3ff6a09e667f3bcd formato hexadecimalComando dispQuandoquisermosexibirocontedodeumamatrizsemimprimirseunomeouimprimirumpequenotexto,usamosocomandodisp.Assim,seavariveltempcontiverumvalordetemperaturaemgrausCelsius,podemosimprimirovaloremumalinhadecomando e a unidade na linha posterior:disp(temp); disp (graus Celsius)Se o valor de temp for 78, ento a sada ser:78 graus CelsiusComando fprintfO comando fprintfnos permite imprimir textos e contedo de matrizes. Podemostambm especificar o formato numrico .Sua forma geral :fprintf (formato, matriz)O modo formato contm o texto eas 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 MATLABCap. 2 Matrizes, Vetores e Escalares 12 fprintf (A temperatura %f graus Celsius\n, temp)A sada seria:A temperatura 78.0000 graus CelsiusSe modificarmos o comando para esta forma:fprintf (A temperatura \n %fgraus Celsius\n, temp)Ento, a sada seria:A temperatura 78.0000 graus CelsiusOsformatosespecficos%f,%e,e%gtambmpodemconterinformaoparaespecificar o nmero de casas decimais a imprimir e o nmero de algarismos significativos,juntamentecomopontodecimal,conformeexplicadonoinciodaseo.Considereoseguinte comando:fprintf (A temperatura %4.1fgraus Celsius\n, temp)A sada mostrar o valor detemp com 4 algarismos, sendo que um destes ser umponto decimal, conforme mostramos abaixo:A temperatura 78.0 graus CelsiusGrficos X-YSuponhamos que queremos plotar os valores de uma matriz em vez de imprimi-los.PodemosusaroMATLABparaplotargrficos.Nestaseo,mostraremoscomogerarumsimplesgrficox-ydedadosarmazenadosemdoisvetores.Ento,semconheceralgunscomandos, voc pode imediatamente comear usando o MATLAB para gerar grficos.Suponhaquequeiraplotarosdadosdetemperaturaaseguircoletadosemumaexperincia de fsica:Curso de MATLABCap. 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.510 90.4Suponhatambmqueosdadosrelativosaotempoestejamarmazenadosemumvetordenominadox,equeosrelativostemperaturaestejamarmazenadosemumvetordenominado 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 deveincluirunidades,ttuloeumabrevedescrio.Logo,podemosaperfeio-locomoosseguintes 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), gridwhitebgCurso de MATLABCap. 2 Matrizes, Vetores e Escalares 14 OstrspontosusadosdepoisdosquatrocomandossousadosparaqueoMATLABexecuteosseiscomandosemumanicavez.Paraaprendermaisopesparagerar grficos x-y e outros tipos de grficos, veja o captulo 7.Aplicao Soluo de Problemas: Anlise de Dados de um Tnel de VentoUmtneldeventoumacmaradetesteconstrudaparaproduzirdiferentesvelocidades 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 demediesdeforanacmaradeteste,easmedidasdasforassobreomodelopodemserfeitasparadiferentesvelocidadesdeventoengulosdomodelorelativodireodavelocidade.Aofinaldeumlongotestedetneldevento,muitosgruposdedadossocoletadosepodemserusadosparadeterminarolift,drageoutrascaractersticasdaperformance aerodinmica do novo modelo para vrias velocidades de operao e posies.Usamos esta aplicao vrias vezes em nossos problemas ao longo do texto.Nestaseo,supomosqueosdadoscoletadosdotestedotneldeventoforamarmazenadosemum arquivo ASCII denominado vento1.dat.Gostaramos de visualizar o grfico dos dadosparaverificarseossensoressobreomodeloemescalaparecemtrabalharadequadamente.Suponhamosquecadalinhadoarquivocontmumngulodevoemgrauseumcorrespondente coeficiente de lift. Para este exemplo, usamos os seguintes dados:Curso de MATLABCap. 2 Matrizes, Vetores e Escalares 15 ngulodeVo(graus)-4 -2 0 2 4 6 8 10 12 14 15CoeficientedeSustentao-0,202 -0,050 0,108 0,264 0,421 0,573 0,727 0,880 1,027 1,150 1,195ngulodeVo(graus)17 18 19 20 21CoeficientedeSustentao1,225 1,250 1,245 1,221 1,177MesmoquepareasimpleslereplotarosdadosusandooMATLAB,usaremosametodologia descrita no captulo anterior para mostrar igualmente simples o processo quenos permite estruturar nossas idias no desenvolvimento na soluo de problemas.1.ENUNCIADO DO PROBLEMAGerar um grfico do ngulo de vo e coeficiente de lift.2.DESCRIO ENTRADA/SADASempre que for possvel, usaremos um diagrama I/O, conforme mostrado na figuraaseguir.Nesteexemplo,lemosasinformaescontidasemumarquivoeusamosoMATLAB 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 MANUALApesar 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 MATLAB5.TESTANDOvento1.datDiagrama I/OCurso de MATLABCap. 3 Clculos com Matrizes 16Captulo 3 - Clculo Fundamentais e Matrizes EspeciaisAsoperaesdeadio,subtrao,multiplicaoedivisosoamaioriadasoperaesfundamentaisusadasporengenheirosecientistas.Podemosexecutaroutrasoperaesderotina,comooclculodaraizquadradaouologaritmodeumvalorouatangentedeumngulo.Estasoperaespodemserexecutadassobreumvalorsimples(umescalar),aplicadasaumalistadevalores(vetor),ouaplicadasaumgrupodevaloresarmazenadosemumamatriz.Nestecaptuloaprenderemos como executar todas estas operaes e funes.E tambm, aprenderemos como usarnmeros complexos no MATLAB.3.1 Valores Especiais e Matrizes EspeciaisO MATLAB contm um grupo de constantes pr-definidas, valores e matrizes especiaisteis para uso em programas do MATLAB.Valores Especiaispi O valor de automaticamente armazenado nesta varivel.-1 i,j Estas variveis so inicialmente agrupadas ao valor-1.Vejaaseo3.5parauma discusso completa sobre nmeros complexos.inf EstavarivelarepresentaodoMATLABparainfinito,oqualocorretipicamentecomooresultadodeumadivisoporzero.Umamensagemdeaviso imprimida, se voc mostrar o resultado da diviso, o valor ser .Not-a-numberNaN Ocorreemgrandepartequandoaexpressoindefinida,comoadivisodezero 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 atualcomo por exemplo, 20-Jun-92.ans Varivelusadaparaarmazenarvalorescalculadosporumaexpressoquecalculada mas no armazenada em uma varivel nomeada.Matrizes EspeciaisO MATLAB contm um grupo de funes que geram matrizes especiais.Algumas destasmatrizes tem aplicao especfica s tcnicas numricas discutidasposteriormente.Curso de MATLABCap. 3 Clculos com Matrizes 17Magic SquareUma matriz magic square de ordem n uma matriz nxn 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,parasaberoquadradomgicodeordem3,opromptdoMATLABdeveapresentar:magic (3)ZerosEsta 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 xn.OnesA 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.EyeAmatrizidentidadepodesergeradapeloMATLABatravsdafunoeye.Umamatrizidentidadeumamatrizescalardequalquerordemcujoselementosaijsoiguaisa1parai=j.Apresentaomesmoformatoqueasfunesanteriores.Oformatoeye(n)geraumamatrizidentidade de ordem n.J o formato eye (m,n) gera uma matriz de ordem m x n.PascalCriaumamatrizcujasdiagonaislembramotringulodePascal.Assim,seusarmosocomando pascal(5), a seguinte matriz gerada: 1 1 1 11 1 2 3 45 1 3 610 15 1 41020 35 1 51535 70Curso de MATLABCap. 3 Clculos com Matrizes 183.2 Operaes entre EscalaresClculosaritmticossoidentificadosusandoexpresses.Umaexpressopodesertosimplescomoumaconstante,oupodetermatrizeseconstantescombinadascomoperaesaritmticas.Nestaseo,discutiremosoperaesenvolvendosomenteescalares.Naseoposterior,estendemosasoperaesincluindooperaeselementoporelementoentreescalaresematrizes ou entre duas matrizes.As operaes aritmticas entre dois escalares so mostradas na tabela 3.1.Uma expressopodeserresolvidaearmazenadaemumavarivelespecfica,comonocomandoseguinte,oqualespecifica que os valores em a e b sero adicionados, e a soma armazenada em uma varivel x:x = a + bEste comando deve ser interpretado comoo 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 queesta 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.0O valor 0.0 armazenado na varivel time quando a primeira instruo executado e entosubstitudo pelo valor 5.0 quando a segunda instruo executada.Quandovocentracomumaexpressosemespecificarumavarivelparaarmazenaroresultado,omesmoautomaticamentearmazenadoemumavariveldenominadaans.Cadavezque um novo valor armazenado em ans, o valor anterior perdido.Curso de MATLABCap. 3 Clculos com Matrizes 19Tabela 3.1 Operaes aritmticas entre dois escalaresOperao FormaAlgbricaMATLABAdio a+b a + bSubtrao a-b a - bMultiplicao axb a*bDiviso Direita aba/bDivisoEsquerdabaa\bExponenciao aba^bHierarquia em Operaes AritmticasSabendo que vrias operaespode ser combinadas em uma simples expresso aritmtica,importanteconheceraordemnasquaisasoperaesseroexecutadas.Atabela3.2contmaordemdeprioridadedasoperaesaritmticasnoMATLAB.Notequeestaprioridadetambmsegue a prioridade algbrica padro.Tabela 3.2Hierarquia em operaes aritmticasPrioridade Operao1 Parnteses2 Exponenciao, esquerda direita3 Multiplicao e Diviso, esquerda direita4 Adio e Subtrao, esquerda direitaSuponhaquequeremoscalcularareadeumtrapzio,etambmsuponhaqueavarivelbase 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;Notequeemboraarespostaincorretatenhasidocalculada,nohmensagensdeerroimprimidasalertando-nosquantoaoerro.Portanto,importanteestarcautelosoquandoconvertemosequaesparacomandosdoMATLAB.AdicionarparntesesextrasumamaneiraCurso de MATLABCap. 3 Clculos com Matrizes 20fcil 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,14O 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/ denominadormelhorusarvriasequaesquesomaisfceisdecompreenderqueapenasuma,querequer maior cuidado na hora de imaginar a ordem das operaes.E x e r c c i o sD 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__30s2.Fator de correo em clculo de presso:fator = 1 + _b_+_c_v v23.Distncia entre dois pontos:Slope =y2-y1x2-x14.Resistncia de um circuito paralelo:resistncia =1 _ 1_ + 1+1_r1 r2 r35.Perda de presso de um cano de fricoperda =f . p.1.v2 d 2Curso de MATLABCap. 3 Clculos com Matrizes 21Limites ComputacionaisParaamaioriadoscomputadores,aescaladevaloresestende-sede10-308a10308,oquedeve 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;Comooalcancede10-308a10308,entoosvaloresdexeyestodentredolimiteestabelecido.Mas,ovalordez2e400,eestevalorultrapassaoalcance.Esteerrochamadooverflow porqueoexpoentedoresultadodeumaoperaoaritmticademasiadamentealtoparaser 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;Oerrodeunderflowumerrosimilarcausadopeloexpoentedoresultadodeumaoperaoaritmticaserpequenodemaisparaserarmazenadonamemriadocomputador.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 deunderflow.No MATLAB, o resultadode underflow zero.Sabemosqueadivisoporzeroumaoperaoinvlida.SeumaexpressoresultaemumadivisoporzeronoMATLAB,oresultadodadiviso.OMATLABimprimirumamensagemdeavisoelogoaseguiroclculocontinua.Asoperaesposterioresusamcomoresultado da diviso.3.3 Operaes de ConjuntosUma operao de conjunto uma operao elemento por elemento.Por exemplo, suponhaqueAeBsejamvetores-linhacomcincoelementos.UmmododegerarumnovovetorCcomvalores que sejam produtos dos valores correspondentes em A e B o seguinte:Curso de MATLABCap. 3 Clculos com Matrizes 22C(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);Estescomandossoessencialmentecomandosescalaresporquecadacomandomultiplicaumsimplesvalorporumoutroearmazenaoprodutoemumterceirovalor.Paraindicarqueexecutamosumamultiplicaoelementoporelementoentreduasmatrizesdemesmaordem,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.Paraasoperaesdeadioesubtrao,asoperaesdeconjuntoematriciaissoidnticas,eentonoprecisamosdistingu-las.Contudo,asoperaesdeconjuntoparamultiplicao,divisoeexponenciaosodiferentesdasoperaesmatriciaisparamultiplicao,divisoeexponenciaoeporissodevemosusaropontoquandoqueremosespecificarumaoperao de conjunto.Uma operao elemento por elemento, ou operaes de conjuntos, aplicam-se no somentepara operaes entre duasmatrizes 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 escritasde 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.Paramostrar 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 Busando o seguinte enunciado:C = A.*BCurso de MATLABCap. 3 Clculos com Matrizes 23Ento, C conter os seguintes valores:C = [ 41530]OMATLABtemdoisoperadoresdedivisoumadivisoqueusaosmbolo/eoutraque usa o smbolo \ .O comando para diviso direita:C = A./B;IrgerarumnovovetornoqualcadaelementodeAdivididopeloelementocorrespondente de B.Assim, C conter os seguintes valores:C = [11.6671.2]O comando para diviso esquerda:C = A.\BIr 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 = [10.60.833]Aexponenciaodeconjuntotambmumaoperaoelementoporelemento.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 = [42536]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 = [9243729]Este vetor poderia tambm ser calculado com a seguinte instruo:C = (3).^A;Curso de MATLABCap. 3 Clculos com Matrizes 24Contudo, a instruo a seguir incorreta:C = 3.^A;OMATLABsupequeopontopartedaconstante3,eentofazerumaexponenciaomatricial, que discutiremos no captulo 6. Se inserirmos um espao antes do ponto, como se segue:C = 3 .^A;Ento,ocomandotentariafazeraexponenciaoelementoporelementoconformedesejvamos.Estesexemplosindicamquedevemostercuidadoquandoespecificarmosoperaesdeconjuntos.Senotivercertezaqueoqueescreveuaexpressocorreta,sempreteste-acomsimples 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 sDosvaloresnovetorCdepoisexecuteosseguintesenunciados,ondeAeBcontmosvalores mostrados.Cheque suas respostas usando o MATLAB.A = [2-150] B = [32-14]1.C= A B;2.C = B+A- 3;3.C = 2*A + A.^B;1]1

5 4 3 2 15 4 3 2 1d1]1

6 5 4 3 24 3 2 1 0s1]1

125 64 27 8 1125 64 27 8 1sq1]1

1 1 1 1 11 1 1 1 1z1]1

30 20 12 6 220 12 6 2 0pCurso de MATLABCap. 3 Clculos com Matrizes 254.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 ComunicaoUmainteressantepesquisaestsendofeitaatualmenteparadesenvolversistemasdecomputadores que respondam a comandos verbais.O projeto do tal sistema supe que o microfonecolheocomandodevozetemumarepresentaontidadafala.Infelizmente,sensorescomoosmicrofonesapresentamdistores,denominadasrudo.Ossistemascomcomunicaesduasviastambmraramentetemecosquesoinadvertidamenteintroduzidospelainstrumentao.Poressarazo, um sistema reconhecedor de voz deve ser capaz de executar algum processamento do sinal devozpararemoveralgumasdasdistoresecomponentesindesejveis,talcomoosecos,tentandoantesreconheceraspalavras.Comoformadetestarumprogramaquefoiprojetadopararemoverecos,devemosestaraptosagerarumsinaldigitaleadicionarecosaomesmo.Podemosentoavaliaraperformancedoprogramaquesupostapararemoverosecos.Nestaseo,definimossinaisdigitais,eentodesenvolveremosumprogramaMATLABparaadicionarecosaumsinaldigital.Sinais DigitaisUmsinalumafuno(normalmenteemrelaoaotempo)querepresentainformao.Esta informao ou dado so coletados com um sensor.Alguns dos mais comuns tipos de sensoressomicrofones,quemedemacsticaoudadossonoros(comoafala);sismmetro,quemedeintensidadedetremordeterra;fotoclulas,quemedemaintensidadedaluz;termistores,oqualmedematemperatura;eosciloscpios,quemedemtenses.Ossensoressonormalmenteconectados outra pea da instrumentao chamada conversor analgico-digital (A/D), que amostraosinalperiodicamenteegravaotempoeosvaloresdosinalquepossamserarmazenadosemumarquivo 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 exemplodesinalanalgicocoletadodeumsinalcontnuo.Osinalanalgicocompostodeumgrupodecoordenadas 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 MATLABCap. 3 Clculos com Matrizes 26Gerando ecos em um sinalUm 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)noprimeiroesquema.Osegundoesquemacontmumecodosinaloriginalquefoiatenuadoaproximadamente50%(ou0,5)dosinaloriginal.Oterceiroesquemacontmumecodosinaloriginal atenuado em 30% e atrasado 5 segundosem relao ao sinal original;este um ROLLEDecoporqueosvaloresdoecosonegativosdoecoesperado.Oquartoesquemacontmosinaloriginal mais os dois ecos adicionados ao mesmo.Figura 3,1 Sinal Analgico ou contnuoFigura 3..2 Amostra ou Sinal DigitalCurso de MATLABCap. 3 Clculos com Matrizes 27Figura 3.3 O sinal original e os ecos.Suponha que um sinal original foi coletado um perodo de 10 segundos, com um intervalodetempodeamostragemde0,1segundos.Oseguintegrupodecoordenadasforamcoletadosnoprimeiro 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,0EscrevaumprogramadoMATLABquegeraumsinalquecontmosinaloriginalcomtrsecosadicionadosaomesmo.Oprimeiroecoatenuadoem0,5eatrasadoem2segundos;osegundoecotemumtempodeatrasode4segundoseatenuadoem0,3segundos;oterceiroecoatrasadoem7,5segundoseatenuadoem0,1.Ploteogrficodosinaloriginaleosinalcomecosem um arquivo MAT denominado eco.mat.1.ENUNCIADO DO PROBLEMADadoumsinaloriginal,gerarumnovosinalcontendoosinaloriginalmaistrsecosespecficos adicionados a ele.2.DESCRIO ENTRADA/SADAOretngulotracejadocontmumafiguradetalhadadoprocessodegeraodeecosdosinaldeentrada[sn].Estesinalatrasadoemultiplicadoporumfatorescalar(representadopelotringulo)paragerarcadaeco.Ento,osinaloriginaletodososecosquesoadicionadosjuntosem um novo sinal [gn], o qual plotado e armazenado um arquivo de dados chamado eco.mat.12 34 5 6712 34 5 6712 34 5 6712 34 5 67t, segundost, segundost, segundost, segundoss(t)Eco 1Eco 2s(t) + EcosCurso de MATLABCap. 3 Clculos com Matrizes 283.EXEMPLO MANUALPara um exemplo manual, usamos os trs primeiros valores do sinal original:Tempo (s) Valor do sinal0,0 0,00,1 0,50,2 1,0Os 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,5Tempo,s Valor do sinal4,0 (- 0,3).(0,0)=0,04,1 (- 0,3).(0,5)=- 0,154,2 (- 0,3).(1,0)=- 0,3Tempo,s Valor do sinal2,0 (0,1).(0,0)=0,02,1 (0,1).(0,5)=0,052,2 (0,1).(1,0)=0,1A soma do sinal original mais os trs ecos so mostrados na figura 3.5.0,5-0,30,1atraso 2satraso 4satraso7,5s[sn]eco.mat[gn]Figura 3.4 Diagrama entrada / sadaCurso de MATLABCap. 3 Clculos com Matrizes 293.4 Funes ElementaresAsexpressesaritmticasraramenterequeremoutrosclculosquenosejamaadio,subtrao,multiplicao,diviso,eexponenciao.Porexemplo,muitasexpressesrequeremouso de logaritmos, exponenciais, e funes trigonomtricas.O MATLAB nos permite usar funesparaexecutarestestiposdeclculosemvezdenosexigiremcalcul-losusandooperaesaritmticasbsicas.Porexemplo,sequisermoscalcularosenodeumnguloearmazenaroresultado em b, podemos usar o seguinte comando:b = sin(angle);A funosin 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 seangle um escalar ou seangle uma matriz.Se angleforuma matriz, ento a funo ser aplicada elemento por elemento aos valores na matriz.Agoraquejvimosvriosexemplosdefunes,iniciaremosumarevisodasregrasrelativasfunes.Umafunoumarefernciaquerepresentaumamatriz.Osargumentosouparmetros da funo esto contidos em parnteses seguindo do nome da funo.Uma funo podenoconterargumentos,umargumentooumuitosargumentos,dependendodesuadefinio.Porexemplo,piumafunoquenotemargumento;quandousamosafunorefernciapi,ovalorFigura 3.5 Sinal Original mais ostrs ecos.Curso de MATLABCap. 3 Clculos com Matrizes 30parapiautomaticamentesubstituiafunoreferncia.Seumafunocontmmaisqueumargumentos,muitoimportantedarosargumentosemordemcorreta.Algumasfunestambmexigem que os argumentos estejam unidades especficas. Por exemplo, as funes trigonomtricassupem que os argumentos esto em radianos.No MATLAB, algumas funes usam o nmero deargumentosparadeterminarasadadafuno.Porexemplo,afunozerospodeterumoudoisargumentos, pelos quais determinamos a sada.Umafunoreferncianopodeserusadaaoladoesquerdodeumsinaldeigualdade,desde que este represente um valore e no uma varivel.Funes podem aparecer direita de umsinaldeigualdadeeemexpresses.Umafunoderefernciapodetambmserpartedoargumentodeumaoutrafunodereferncia.Porexemplo,oseguintecomandocalculaologaritmo do valor absoluto de x:log_x=log(abs(x)) Quando uma funo usada para calcular o argumento de uma outra funo, tenha certezadefecharoargumentodecadafunoemseuprpriogrupodeparnteses.Estaacomodaodafunotambmchamadacomposiodefunes.Nomesdefunesdevemestaremletrasminsculas a menos que o case sensitivy esteja desativado.Agoradiscutiremosvriascategoriasdefunesquesofreqentementeusadasemclculosdeengenharia.Outrasfunesseroapresentadasnodecorrerdoscaptulostologodebatermos tpicos relevantes.Funes Matemticas ElementaresAsfunesmatemticaselementaresincluemfunesparaexecutarumnmerodeclculoscomunscomooclculodevalorabsolutoearaizquadrada.Almdisso,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 design(x)Sexmenorquezero,afunoretornaaovalor1;sexforigualazero, retorna ao valor zero; caso contrrio, a funo retorna ao valor 1.Rem(x,y)Retornaorestodadivisox/y.Porexemplo,rem(25,4)1,erem(100,21) 16.Exp(x)Esta funo retorna ao valor de ex, onde e a base para logaritmo naturalCurso de MATLABCap. 3 Clculos com Matrizes 31ou 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 sCalcule 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 TrigonomtricasAsfunestrigonomtricassupemqueosngulosestejamrepresentadosemradianos.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) Calculaoarcosenodex,ondexdeveestarentre1e1.Afunoapresenta um ngulo em radianos entre - /2e /2.acos(x) Calcula o arcocosseno de x, onde x deve estar entre 1 e 1.A funoapresenta um ngulo em radianos entre 0e.atan(x) Calcula o arcotangente de x, onde x deve estar entre 1 e 1.A funoapresenta um ngulo em radianos entre - /2e/2.atan2(x,y) Calcula o arcotangente do valor dey/x. A funo apresenta um nguloem radianos estar entre- e, dependendo dos sinais de x e y.As outras funes trigonomtricas podem ser calculados usando as seguintes equaes:Curso de MATLABCap. 3 Clculos com Matrizes 32sec x = 1/ cos xcsc x = 1 / sin xcot x = 1 / tan xFunes HiperblicasFunes Hiperblicas so funes de ex; as funes hiperblicas inversas so funes de lnx.Estasfunessoteisemaplicaescomooprojetodealgunstiposdefiltrosdigitais.OMATLAB inclui vrias funes hiperblicas, como as mostradas nesta brevedescrio: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 sD 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 xFunes de arquivo MOMATLABapresentaumaestruturaquenospermitecriarfunessobaformadearquivosM.Comoexemplo,considereumafunoqueestejaemumarquivo-Mdenominadocircum.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 MATLABCap. 3 Clculos com Matrizes 33r = [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.23;52.3];circum ( c) ;Assim, circumpassa 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 palavrafunction, seguida pelo argumento desada,umsinaldeigual,eonomedafuno.Osargumentosparaafunodevemestarentreparnteses.Esta linha define os argumentos de entrada esada;As primeiras linhas devem ser comentrios porque sero exibidas quando o menu help for usadojuntamente com o nome da funo , como help circum;Anicainformaoretornadadafunocontidanosargumentosdesada,queso,obviamente,matrizes.Verificarseafunoincluiumcomandoqueassegureumvaloraoargumento 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 aseguir, que tem dois argumentos de entrada:function error = mse (w,d)Asvariveisespeciaisnarginenargoutpodemserusadasparadeterminaronmerodeargumentos de entrada passadas para uma funo e o nmero de argumentos de sada solicitadosquando a funo chamada.Curso de MATLABCap. 3 Clculos com Matrizes 34Soluo de Problemas Aplicados Engenharia:Sinais de SonarOestudodosonar(soundnavigationandranging)incluiagerao,transmisso,erecepodeenergiasonoranagua.Dentreasaplicaesdestacamos:mapeamentogeolgico,medidasdesinalbiolgico,navegaosubmarinaeexploraomineral.Umsistemasonarativotransmite um sinal que normalmente um sinal senoidal de freqncia conhecida.As reflexes ouos ecos do sinal so recebidos e analisados para prover informaessobre o meio envolvente.Umsistemasonarpassivonotransmitesinaismascoleta-osdesensoreseosanalisabaseadoemsuasfreqncias.Nestaseo,descreveremosassenides,jqueumsinalbsicousandoemsistemassonar. Depois, desenvolveremos um programa MATLAB para gerar um sinal sonar.Gerao de um Sinal SenoidalUma 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 porf = 1/ Ponde 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)Oescalartambmchamadodeamplitudedasenide.Umasenidecomumngulodefase em radianos pode ser escrita como:g(t)=Asen (2ft + )Seongulodefaseforiguala/2radianos,asenidepoderserescritasobtermosdeuma funo seno ou cosseno, e pode ou no incluir um ngulo de fase.Curso de MATLABCap. 3 Clculos com Matrizes 35Gerando um sinal sonarConforme j dito, um dos tipos de sinais usados em sistemas de sonar um sinal senoidal.As senidespodem ser representadas pela equao:onde :E a energia transmitida,PD a durao do pulso em segundos,fc a freqncia em Hertz.Duraodeumsinalsonarpodemalcanardeumafraodemilisegundosaalgunssegundos;easfreqncias,depoucascentenasdeHzadezenasdeKHzdependendodosistemaedo alcance de operao desejado.Escreva um programa MATLAB que permita ao usurio entrar com valores de E, PD, e fcparagerarumsinalsonar.ArmazeneosvaloresdosinalemumarquivoMATdenominadosonar.mat.Aamostragemdosinaldevecobriraduraodopulsoeconter10amostrasdecadaperodo de x(t). Alm disso, adicione um perodo de 200 pontos de silncio depois do pulso.1.ENUNCIADO DO PROBLEMAEscreva 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/SADAOs valores de E (energia transmitida em joules), PD (durao do pulso em segundos), e fc(freqnciaemHz)soosvaloresdeentrada.Asadaumarquivodenominadosonar.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' tes ins demais os paraPD t fcPDEt stan 00 ), 2 cos(2) (sonar.matCurso de MATLABCap. 3 Clculos com Matrizes 36Para um exemplo manual, usamos os valores a seguir:E = 500 joulesPD = 5 milisegundos (ms)fc = 3,5 KHzO 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,8425,3 251,4Adicionaramos200pontosdesilncioatravsdedadosadicionaiscomseustemposcorrespondentes e valores de sinais.4.SOLUO MATLAB3.5 Nmeros ComplexosAssoluesdemuitosproblemasdeengenhariacomosistemadecontroleparaumbraomecnicoouanlisedaestabilidadedeumcircuitoeltricoenvolvemabuscadasrazesdeumaequao 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+ a2xn-1+a3xn-2+ + na-1 x2+ anx+an+1=0Umpolinmiodegraunternrazes,sendoquealgumaspodemserrazesmltiplasourazescomplexas.NestaseodiscutiremosasoperaescomnmeroscomplexoseasfunesMATLAB que os usam.) t 3500 2 cos( 2 , 447 ) t ( s) t ) 3500 ( 2 cos(005 , 01000) t ( s) t f 2 cos(PDE 2) t ( sc Curso de MATLABCap. 3 Clculos com Matrizes 37Operaes Aritmticas com Nmeros ComplexosOs comandos MATLAB reconhecem os nmeros complexos usando i para representar -1.(OMATLABtambmreconheceousodejpararepresentar-1.EstanotaomaisusadanaEngenharia Eltrica). O comando a seguir define uma varivel complexa:x = 1-0.5*i;Quandoexecutamosoperaesentredoiscomplexos,oMATLABautomaticamenteexecutaosclculosnecessrios.Seumaoperaoforentreumnmerorealeumcomplexo,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) Calculaongulousandoovalordeatan2(imag(x),real(x)),eportantoonguloestentre - e .Estas funes tornam mais fcil converter o complexo da forma polar para retangular.Coordenadas polar e retangularesPodemos 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.Quandorepresentamosumnmerocomplexocomumaparterealeimaginria,como2+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.EixoimaginrioEixoreal12 3 4321(2,3)Figura 3.10 Plano ComplexoCurso de MATLABCap. 3 Clculos com Matrizes 38Converso-retangular a polar- polar a retangulara = r cos b = r sen Sexumnmerocomplexo,entoomduloeafasepodemsercalculadoscomosseguintes 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 sConverter os nmeros complexos nos problemas abaixo. Verifique suas respostas usando oMATLAB.1.3 i22.i3.24.0,5 + iabtanb a r12 2 + Curso de MATLABCap. 3 Clculos com Matrizes 39Converterosvaloresabaixoparaformaretangular.Verifiquesuasrespostasusandoasfunes MATLAB.5.e i6.e i0,757.0,5 e i2,38.3,5ei3Curso de MATLABCap. 4 Controle de Fluxo 40 Captulo 4 - Controle de Fluxo4.1 Operadores Lgicos e RelacionaisOperadores RelacionaisOMATLABtemoperadoresrelacionaisquepodemserusadosparacompararduasmatrizes de mesma ordem ou para comparar uma matriz e um escalar, como os mostrados a seguir:OperadorDescrio< Menor que Maior que>= Maior ou igual a= = Igual a (no sentido de condio)~ = No igual aAfinalidadedosoperadoresfornecerrespostasaperguntasdotipofalso/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 < bSe a e b forem escalares, ento o valor da expresso ser1 (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 = [ 246]b = [ 351]Ento, o valor de a < b ser o vetor [110], enquanto o valor de a~ = b ser [111].Operadores LgicosPodemos combinar expresses usando os operadores lgicos do MATLAB.Os operadoresso representados pelos seguintes smbolos.Curso de MATLABCap. 4 Controle de Fluxo 41 Operadores Descrio& e| ou~ noQuandoduasexpressessounidaspore;oresultadoser1(verdadeiro)seambasexpresses forem verdadeiras, para expresses unidas por ou, o resultado ser 1 (verdadeiro) se umaou ambas expresses forem verdadeiras.Assim, para a seguinte expresso lgicaa< b & b < cOresultadoser1(verdadeiro)somentesea a5.~(a = = 3*b)6.k < = k + 67.a < 10&a > 58.abs (k)> 3 |k a, ento b ser igual a zero.Se a no for menor que 50, entopula-sediretamenteparaosegundoend.Seaenembforemescalares,entobmaiorqueasomente 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 ElseEstainstruopermitequeexecutemosumcomandoseaexpressolgicaverdadeiraeum diferente comando se a expresso falsa.A forma geral do comando ifcombinada instruoelse mostrada a seguir:ifexpressogrupo de comandos Aelsegrupo de comandos BendSeaexpressolgicaverdadeira,entoogrupodecomandosAexecutado.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 estivera 10 metrosdo edifcio, a velocidade calculada usando a seguinte equao:velocidade = 0,425+ 0,00175d2Se o txi estiver a uma distncia maior que 10 metros, use aequao a seguir:velocidade = 0,625+ 0,12d 0,00025d2Calculamos a velocidade correta com estes comandos:if d < = 10velocidade = 0.425+ 0.00175*d^2elsevelocidade = 0.625+ 0.12d 0.00025*d^2endQuandohmuitasalternativasaseremexecutadas,podesermaisdifcildeterminarquaisexpresses 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 MATLABCap. 4 Controle de Fluxo 44 ifexpresso 1grupo de comandos Aelseif expresso 2grupo de comandos Belseif expresso 3grupo de comandos CendSeaexpresso1forverdadeira,somenteogrupodecomandosAexecutado.Seaexpresso 1 for falsa e a expresso 2 for verdadeira, ento somente o segundo grupo de comandos executado.Seasexpresses1e2foremfalsaseaexpresso3forverdadeira,entosomenteogrupo de comandos C executado. Se mais de uma expresso lgica for verdadeira, a primeira queforverdadeiradeterminaqualgrupodecomandosserexecutado.Senenhumadasexpresseslgicas forem verdadeiras, ento nenhum dos comandos dentro da estrutura if executado.Else e elseifpodem ser combinadas dentro de uma estrutura if-else-end, como mostramosa seguir:ifexpresso 1grupo de comandos Aelseifexpresso 2grupo de comandos Belseif expresso 3grupo de comandos Celsegrupo de comandos DendSenenhumadasexpresseslgicasforemverdadeiras,entoogrupodecomandosDexecutado.E x e r c c i o sNosproblemas1a7,doscomandosMATLABnecessriosparaexecutarospassosindicados.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.Seovalordedenformenorque0,003;atribuazeroaresult;casocontrrio,atribuaaresultnum dividido por dez;Curso de MATLABCap. 4 Controle de Fluxo 45 5.Seologaritmonaturaldexformaiorouiguala10,atribuazeroatimeeincremente-oporcount;6.Sedistformaiorque50etimeformaiorque10,incrementetimepor2;casocontrrio,incremente timepor 5.7.Sedistformaiorouiguala100,incrementetimepor10.Sedistestiverentre50e100,incremente timepor 1.Caso contrrio incremente timepor 0,5.4.3Loop FORO MATLAB contm dois comandos para gerar loops, o comandofor eo comandowhile.Nesta seo, discutiremos o comando for, e a seo 4.4 discutiremos o comando while.O comando for tem a estrutura a seguir:forvarivel= expressoGrupo de comandos AendOscomandosentreasinstruesforeendsoexecutadosumavezparacadacolunadaexpresso 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:Suponhaquetemosumgrupodevaloresquerepresentamadistnciadeumtxidatorremais 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,00175d2Se o txi estiver a uma distncia maior que 10 metros, use aequao a seguir:velocidade = 0,625+ 0,12d 0,00025d2Comoaescolhadaequaodavelocidadedependedovalorded,devemosdeterminarseparadamented(1),d(2),eassimpordiante.Contudo,noqueremosomesmoparacalcularvelocidade(1),velocidade(2)eassimpordiante.Logo,usaremosumloop,comavarivelusadacomo subscrito.Na primeira soluo, supomos que existiam 25 elementos no vetor d..Curso de MATLABCap. 4 Controle de Fluxo 46 for d = 1:25if d < = 10velocidade = 0.425+ 0.00175*d^2elsevelocidade = 0.625+ 0.12*d 0.00025*d^2endNaprximasoluo,supomosqueotamanhodovetorddesconhecido.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) < = 10velocidade = 0.425+ 0.00175*d(k)^2elsevelocidade = 0.625+ 0.12*d 0.00025*d(k)^2 endendAs regras para um loop forso: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;Seaexpressoforumvetor-linha,entoacadaiteraoavarivelconteroprximovalordovetor;Seaexpressoforumamatriz,entoacadaiteraoavarivelconteraprximacolunadamatriz;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: limiteEnto o nmero de vezes que o loop executar pode ser calculado usando a equao:Seestevalorfornegativo,oloopnoserexecutado.Portanto,seumcomandoforcontiver a seguinte informao:for k = 5: 4: 83Ento, o nmero de vezes em que executa-se o loop ser:1incrementoincio ite limfloor + ,_

Curso de MATLABCap. 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 breakO comando breakpode 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 sDetermineonmerodevezesqueoloopfordefinidopeloscomandosaseguirsoexecutados.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 : -12Aplicao Soluo de Problemas:Fibras ticasSe 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.Esteinteressantefenmenoticopodeserusadoparatransmitirluzeimagensregulares,deumlugarparaoutro.Seguiadeluz,aluzseguiraformadahasteeemergirsomentenaextremidade, como mostramos na figura a seguir:20 1478floor 145 83floor + ,_

+ ,_

fibra ticaCurso de MATLABCap. 4 Controle de Fluxo 48 Afibraticaumafibradevidromuitofina.Seosextremosdasfibrassopolidoseoarranjoespacialomesmoemambosextremos(umfeixecoerente),afibrapodeserusadaparatransmitirumaimagem,eofeixechamadocondutordeimagem.Seasfibrasnotemomesmoarranjoparaambosextremos(feixeincoerente),aluztransmitidaemvezdaimagem,eporestarazochamadaguiadeluz.Porcausadaflexibilidadedasfibrasticas,asguiasdeluzecondutores de imagens so usados em instrumentos projetados para permitir a observao visual deobjetosoureasquedeoutromodoseriaminacessveis.Porexemplo,umendoscpiouminstrumentousadoporfsicosparaexaminarointeriordocorpodeumpacientecomsomenteumpequeno corte.Um endoscpio usa uma fibra tica para transmitir a luz necessria dentro do corpodeumpaciente.AsfibrasticaspodemserusadasparatransmitirfeixesdeluzLASER,oqualpode ser usado para desobstruir artrias, quebrar pedras nos rins, e limpar cataratas.Estefenmenodereflexototalinternaorigina-sedaleideSnelledependeunicamentedosndicesderefraoparaosmaterialconsideradosparaguiasdeluz.Umguiadeluzcompostodedoismateriaisoncleocentraleomaterialqueoenvolve,denominadodeblindagem.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 derefraodosmateriaiseongulodeincidnciadaluz.Sealuzincidentenainterfaceentredoismeios 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.Sen2maiorquen1,ahastenotransmitirluz;casocontrrio,ongulocrticopodeserdeterminado pela equaosenc= n2/ _n1EscrevaumprogramaMATLABquedeterminasealuzserounotransmitidapordoismateriaisqueformaumguia.SuponhaqueumarquivodedadosASCIIdenominadoindices.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 PROBLEMADetermineseosmateriaisespecificadosformaroounoumguiadeluz.Seelesnoformarem, calcule os ngulos para o qual a luz pode entra na haste e ser transmitida.Curso de MATLABCap. 4 Controle de Fluxo 49 2.DESCRIO ENTRADA \ SADAComo 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 MANUALO 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 0O guia de luz transmitir luz para todos os ngulos de incidncia maiores que 41,820 . 4. SOLUO DO MATLAB5.TESTANDO4.4Loops WHILEO 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 AendIndices.datMensagem e cCurso de MATLABCap. 4 Controle de Fluxo 50 Seaexpressoforverdadeira,entoogrupodecomandosAexecutado.Depoisdestescomandosseremexecutados,acondionovamentequestionada.Seforverdadeira,ogrupodecomandosnovamenteexecutado.Quandoacondioforfalsa,ocontrolepulaparaocomandoposterioraocomandoend.AsvariveismodificadasnogrupodecomandosAdevemincluirasvariveis na expresso, ou o valor da expressonunca ser mudado.Se a expresso for verdadeira(ou um valorno-nulo), o loop torna-se um loop infinito.( Lembre-se que voc pode usar^c parasair um loop infinito).Podemosmostrarqueousodeumloopwhileemumgrupodecomandosqueadicionamvalores 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;endAplicao Soluo de Problemas:Equilbrio de TemperaturaOprojetodenovosmateriaisparaoaperfeioamentodascaractersticasdofluxodearacercadosveculosenvolveaanlisedosmateriaisparanosomenteofluxodearmastambmparapropriedadescomoadistribuiodetemperatura.Nesteproblema,consideramosadistribuioemumafinaplacametlicatalqueestaalcanceumpontodeequilbriotrmico.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 temperaturaparaosoutrospontosdaplacaumafunodatemperaturadospontosenvolventes.Seconsiderarmosasplacasparaseremsemelhantesaumagrade,entoumamatrizpoderiaserusadapara 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 MATLABCap. 4 Controle de Fluxo 51 Grade de uma placa metlicaAstemperaturasisotrmicassobreosquatroladosseriamespecificadas;supomosqueosladossuperior,esquerdoedireitosomantidosmesmatemperaturaenquantoqueoladoinferiorda placa mantida a uma temperatura diferente.Os pontos restantes so inicialmente selecionadosparaumatemperaturaarbitrria,normalmentezero.Anovatemperaturadecadapontointernocalculado como a mdia das quatro temperaturas envolventes (veja a figura a seguir) e dada por:T0= T1+T2+ T3+ T44 Pontos que envolvemT0Depois de calcular a nova temperatura para um ponto interno, a diferena entre a antiga e atemperaturarecentecalculada.Seamudanadetemperaturaformaiorquealgumvalordetolerncia especificado, a placa j no est em equilbrio trmico, e o processo inteiro repetido.superiorinferioresquerdadireitaT0T1T0T4T3T2Curso de MATLABCap. 4 Controle de Fluxo 52 Usamosasduasmatrizesparaastemperaturas,umadasantigastemperaturaseumadasrecentes temperaturas.Precisamos de duas matrizes porque supomos que a temperatura muda paratodosospontosqueocorremsimultaneamente,semprequeascalculamos.Seusarmosumanicamatriz,estaramosatualizandoinformaosemqueantesestivssemoscomainformaoantiga.Porexemplo,suponhaqueestamoscalculandoanovatemperaturaparaaposio(3,3).Onovovalor a mdia das temperaturas nas posies (2, 3), (3, 2), (3, 4), e (4, 3).Quando calculamos anovatemperaturaparaaposio(3,4),novamentecalculamosumamdia,masqueremosusaroantigo valor na posio (3, 3), e no o seu valor atualizado.Portanto,usamosumamatrizdetemperaturasantigasparacalcularumamatrizdenovastemperaturaseparadeterminarsealgumatemperaturamudaacimadatolerncia.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 PROBLEMADetermine os valores de equilbrio para uma placa de metal com lados isotrmicos.2.DESCRIO ENTRADA / SADAComomostraafiguraabaixo,aentradaotamanhodagradedaplaca,astemperaturasisotrmicas e o valor de tolerncia.A sada o grupo de temperaturas de equilbrio para a placa demetal.3.EXEMPLO MANUALTenhaacertezaquecompreendeoprocesso,examinamosumsimplescaso,estudandocadaiterao.Supondoqueamatrizcontmquatrolinhasequatrocolunas.Astemperaturasisotrmicasso100e50,ensiniciamostodosospontosrestantesdozero.Usamosumatolernciade40.Ogrupoinicialdetemperaturaseassucessivasiteraesaoequilbriotrmicoso mostradas a seguir:temperaturas isotrmicastamanho da gradetolernciaEquilbrio detemperaturaCurso de MATLABCap. 4 Controle de Fluxo 53 Temperaturas Iniciais100 100 100 100100 0 0 100100 0 0 10050 50 50 50Primeira Iterao100 100 100 100100 50 50 100100 37,5 37,5 10050 50 50 50Segunda Iterao100 100 100 100100 71,875 71,875 100100 59,375 59,375 10050 50 50 50Comonenhumadastemperaturasalteradasentreaprimeiraesegundainteraoultrapassam a tolerncia de 400, as temperaturas na segunda iterao esto tambm em equilbrio.4.SOLUO DO MATLAB5.TESTANDOCurso de MATLABCap. 5 - Medidas Estatsticas54Captulo 5 - Medidas EstatsticasAnalisardadoscoletadosdeensaiosdeengenhariaumaparteimportantedaavaliao dos mesmos.O alcance da anlise estende-se dos mais simples clculos dedados, como a mdia aritmtica, mais complexa anlise que calcula medidas como odesviopadroouvarinciadosdados.Medidascomoestassomedidasestatsticasporque suas propriedades no so exatas.Por exemplo, o seno de 600umamedidaexatapoisovalorsempreomesmotodavezqueocalculamos,masavelocidademximaqueatingimoscomonossocarroumamedidaestatsticaporquevariadependendodeparmetroscomoatemperatura,condiesdaestrada,eseestamosnas montanhas ou no deserto. No s podemos medir as propriedades e caractersticasdedadosestatsticoscomotambmusarocomputadorparagerarseqnciasdevalores(nmerosaleatrios)comcaractersticasespecficas.Nestecaptulo,aprenderemosausarasfunesparaanlisededadosdoMATLABeagerarseqncias de nmeros aleatrios com caractersticas especficas.5.1 Funes para Anlise de DadosParaseestudarodesempenhodeduascompanhiascorretorasdeaes,selecionou-se de cada uma delas amostras aleatrias das aes negociadas.Para cadaaoselecionada,computou-seaporcentagemdelucroapresentadaduranteumperodo de tempo. Os dados esto a seguir:Corretora A 456054625570384864555655545948655560Corretora B 575558505259595556615253575750555854OsgrficosparaosdadosdascorretorasAeBsomostradosabaixoparapodermos comparar os dois conjuntos de dados:Paradecidirqualcorretoraobtevemelhordesempenho,algunscritriosforam considerados como:Mdia mais alta de percentagem de lucro;Maior percentagem de lucro;Menor variao de Percentagem de lucro;Figura5.2-PercentagemdelucroapresentadapelacorretoraBdurante18dias.Figura5.1-PercentagemdelucroapresentadapelacorretoraAdurante18dias.Curso de MATLABCap. 5 - Medidas Estatsticas55visualmenteperceptvelqueaolongodosdezoitodiasacorretoraBapresentoumenorvariaodelucro.FacilmentetambmobservaramosqueaCorretoraAobteveomaiorpercentualdelucrodeaes.Contudo,nopossvelsabermos quantitativamente estas e outras informaes como a mdia de percentagemdolucrosdasaesparacadacorretoraapenascomaobservaodosgrficos.Paraissotemosquecalcularasgrandezasnecessriasparadeterminarqualcorretoraobtevemelhordesempenho.Seriaumpoucotrabalhososeofizssemosmanualmente.OMATLABpodeperfeitamenteauxiliar-nosnestescasosporquecontmumasriedefunesquecontribuemparaumaanlisemaisprecisadosdados.Algumas destas funespodem ser aplicadas ao exemplo das corretoras comoas 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 Ae B, temos: mean (corretoraA) mean (corretoraB)ans = ans =55.7222 55.4444Qual corretora alcanou a mais alta percentagem de lucros?A funo max determina a maior percentagem de lucro em cada corretora.Afuno max determina o maior valor de um conjunto de dados.max(corretoraA) max(corretoraB)ans = ans =70 61E a menor percentagem?Asmenoresmargensdelucroobtidasporcadacorretorasodadaspelocomando min .min(corretoraA) min(corretoraB)ans = ans =38 50Curso de MATLABCap. 5 - Medidas Estatsticas56Qual corretora apresenta menor variao de percentual de lucro de aes?Asduascorretorastiverammdiasbastantesprximas.Contudo,amdia,porserumamedidarepresentativadeposiocentral,mascaratodaainformaosobre a variabilidade dos dados das corretoras A e B. necessrio uma medida queresumaavariabilidadededoisgruposdevalores,permitindocompara-los,conformealgum critrio estabelecido. O critrio mais comum aquele que mede a concentraodedadosemtornodesuamdiae,asmedidasmaisusadasso:odesviomdioeavarincia.Desvio Mdio, VarinciaeDesvio PadroSabendo que a mdia dos valores da corretora A 55,72 , os desviosxixso: 10,72; - 4,28; 1.72; - 6,28; 0,72; -14,28 , Para qualquer conjunto dedados, asoma dos desvios igual a zero. mais conveniente usarmos ouo total dos desviosem valor absoluto ou o total dos quadrados dos desvios.Assim, teramos:O desvio mdioeavarincia so definidos, usando os termos acima:Ento,desviomdioeavarinciadosdadosdacorretoraAsorespectivamente5,5802e58,9183.ParaacorretoraB,seriam2,5556e9,9084.AcorretoraAtemmaiorvariabilidadeemporcentagemdelucrodeaes,segundoodesvio mdio. Isto significa que o percentual de lucro de aes da corretora B maishomogneo que o da corretora A.Para evitar erros de interpretaoa varincia uma medida que expressaum desvio quadrtico mdiousamos o desvio padro (), que definido como araizquadradadavarincia()2.OMATLABtemumafunoespecficaparaoclculo de desvio padro denominada std .Portanto, para o exemplo das corretoras: std(corretoraA) std(corretoraB)ans =7.6758 ans =3.14784436 , 100 28 , 4 72 , 0 ... 28 , 14 72 , 0 28 , 6 72 , 1 28 , 4 72 , 10 x x180 ii + + + + + + + + ( ) 5294 , 1060 44 , 1 56 , 2 ... 56 , 3 44 , 3 44 , 5 56 , 2 44 , 0 56 , 1 x x180 i2i + + + + + + + + ( )nx xVarincia2n1 ii nx xo DesvioMdin1 ii Curso de MATLABCap. 5 - Medidas Estatsticas57Para o MATLAB, a varincia de um conjunto de dados definida por:onde a mdia do conjunto de valores. O denominadorN1deveserusadotodavez que estivermos trabalhando com uma amostra.Quando no houver a preocupaoem saber se trabalhamos com populao ou amostra, podemos usar o denominadorn.Para grandes amostraspouca diferena far se usarmos um ou outro.Os comandos mean, std, max e min determinam, respectivamente, a mdia, odesviopadro,omximovaloreovalormnimodeumvetor.Noexemploacima,usamososdadosdacorretoraAearmazenamosemumvetordenominadocorretoraA e fizemos o mesmo para a corretora B.Mas estas funes tambm sovlidasparamatrizes.Elasretornamumvetor-linhacontendo,respectivamente,amdia,odesviopadro,omximovalor,omnimovalordecadacoluna.Umexemplo de aplicao de medidas estatsticas para matrizes dado a seguir:AJRIndstriadeAlimentcios,desejandomelhoraronveldeseusfuncionriosemcargosdechefia,montouumcursoexperimentaleindicou15funcionrios para sua primeira turma.Os dados referentes seo a que pertencem enotas 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;CompararosfuncionriosdasseesdeVendaseTcnicasedeterminaramaiornota destes funcionrios em cada disciplina;CompararadistribuiodosdadosnasdisciplinasdeDireito,MetodologiaeEconomia.( )1 NxN1 k2k2 Curso de MATLABCap. 5 - Medidas Estatsticas58Func. Seo ADM DIR RED ECO ING MET1 Pessoal 8.0 9.0 8.6 8.5 9.0 9.02 Pessoal 8.0 9.0 7.0 8.0 9.0 6.53 Pessoal 8.0 9.0 8.0 8.5 8.0 9.04 Pessoal 6.0 9.0 8.6 8.5 8.0 6.05 Pessoal 8.0 9.0 8.0 9.0 9.0 6.56 Tcnica 10.0 9.0 8.0 8.5 8.0 6.07 Tcnica 8.0 9.0 9.0 8.0 9.0 10.08 Tcnica 10.0 9.0 8.0 7.5 8.0 9.09 Tcnica 8.0 9.0 10.0 8.0 10.0 10.010 Tcnica 8.0 9.0 7.0 8.5 7.0 6.511 Vendas 8.0 9.0 9.0 7.5 7.0 9.012 Vendas 8.0 9.0 7.0 7.0 8.0 10.013 Vendas 8.0 9.0 8.0 7.5 9.0 6.014 Vendas 6.0 9.0 9.0 7.5 4.0 6.015 Vendas 6.0 9.0 4.0 8.5 7.0 6.0Sabemos que a funo mean calcula a mdia dos elementos de um vetor.Emumamatriz,afunocalculaumvetorlinhaquecontmamdiadecadacoluna.Paraoexemplodocursodeaperfeioamento,podemosconsideraralistadefuncionriosesuasrespectivasnotasemcadadisciplina,umamatriz15x6,ondeascolunasrepresentamasdisciplinasdocurso,facilitandooclculodamdiadaturmaem cada matria.Ento, definindo a matriz noMATLAB.TURMA = [ 8.09.0 8.68.59.09.08.09.0 7.08.09.06.58.09.0 8.08.58.09.06.09.0 8.68.58.06.08.09.0 8.09.09.06.510.09.0 8.0 8.58.06.08.09.0 9.08.09.010.010.09.0 8.07.58.09.08.09.0 10.08.010.010.08.09.0 7.08.57.06.58.09.0 9.07.57.09.08.09.0 7.0 7.08.010.08.09.0 8.0 7.59.06.06.09.0 9.07.54.06.06.09.0 4.0 8.57.06.0];Edenominandoovetorquerepresentaamdiadaturmaemcadadisciplinade MEDIA_TURMA, temos: MEDIA_TURMA = mean (TURMA)ADM administraoDIR direitoRED redaoECO economiaING inglsMET - metodologiaCurso de MATLABCap. 5 - Medidas Estatsticas59 MEDIA_TURMA =7.86679.00007.94678.06678.00007.7000AsadadoMATLABmostraqueasmdiasdaturmanasdisciplinasdeAdministrao,Direito,Redao,Economia,InglseMetodologiaso,respectivamente, 7.8667, 9.0000, 7.9467, 8.0667, 8.0000e 7.7000.Se quisssemos apenas a mdia da turma em Redao, usaramos o operadordois pontos (:), conforme mostraremos a seguir: MEDIA_RED = mean (TURMA (: , 3)) MEDIA_RED =7.9467ou ainda, a mdia dos funcionrios da seo de Pessoal em Direito: MEDIA_PDIR = mean (TURMA(1:5, 2)) MEDIA_PDIR =9.0000Menores notas e os funcionrios que as obtiveram A funo minretorna o menor valorde um vetor.Em uma matriz, a funoretorna um vetor-linha cujos elementos so os menores valores de cada coluna.Almdisso,apresentaaforma[y,i]=min(x)ondearmazenaosmenoreselementosdecadacolunaemumvetory,eosndices(respectivaslinhas)novetori.seexistiremvaloresidnticos,ondicedoprimeiroretornado.Logo,seusarmosestaformadafuno min na matriz TURMA, podemos determinar a menor nota em cada disciplinao 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 6i =14 1151214 4Assim,ofuncionrio14obteveamenornota(6,0)emAdministrao,omesmo aconteceem Ingls.Observe que atribuiu-se ao funcionrio 1 o menor grauem Direito, disciplina em que todos tiveram o mesmo grau. Conforme vimos, quandohvaloresmnimosidnticos,ondicedoprimeirovalorretornado.Porisso,aatribuio do funcionrio 1.Esta forma vlida tambm para a funo max.Curso de MATLABCap. 5 - Medidas Estatsticas60Notas de Administrao em Forma AscendenteOMATLABcontmumafunoquedistribui,emordemascendente,oselementosdeumvetorouoselementosdecadacolunadeumamatriz.Suaformageral :sort(x)ComoqueremosapenasasnotasdaturmaemAdministraoemordemascendente,usamosafunosort.Porm,devemosantesselecionaradisciplinadeAdministrao, utilizando o operador dois pontos ( : ), ADM = TURMA( : , 1); GRAU_ASC = sort (ADM)Poderamoscalculardiretamentesemprecisar definir o vetor-coluna ADM: GRAU_ASC = sort (TURMA( : , 1))Sequisssemossomenteastrsmenoresnotas,faramos: GRAU_ASC = sort (TURMA( : , 1)); ASC_3 = sort (GRAU_ASC ( 1: 3 , 1))A funo sorttambm apresenta a forma [y, I ] = sort(x) onde os valores dispostos em forma crescente soarmazenados na matrizye seus ndices , na matriz i.Se xcontiver valores complexos, os elementos serodistribudosdeformaascendentedeacordocomseusvalores absolutos.Tente fazer: [y,i] = sort (TURMA)Comparao entre as distribuies de dados de Direito, Metodologia eEconomia.Paraauxiliarnacomparaoentredadosdevariveis,usaremosumtipoespecialdegrficoqueparticularmenterelevantesmedidasestatsticasdiscutidasnesta seo.Um histograma um grfico que mostra a distribuio de um grupo devalores.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 81010Curso de MATLABCap. 5 - Medidas Estatsticas61barrasigualmenteespaadasentreosvaloresmximosemnimodeumgrupodevalores. A forma geral para plotar um histograma mostrada a seguir: hist (x)ondexumvetorcontendoosdadosaseremusadosnohistograma.Sequisermosplotarasegundacolunaemumamatriz,podemosusarooperadordoispontoscomomostrado a seguir: hist (x ( :, 2 ))Ocomandohistnospermiteselecionaronmerodebarras.Portanto,sequisermos aumentar a resoluo dos histograma tal que usemos 25 barras, em vez de10, faremos: hist ( x , 25)Ainformaousadaparaplotartambmpodeserarmazenadaemvetores.Considere os seguintes comandos: [ n , x ] = hist (GRAU_MIN); [ n , x ] = hist (GRAU_MIN, 6);Nenhum destes comandos plota um histograma.O primeiro comando calculavalores para dois vetores, n e x.O vetor n contm os dados para 10 barras, e o vetor xcontmopontoquecorrespondeaomeiodecadaalcancedabarra.Osegundocomandosimilar,maisarmazena6dadosemn,e6pontosdemeiobarraemx.Estesvetoressousadosgeralmenteemgrficosdotipobar,queserdiscutidonocaptulo 7.Agora,podemosusarohistogramaparacomparareindicarasdiferenasexistentes entre as distribuies de dados de Direito, Metodologia e Economia.Figura 5.3 - Histograma de Direito Figura 5.4 - Histograma de EconomiaCurso de MATLABCap. 5 - Medidas Estatsticas62Observeasdiferenasentreoshistogramas.EnquantoohistogramadeDireitoindicaquetodososalunosobtiveramgrau9,0;emEconomia,indicaqueapenas1funcionrioconseguiuomesmograueemMetodologia,quatrofuncionrios. Tambm em Metodologia, h maior percentagem de notas menores que7,0.PodemosafirmarqueasnotassomaishomogneasemDireito.Oqueconfirmadose usarmos funes j vistas como mean e std.Paraterminarapartedefunesdeanlisededados,maisumexemplo.Sejaoquadroabaixoquemostraataxadejurosduranteosltimos18meses.Suponhaquealgumlheperguntassecomoacompanharoacmulodetaxadejurosms a ms.Ms/ano Jan/97 Fev/97 Mar/97 Abr/97 Mai/97 Jun/97 Jul/97Juros a.m (%) 1,25 1,16 1,13 1,12 1,4 1,16 1,16Ms/ano Ago/97 Set/97 Out/97 Nov/97 Dez/97 Jan/98 Fev/98Juros a.m (%) 1,13 1,15 1,10 2,04 1,82 1,65 0,95Provavelmente,vocdiriaquebastariasomartaxadejurosinicial,osjuros do ms seguinte e assim por diante. um exemplo tpico de soma cumulativa.NoMATLAB,afunoquecorrespondesomacumulativadoselementosde 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 71.25002.41003.54004.66006.06007.22008.3800Figura 5.5 - Histograma de MetodologiaCurso de MATLABCap. 5 - Medidas Estatsticas63Columns 8 through 149.5100 10.6600 11.7600 13.8000 15.6200 17.2700 18.2200Logo, o primeiro elemento do vetor ACUM_JUROS 1,25 ; o segundo ser1,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 afuno sum : TOTAL_JUROS = sum(JUROS)TOTAL_JUROS = 18.2200Asfunesprod(x)ecumprod(x)soanlogassfunessum(x)ecumsum(x), onde prod(x) calcula o produto dos elementos de um vetor ou produto decadacoluna,emumamatriz;cumprod(x)calculaoprodutoacumulativodoselementos de um vetor x.Htambmafunomedianquecalculaamedianadoselementosdeumvetor x.Mediana a realizao que ocupa a posio central da srie de observaesquandoestasestoordenadassegundosuasgrandezas(crescenteoudecrescentemente).Assim,seascincoobservaesdeumavarivel,comoerrosdeimpresso na primeira pgina forem 20, 16, 14, 8 e 19; a mediana o valor 16. Se onmerodeobservaespar,usa-secomomedianaamdiaaritmticadasduasobservaes centrais.Logo, se as observaes de uma varivel, forem 20, 14, 16e 8,amediana Mediana = (14 + 16) / 2 = 15.E x e r c c i o sDetermine as matrizes representadas pelas funes a seguir.Depois, use o MATLABpara verificar suas respostas.Suponha que w, x, e y sejam as matrizes:w = [ 03-27]x = [ 3-157]111]1

2 1 64 8 27 3 1yCurso de MatlabCap. 5 Medidas Estatsticas 641.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)^212. std (y(:, 2))13. std (y)15. std (y).^2Aplicao Soluo de Problemas:Anlise do Sinal de VozSuponha que queiramos projetar um sistema que reconhea as palavras que representam osdez algarismos: zero, um, dois, ..., nove.Uma das primeiras coisas que devemos fazer analisarosdadosparaasdezseqnciascorrespondentes(ousinais)paraverificarsehalgumasmedidasestatsticasnasquaispossamosdistingui-los.AsfunesparaanlisededadosdoMATLABnospermitefacilmentecalcularestasmedidas.Podemosentoimprimirumatabelademedidas e procurar por aquelas que nos permita distinguir valores.Atualmente,podemosusarsinaisdevozparacalcularumnmerodemedidasestatsticasque poderiam ser usadas como parte de um algoritmo de reconhecimento de dgitos.Os dados paracadadgitocontmmilvalores.EscrevaumprogramaMATLABparalerumarquivodedadosASCIIdenominadozero.datecalculeasseguintesinformao:mdia,desviopadro,varincia,amdia do mdulo.Jdiscutimosmdia,desviopadroevarincia.Amdiaquadrticaovalormdioquadrtico ser discutido com mais detalhes na prxima seo. A mdia dos mdulo a mdia dosvalores absolutos do conjunto de dados.1.ENUNCIADO DO PROBLEMACalcular as medidas estatsticas a seguir para um sinal de voz.Curso de MatlabCap. 5 Medidas Estatsticas 652.DESCRIO ENTRADA/SADAO diagrama abaixo mostra o arquivo que contm os dados como a entrada e as vrias medidasestatsticas como a sada.3.EXEMPLO MANUALPara um exemplo manual, suponha que um sinal contenha a seguinte seqncia de valores:[ 2.58.2-1.1-0.21.5]Usando uma calculador