ESCOLA NÁUTICA INFANTE D. HENRIQUE DEPARTAMENTO DE MÁQUINAS MARÍTIMAS MANUAL DE INTRODUÇÃO AO MATLAB Por: Prof. Luis Fernandes Mendonça E.N.I.D.H. - 2003/2004 CAPÍTULO 1 INTRODUÇÃO AO MATLAB O MATLAB é um software interactivo constituído por um conjunto de ferramentas matemáticas que proporcionam uma grande ajuda nos cálculos de engenharia. Neste software as matrizes assumem um papel fundamental. O nome MATLAB advém da combinação de 2 palavras, MATrix LABoratory. Inicialmente escrito em FORTRAN, o MATLAB é hoje inteiramente escrito em linguagem C, sendo um sistema integrado, incluindo gráficos e macros programáveis. No Ensino Superior, o MATLAB tornou-se uma ferramenta muito importante, utilizada em diferentes matérias como a álgebra linear e a análise de sistemas de controlo, entre outras. Na indústria, o MATLAB é utilizado na procura e na resolução de problemas práticos de engenharia. PLANO DO CAPÍTULO 1.1 – Command Window 1.2 – Operações Aritméticas 1.3 – Variáveis em MATLAB 1.4 – Comentários e Pontuação 1.5 – Números Complexos 1.6 – Funções Matemáticas 1.7 – Ficheiros Script ou m-files 1.8 – Como Encontrar Ajuda no MATLAB ENIDH/DMM – Luis M. Mendonça Pág.1 1.1 COMMAND WINDOW Quando iniciamos o MATLAB aparece-nos uma janela, designada por Command window, através da qual iremos fazer a interacção com o programa. Nela aparece, além de uma barra de menus, o símbolo » (prompt), que nos indica que o MATLAB está pronto para executar as operações e instruções por nós introduzidas. Commands to get started: intro, demo, help help Commands for more information: help, whatsnew, info, subscribe » No quadro seguinte apresentam-se alguns comandos muito utilizados: Command Window Limpa o conteúdo do Command window. clc diary diary nome_ficheiro home more Grava o conteúdo do Command window para um ficheiro de texto chamado diary. Grava tudo o que se passa durante uma sessão (excepto gráficos) para o ficheiro escolhido. Se depois escrevermos diary off o MATLAB interrompe a gravação do que se passa. Se introduzirmos o comando diary on o MATLAB retoma a gravação. Move o cursor para o canto superior esquerdo. Obriga os dados a saírem para o ecrã página a página. (more on e more off) O comando more(n) obriga à saída de n linhas por ecrã. 1.2 OPERAÇÕES ARITMÉTICAS O MATLAB possui todas as operações básicas da matemática podendo ser utilizado com uma simples máquina de calcular. Aqui estão alguns exemplos: » 56/8 ans = 7 » 8\56 ans = 7 ENIDH/DMM – Luis M. Mendonça Pág.2 » 4+2 ans = 6 » 4*250 + 2*100 ans = 1200 OPERAÇÕES ARITMÉTICAS OPERAÇÃO Adição, a + b Subtracção, a – b Multiplicação, a . b Divisão, a ÷ b Potenciação, ab SÍMBOLO EXEMPLO + * / ou \ ^ 5+3 23 - 12 3.14 * 0.85 56/8 = 8\56 5^2 As regras de precedência utilizadas na avaliação das expressões são as seguintes: as expressões são avaliadas da esquerda para a direita, em que a operação de maior precedência é a potenciação, depois vêm as operações de multiplicação e divisão, e por fim as operações de adição e subtracção. Utilizam-se parênteses para alterar as precedências e o modo como as operações são avaliadas. FORMATOS NUMÉRICOS No MATLAB podemos apresentar os números segundo diversos formatos. Aqui estão alguns exemplos: » preco=1/3 preco = 0.3333 » format long preco % Utiliza 16 dígitos » preco preco = 0.33333333333333 » format short e % Utiliza 5 dígitos mais expoente » preco preco = 3.3333e-001 » format long e % Utiliza 16 dígitos mais expoente » preco ENIDH/DMM – Luis M. Mendonça Pág.3 preco = 3.333333333333333e-001 » format hex % O número é escrito em formato hexadecimal » preco preco = 3fd5555555555555 » format bank % Escreve o número utilizando duas casas decimais » preco preco = 0.33 » format rat % Utilizando fracções » preco preco = 1/3 » format short % Utiliza 5 dígitos » preco preco = 0.3333 Nota: A representação interna dos números não é alterada quando se utilizam estes comandos 1.3 VARIÁVEIS EM MATLAB Considerando o exemplo da página anterior vamos mostrar que podemos efectuar os mesmos cálculos utilizando variáveis: » cadernos=4 cadernos = 4 » canetas=2 canetas = 2 » itens=cadernos+canetas itens = 6 » custo_total=cadernos*250+canetas*100 custo_total = 1200 Quando se atribuem nomes às variáveis há que ter em conta as seguintes observações: ENIDH/DMM – Luis M. Mendonça Pág.4 Ter cuidado com a utilização de letras maiúsculas e minúsculas. Caderno, caderno e cadErno - são 3 variáveis diferentes para o MATLAB. As variáveis devem ter no máximo 19 caracteres pois o MATLAB ignora os restantes caracteres. » equetalestenomeparaumavariavel=2 equetalestenomepara = 2 As variáveis não podem ter símbolos de pontuação. É permitido utilizar o símbolo “ _ ”. » e_que_tal_este_nome_para_uma_variavel =0 e_que_tal_este_nome = 0 Variáveis Especiais Ans pi Eps Flops Inf NaN Variável onde são guardados, por defeito, os resultados das operações - ans é o diminutivo de ANSwer. Valor de π = 3.1416. Unidade de arredondamento da máquina, i.e., o menor valor que adicionado a 1 representa um número maior que 1 Contador do número de operações efectuadas. Estamos a falar de operações em vírgula flutuante. Representa +∞, isto é, 1/0 Not-a-Number, símbolo que representa 0/0 ou outra expressão não determinada. MATLAB WORKSPACE O MATLAB recorda-se de todos os comandos que vão sendo introduzidos ao longo de uma sessão, permitindo que os utilizadores repitam ou aproveitem comandos inseridos noutras alturas. De igual modo, todas as variáveis que vão sendo definidas ao longo da sessão ficam disponíveis para serem utilizadas em ocasiões futuras. O “local” onde esta informação está guardada designa-se por MATLAB workspace. De seguida enumeram-se algumas das coisas que podemos fazer, relacionadas com o workspace: ENIDH/DMM – Luis M. Mendonça Pág.5 Podemos utilizar as teclas ↑ e ↓ para rever os comandos anteriormente inseridos. Para alterar a estrutura de um desses comando socorrermo-nos das teclas → e ←. Se quisermos obter uma lista com as variáveis presentes no workspace basta utilizar o comando who. Também podemos utilizar o comando whos que juntamente com os nomes das variáveis refere, também, qual a memória que cada uma ocupa assim como a sua dimensão - o que é muito útil se as variáveis forem matrizes. » who Your variables are: ans canetas cadernos custo_total itens Também é possível gravar o conteúdo do Workspace para um ficheiro. Para isso podemos utilizar o menu [File] Æ [Save Workspace As…] ou utilizar os comandos save e load. As variáveis presentes no Workspace podem ser gravadas em formato binário ou formato ascii. Se utilizarmos apenas o comando save sem especificar qual o nome do ficheiro em que pretendemos guardar a informação, ela será gravado no ficheiro matlab.mat. (Para obter uma explicação mais completa deste comando escreva help save) » save Saving to: matlab.mat » save meu % grava as variáveis em format binário para o ficheiro meu.mat » save dados canetas cadernos custo_total -ascii % as variáveis foram gravadas em formato ascii % podemos escolher quais as variáveis que queremos gravar Podemos remover alguma ou todas as variáveis presentes no Workspace utilizando o comando clear. » who Your variables are: ans equetalestenomepara cadernos itens canetas preco custo_total e_que_tal_este_nome » clear cadernos » who Your variables are: ENIDH/DMM – Luis M. Mendonça Pág.6 ans equetalestenomepara canetas itens custo_total preco e_que_tal_este_nome » % se escrevermos o comando clear sem nenhum argumento o MATLAB apaga todas as variaveis 1.4 COMENTÁRIOS E PONTUAÇÃO Para introduzir comentários deve utilizar-se o símbolo %. » canetas=10 % Número de canetas% canetas = 10 » % tudo o que está para a frente deste símbolo % é ignorado Quando inserimos um comando no MATLAB ele produz um eco, i.e., surge uma confirmação da operação efectuada no ecrã. Se não quisermos que tal aconteça devemos utilizar o símbolo ;. » canetas=10 % este comando produz eco canetas = 10 » canetas=10; % este comando não produz eco » Podemos utilizar a virgula (,) para introduzir vários comando na mesma linha » canetas=3, vidros=20, lapis=4 canetas = 3 vidros = 20 lapis = 4 Se quisermos concluir um comando na linha seguinte devemos utilizar o símbolo …. » itens=canetas+ ... lapis+vidros itens = 27 ENIDH/DMM – Luis M. Mendonça Pág.7 % os ... dizem ao Matlab que o resto do comando segue na próxima linha. » % nao pode ser utilizado na continuação de comentários nem de nomes de variáveis. 1.5 NÚMEROS COMPLEXOS No MATLAB a definição de números complexos faz-se de uma maneira natural, apesar disso, eles podem ser definidos utilizando vários métodos: Definição de um complexo utilizando o i para identificar a parte imaginária. » c1=1-2i c1 = 1.0000 - 2.0000i Definição de um complexo utilizando o j para identificar a parte imaginária. » c1=1-2j % o j também serve c1 = 1.0000 - 2.0000i Definição de um complexo utilizando o sqrt(-1) para identificar a parte imaginária. » c2=3*(2-sqrt(-1)*3) c2 = 6.0000 - 9.0000I Definição de um complexo em função de outro complexo. » c4=6+sin(.5)*i % neste caso foi necessário por sin(.5)*I c4 = 6.0000 + 0.4794i Sempre que aparecem raízes de números negativos então o MATLAB considera esse valor como um complexo. » c3=sqrt(-2) c3 = 0 + 1.4142i As operações aritméticas entre complexos são escritas de forma semelhante ao que se fazia para os reais. ENIDH/DMM – Luis M. Mendonça Pág.8 » c6=c1+c2 c6 = 7.0000 -11.0000i » c7=(c1+c2)/c3 c7 = -7.7782 -4.9497i Para o MATLAB o resultado de uma operação entre números complexos é um complexo. » c8=i^2 % o quadrado de i é o real -1 c8 = -1.0000 + 0.0000i Apesar de i2 = -1 ser um real o MATLAB mantêm a parte imaginária do número igual a zero. Para eliminar a parte imaginária de um número complexo utiliza-se a função real. » c9=real(c6) c9 = 7 Apresentam-se, agora, as funções utilizadas para estabelecer a correspondência entre a representação algébrica (z = a+ bi) e a representação polar ( z = r (cos θ + sen θ ), em que r = |z|): A função abs determina o valor absoluto de um complexo. » c1 c1 = 1.0000 - 2.0000i » mag_c1=abs(c1) mag_c1 = 2.2361 A função angle determina o argumento de um complexo em radianos. » angle_c1=angle(c1) angle_c1 = -1.1071 » deg_c1=angle_c1*180/pi deg_c1 = -63.4349 Com estas duas funções conseguimos obter as coordenadas polares que desejamos. ENIDH/DMM – Luis M. Mendonça Pág.9 abs(z) - obtemos o valor do módulo r = |z| = angle(z) a2 + b2 - obtemos o valor do argumento de z, θ = tan −1 ( ba ) a = r cos θ , b = r sin θ Outras duas funções utilizadas com números complexos são: A função conj dá-nos o complexo conjugado de um número complexo. » conj(c1) ans = 1.0000 + 2.0000i A função imag dá-nos a parte imaginária de um complexo. » imag_c1=imag(c1) imag_c1 = -2 A função real dá-nos a parte real de um imaginário. » real_c1=real(c1) real_c1 = 1 1.6 FUNÇÕES MATEMÁTICAS De seguida apresenta-se um quadro com as principais funções matemáticas que o MATLAB possui. Alguns exemplos de aplicação dessas funções matemáticas são apresentados em seguida: » x=sqrt(2)/2 x = 0.7071 » y=asin(x) y = 0.7854 » y_deg=y*180/pi y_deg = 45.0000 ENIDH/DMM – Luis M. Mendonça Pág.10 TRIGONOMETRICAS Seno Seno hiperbólico Arco cujo o seno é Arco cujo seno hiperbólico é Co-seno Co-seno hiperbólico Arco cujo o co-seno é Arco cujo co-seno hiperbólico é Tangente Tangente hiperbólica Arco cuja tangente é Arco cuja tangente hiperbólica é Secante Secante hiperbólica Arco cujo co-seno hiperbólico é Arco cujo co-seno hiperbólico é Co-secante Co-secante hiperbólica Arco cuja co-secante é Arco cuja co-secante hiperbólica é Co-tangente Co-tangente hiperbólica Arco cuja co-tangente é Arco cuja co-tangente hiperbólica é sin sinh asin asinh cos cosh acos acosh tan tanh atan atanh sec sech asec asech csc csch acsc acsch cot coth acot acoth exp log log10 sqrt EXPONENTIAL Exponencial Logaritmo natural Logaritmo de base 10 Raiz quadrada abs angle conj imag real COMPLEXAS Valor Absoluto Argumento (em radianos) Complexo conjugado Parte imaginaria Parte real round rem sign NUMÉRICAS Arredonda para o inteiro mais próximo Resto da divisão Sinal de um número » z=rem(23,4) z = 3 » z1=23/4 z1 = 5.7500 » a=exp(c1) a = -1.1312 - 2.4717i » sign(1.2) ans = 1 % a resposta é 1 pois o número é positivo » sign(-23.4) ans = -1 % a resposta é –1 quando o número é negativo ENIDH/DMM – Luis M. Mendonça Pág.11 » sign(0) ans = 0 1.7 FICHEIROS SCRIPT OU M-FILES Quando o número de comandos a serem introduzidos é muito grande e também quando queremos reavaliar as expressões entretanto introduzidas torna-se mais prático utilizar ficheiros de texto com comandos de MATLAB denominados Script files (ou m-files). Também podemos utilizar m-files para definir novas funções (function m-file) mas a abordagem deste tópico será feita no Capítulo 4. Por agora, apenas, vamos considerar os mfiles como uma lista de comandos ou instruções de MATLAB. Para criarmos um novo script (ou m-file) basta procurar o comando [New] localizado no menu [File] e seguidamente escolher [M-file]. Como um m-file é um ficheiro de texto então, pode ser feito em qualquer editor de texto – o ficheiro tem de ter a extensão .m. Para executar um m-file basta introduzir o seu nome, por exemplo: » exemplo O MATLAB procura o ficheiro exemplo.m e executa todos os comandos como se eles fossem inseridos directamente no command window. Ao utilizar m-files tenha em atenção que: Os comandos presentes no m-file têm acesso às variáveis anteriormente definidas no workspace. As variáveis definidas no m-file passam a fazer parte do workspace e podem ser utilizadas após a execução do m-file. O comando echo on diz ao MATLAB para fazer o eco dos comandos que vai lendo e executando. O comando echo off faz o contrário. Exemplo de um m-file: %Exemplo1 – m-files cadernos=4; canetas=input(' Introduza o nº de canetas > '); itens=cadernos+canetas custo_total=cadernos*250+canetas*100 A execução deste m-file produz os seguintes resultados: » exemplo1 ENIDH/DMM – Luis M. Mendonça Pág.12 Introduza o nº de canetas > 4 itens = 8 custo_total = 1400 Reparar na utilização da função input. Esta função pode receber como valor de entrada qualquer expressão matemática que seja equivalente ao valor que se pretende introduzir. » exemplo1 Introduza o nº de canetas > round(sqrt(13))+3 itens = 11 custo_total = 1700 Aqui está um quadro com algumas das funções úteis na construção de m-files. FUNÇÕES PARA OS M-FILES disp(variável) Mostra o valor de uma variável sem apresentar o seu nome. echo Controla o eco dos comandos, presentes no m-file, que vão sendo executados. (echo on e echo off) input Espera pela introdução de um valor pelo utilizador. keyboard Interrompe a execução de um m-file dando liberdade ao utilizador para executar outros comandos. Retoma-se a execução do m-file fazendo return.. pause(n) Há uma pausa de n segundos na execução. waitforbuttonpress Existe uma pausa na execução do m-file até que se carregue numa tecla do rato ou do teclado. Exemplo de um m-file em que se utiliza o comando keyboard : %Exemplo2 - .m files cadernos=4; ENIDH/DMM – Luis M. Mendonça Pág.13 canetas=2; keyboard itens=cadernos+canetas custo_total=cadernos*250+canetas*100 A execução deste m-file produz o seguinte resultado: » exemplo2 K» K» who Your variables are: a equetalestenomepara angle_c1 imag_c1 ans itens c1 lapis c2 mag_c1 c3 preco c4 real_c1 c6 vidros c7 x c8 y cadernos y_deg canetas z custo_total z1 deg_c1 e_que_tal_este_nome K» return itens = 6 custo_total = 1200 1.8 COMO ENCONTRAR AJUDA NO MATLAB Existem dois comandos que permitem encontrar ajuda no MATLAB: O comando help e o comando lookfor. Um método equivalente ao comando help baseia-se na utilização do menu [Help]. » help HELP topics: toolbox\local - Local function library. matlab\datafun - Data analysis and Fourier transform functions. matlab\elfun - Elementary math functions. ENIDH/DMM – Luis M. Mendonça Pág.14 matlab\elmat - Elementary matrices and matrix manipulation. matlab\funfun - Function functions - nonlinear numerical methods. matlab\general - General purpose commands. matlab\color - Color control and lighting model functions. matlab\graphics - General purpose graphics functions. matlab\iofun - Low-level file I/O functions. matlab\lang - Language constructs and debugging. matlab\matfun - Matrix functions - numerical linear algebra. matlab\ops - Operators and special characters. matlab\plotxy - Two dimensional graphics. matlab\plotxyz - Three dimensional graphics. matlab\polyfun - Polynomial and interpolation functions. matlab\sounds - Sound processing functions. matlab\sparfun - Sparse matrix functions. matlab\specfun - Specialized math functions. matlab\specmat - Specialized matrices. matlab\strfun - Character string functions. matlab\dde - DDE Toolbox. matlab\demos - Demonstrations and samples. simulink\simulink - SIMULINK model analysis and construction functions. simulink\blocks - SIMULINK block library. simulink\simdemos - SIMULINK demonstrations and samples. toolbox\signal - Signal Processing Toolbox. toolbox\ident - System Identification Toolbox. nnet\examples - Neural Network Toolbox examples. nnet\nnet - Neural Network Toolbox. toolbox\robust - Robust Control Toolbox. mutools\commands - Mu-Analysis and Synthesis Toolbox. mutools\subs - Mu-tools examples and internal routines. toolbox\optim - Optimization Toolbox. toolbox\splines - Spline Toolbox. toolbox\control - Control System Toolbox. toolbox\mmle3 - MMLE3 Identification Toolbox. toolbox\wintools - GUI tools for MATLAB for MS Windows. For more help on directory/topic, type "help topic". Se já soubermos aquilo que procuramos podemos utilizar o comando help de uma forma mais precisa. » help general ENIDH/DMM – Luis M. Mendonça Pág.15 General purpose commands. Managing commands and functions. help - On-line documentation. what - Directory listing of M-, MAT- and MEX-files. type - List M-file. lookfor - Keyword search through the HELP entries. which - Locate functions and files. demo - Run demos. path - Control MATLAB's search path. Managing variables and the workspace. who - List current variables. whos - List current variables, long form. load - Retrieve variables from disk. save - Save workspace variables to disk. clear - Clear variables and functions from memory. pack - Consolidate workspace memory. size - Size of matrix. length - Length of vector. disp - Display matrix or text. Working with files and the operating system. cd - Change current working directory. dir - Directory listing. delete - Delete file. getenv - Get environment value. ! - Execute operating system command. unix - Execute operating system command & return result. diary - Save text of MATLAB session. Controlling the command window. cedit - Set command line edit/recall facility parameters. clc - Clear command window. home - Send cursor home. format - Set output format. echo - Echo commands inside script files. more - Control paged output in command window. Starting and quitting from MATLAB. quit - Terminate MATLAB. startup - M-file executed when MATLAB is invoked. ENIDH/DMM – Luis M. Mendonça Pág.16 matlabrc - Master startup M-file. General information. info - Information about MATLAB and The MathWorks, Inc. subscribe - Become subscribing user of MATLAB. hostid - MATLAB server host identification number. whatsnew - Information about new features not yet documented. ver - MATLAB, SIMULINK, and TOOLBOX version information. » help sqrt SQRT Square root. SQRT(X) is the square root of X. Complex results are produced if X is not positive. See also SQRTM. No caso de o MATLAB não encontrar informação sobre o tópico pretendido obtemos uma mensagem deste tipo. » help controladores controladores not found. Se pretendermos procurar comandos que estejam relacionados com determinada palavra ou conceito podemos utiliza a instrução lookfor » lookfor complex CPLXPAIR Sort numbers into complex conjugate pairs. CONJ Complex conjugate. IMAG Complex imaginary part. REAL Complex real part. CDF2RDF Complex diagonal form to real block diagonal form. RSF2CSF Real block diagonal form to complex diagonal form. CPLXDEMO Maps of functions of a complex variable. CPLXGRID Polar coordinate complex grid. CPLXMAP Plot a function of a complex variable. GRAFCPLX Demonstrates complex function plots in MATLAB. LOGM2 LOGM2(X) CCEPS Complex cepstrum. PHASE is the matrix natural logarithm of X . Complex Computes the phase of a complex vector mixedalg.m: % [MULT,XQO] = MIXEDALG(T,XQI,K) finds the existence of a complex,diagonal DSORT Sort complex discrete eigenvalues in descending order. ENIDH/DMM – Luis M. Mendonça Pág.17 ESORT Sort complex continuous eigenvalues in descending order LOGM2 LOGM2(X) is the matrix natural logarithm of ENIDH/DMM – Luis M. Mendonça X . Complex Pág.18 CAPÍTULO 2 MATRIZES E VECTORES PLANO DO CAPÍTULO 2.1 – Definição de Vectores 2.2 – Endereçamento de Elementos de Um Vector 2.3 – Definição de Matrizes 2.4 – Operações com Matrizes 2.5 – Operações com Arrays 2.6 – Manipulação dos Elementos de uma Matriz 2.7 – Matrizes Especiais e Funções com Matrizes ENIDH/DMM – Luis M. Mendonça Pág.19 2.1 DEFINIÇÃO DE VECTORES Quando se pretende introduzir um vector deve fazer-se: » a=[1 2 3 4 5 6] a = 1 2 3 4 5 6 Também é possível definir um novo vector à custa de outro já existente: » x= [0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi] x = Columns 1 through 7 0 0.3142 0.6283 0.9425 2.8274 3.1416 0.5878 0.8090 0.3090 0.0000 1.2566 1.5708 1.8850 0.9511 1.0000 0.9511 Columns 8 through 11 2.1991 2.5133 » y=sin(x) y = Columns 1 through 7 0 0.3090 Columns 8 through 11 0.8090 0.5878 Exemplo de um vector de números complexos. (Consegue notar a modificação que se produz com a introdução dos parênteses) » u=[1 -2i 3 4 5+6i] u = Columns 1 through 4 1.0000 0 - 2.0000i 3.0000 4.0000 4.0000 5.0000 + Column 5 5.0000 + 6.0000i » v=[(1 -2i) 3 4 5+6i] v = 1.0000 - 2.0000i 3.0000 6.0000i ENIDH/DMM – Luis M. Mendonça Pág.20 Na definição de vectores um símbolo muito utilizado é o “ : ”. Aqui estão alguns exemplos da sua utilização. » x=1:5 % começa em 1 e termina em 5 com incrementos de 1 x = 1 2 3 4 5 Se pretendermos utilizar um incremento diferente fazemos: » y=0:pi/4:pi % começa em 0 e termina em pi com incrementos de pi/4 y = 0 0.7854 1.5708 2.3562 3.1416 Também é possível utilizar incrementos negativos: » z=6:-1:1 z = 6 5 4 3 2 1 Outra maneira de definir o vector y=sin(x) é a seguinte. » y1=(0:0.1:1)*pi y1 = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 1.2566 1.5708 1.8850 6.3096 10.0000 15.8489 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 Existem duas funções que podemos utilizar para criar vectores. » l=linspace(0,pi,11) l = Columns 1 through 7 0 0.3142 0.6283 0.9425 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416 » g=logspace(0,2,11) g = Columns 1 through 7 1.0000 1.5849 2.5119 3.9811 Columns 8 through 11 ENIDH/DMM – Luis M. Mendonça Pág.21 25.1189 39.8107 63.0957 100.0000 Métodos para Definir Vectores x=ni:i:nf Cria o vector x com os elementos especificados. (Os elementos podem ser expressões ou números complexos). Cria um vector começando no número ni e terminando em nf, com incrementos de 1. Cria um vector começando no número ni e terminando em nf, com incrementos de i. x=linspace(primeiro,ultimo,n) Cria um vector começando no primeiro e terminando no último, com n elementos. x=logspace(primeiro,ultimo,n) Cria um vector começando em 10primeiro e terminando em 10último, com n elementos. x=[2 2*pi sqrt(2) 2-3j] x=ni:nf 2.2 ENDEREÇAMENTO DE ELEMENTOS DE UM VECTOR Existem vários métodos de endereçar (ou de aceder) aos elementos de um vector. Indicando a posição do elemento no vector » y(3) % queremos o terceiro elemento ans = 1.5708 » y(5) % queremos o quinto elemento ans = 3.1416 Utilizando os “ : ” » z(1:4) % queremos do primeiro até ao quarto elemento ans = 6 5 4 3 Usando outro vector para extrair os elementos pela ordem pretendida » y([4 2 3 1]) ans = 2.3562 2.3 DEFINIÇÃO 0.7854 DE 1.5708 0 MATRIZES ENIDH/DMM – Luis M. Mendonça Pág.22 A introdução de uma matriz deve ser feita da seguinte forma: A=[1 2 3; 4 5 6; 7 8 9], em que o símbolo “ ; ” divide as linhas da matriz. » A=[1 2 3;4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 » B=[1;2;3;4;5] B = 1 2 3 4 5 Podemos criar uma nova matriz adicionando novos elementos a uma matriz já existente. »C=[A;10 11 12] C = 1 2 3 4 5 6 7 8 9 10 11 12 2.4 OPERAÇÕES COM MATRIZES TRANSPOSTA Para obter a transposta da matriz A e explicitá-la pela matriz T devemos fazer: » T=A' T = 1 4 7 2 5 8 3 6 9 Para vectores tudo se passa de modo semelhante, » x=[-1 0 2]' x = -1 0 2 ENIDH/DMM – Luis M. Mendonça Pág.23 ADIÇÃO E SUBTRACÇÃO Considerando os vectores A e B vamos determinar A+B. » A=[1 2 3;4 5 6; 7 8 9] A = 7 8 9 » B=[1 4 7; 2 5 8; 3 6 0] B = 1 4 7 2 5 8 3 6 0 » A+B ans = 2 6 10 6 10 14 10 14 9 MULTIPLICAÇÃO A multiplicação de matrizes é efectuada utilizando o símbolo “ * ” e tal como acontece nas operações de soma e subtracção há que ter em consideração as dimensões das matrizes » X=[-1 0 2] X = -1 0 2 » Y=[-2 -1 1]' Y = -2 -1 1 » X*Y ans = 4 » Y*X ans = 2 1 -1 0 0 0 -4 -2 2 Quando se multiplica uma constante por um vector o resultado é o seguinte: » pi*X ans = -3.1416 0 6.2832 » pi*Y ans = -6.2832 -3.1416 3.1416 ENIDH/DMM – Luis M. Mendonça Pág.24 DIVISÃO Existem dois tipos de divisão: a divisão à esquerda (A\b) e a divisão à direita (A/b). Podemos ver qual a diferença entre estes dois tipos de divisão através de um exemplo. Considere o seguinte sistema de equações: 1 4 7 2 5 8 A 3 x 1 6 . x 2 0 x 3 . x 366 = 804 351 = b A=[1 2 3; 4 5 6; 7 8 0] A = 1 2 3 4 5 6 7 8 0 » b=[366;804;351] b = 366 804 351 Divisão à esquerda ( x = A\b é solução para A * x = b) » x=A\b x = 25.0000 22.0000 99.0000 » A*x ans = 366 804 351 Divisão à direita ( y = A/b é solução para x * A = b) » y=A/b ??? Error using ==> / Matrix dimensions must agree. » x*A ??? Error using ==> * Inner matrix dimensions must agree. Devido as dimensões das matrizes não é possível realizar a divisão à direita teria que se modificar as dimensões de b, fazendo a sua transformada por exemplo. A relação entre estas duas divisões é dada por: A\b = (b’/A’)’ » A\b ans = ENIDH/DMM – Luis M. Mendonça Pág.25 25.0000 22.0000 99.0000 » (b'/A')' ans = 25.0000 22.0000 99.0000 Também conseguimos resolver um sistema de equações lineares utilizando a função inv para calcular a inversa de uma matriz - x = A-1 * b – antes, porém, devemos verificar se o sistema tem uma solução única calculando o seu determinante. » det(A) ans = 27 » x=inv(A)*b x = 25.0000 22.0000 99.0000 2.5 OPERAÇÕES COM ARRAYS Quando se utiliza o termo “operações com arrays” pretende-se referir que as operações aritméticas são feitas de elemento para elemento. ADIÇÃO E SUBTRACÇÃO Para a adição e subtracção as operações com array e as operações com matrizes são iguais. (Utiliza-se os mesmos símbolos) MULTIPLICAÇÃO E DIVISÃO A multiplicação de array é efectuada elemento a elemento, sendo representada por “ .* ”. Se A e B têm dimensões iguais então C = A .* B resulta numa matriz em que cada um dos seus elementos é igual ao produto dos elementos individuais de A e B, nas mesmas posições » A=[2 4 6] A = 2 4 6 » B=[2 2 2] B = 2 2 2 » C=A.*B C = 4 8 12 No que diz respeito à divisão; se tivermos D = A ./ B ou E = A .\ B cada elemento de D e E é obtidos através da divisão (à esquerda ou à direita) envolvendo os elementos respectivos de A e B. » D=A./B ENIDH/DMM – Luis M. Mendonça Pág.26 D = 1 2 » E=A.\B E = 1.0000 3 0.5000 0.3333 POTENCIAÇÃO A potenciação elemento a elemento é efectuada utilizando os símbolos “ .^ ”. » P=A.^B P = 4 16 36 Contudo, o expoente poderá ser um escalar. » Pe=A.^3 Pe = 8 64 216 Mas também podemos ter a base como um escalar » Ps=3.^A Ps = 9 81 729 Operações com Arrays Sabendo que : A = [a1 a2 … an]; B = [b1 b2 … bn]; c – Escalar Adição com um escalar A+c = [a1+c a2+c … an+c] Multiplicação com um escalar A*c = [a1*c a2*c … an*c] Adição A+B = [a1+b1 a2+b2 … an+bn] Multiplicação A.*B = [a1.*b1 a2.*b2 … an.*bn] Divisão à esquerda A.\B = [a1.\b1 a2.\b2 … an.\bn] Divisão à direita A./B = [a1./b1 a2./b2 … an./bn] Potenciação A.^c = [a1.^c a2.^c … an.^c] c.^A = [c.^a1 c.^a2.^c … c.^an] A.^B = [a1.^b1 a2.^b2 … an.^bn] ENIDH/DMM – Luis M. Mendonça Pág.27 2.6 MANIPULAÇÃO DOS ELEMENTOS DE UMA MATRIZ Podemos alterar o valor de apenas um elemento da matriz fazendo: » A=[1 2 3; 4 5 6; 7 8 0] A = 1 4 7 2 5 8 » A(3,3)=9 A = 1 4 7 3 6 0 % modifica o elemento na 3ªlinha, 3ªcoluna para 9 2 5 8 3 6 9 Também podemos fazer: » A(2,2)=A(1,2)+A(3,2) A = 1 4 7 2 10 8 3 6 9 Outra manipulação dos elementos de uma matriz que o MATLAB permite é a seguinte: » b=A(:) % transformamos uma matriz num vector coluna b = 1 4 7 2 10 8 3 6 9 Se quisermos criar um matriz B invertendo a ordem das linhas de A, fazemos: » B=A(3:-1:1,1:3) % escolhemos as linhas, começando na 3 e acabando na 1 B = % escolhemos as coluna, começando na 1 e acabando na 3 7 8 0 4 5 6 1 2 3 De modo semelhante podemos obter uma submatriz de A. » C=A(1:2,2:3) C = 2 3 6 ENIDH/DMM – Luis M. Mendonça Pág.28 Manipulação dos Elementos de uma Matriz A(l,c) Resulta uma submatriz de A com as linhas definas pelo vector l e com as colunas definas (ou indexadas) pelo vector c. A(l,:) Obtemos uma submatriz de A com as linhas definas pelo vector l e com todas as colunas de A. A(:,c) Resulta uma submatriz de A com todas as linhas de A e com as colunas definas (ou indexadas) pelo vector c. A(:,c) Obtemos um vector coluna com todos os elementos de A tendo estes sido retirados coluna a coluna da matriz A. 2.7 MATRIZES ESPECIAIS E FUNÇÕES COM MATRIZES De seguida apresentam-se algumas das matrizes especiais que é possível criar utilizando o MATLAB. Matrizes Especiais » zeros(3) ans = 0 0 0 0 0 0 0 0 0 » ones(3) ans = 1 1 1 1 1 1 1 1 1 » ones(3)*pi ans = 3.1416 3.1416 3.1416 » eye(3) ans = 1 0 0 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 % matriz identidade 3x3 0 1 0 0 0 1 ENIDH/DMM – Luis M. Mendonça Pág.29 Algumas Matrizes Especiais [] Matriz vazia eye Matriz identidade ones Matriz com todos elementos iguais a 1. zeros Matriz com todos elementos iguais a 0. pascal Matriz (triangular) de Pascal. rand Matriz preenchida aleatoriamente com elementos entre 0 e 1 (distribuição uniforme). randn Matriz preenchida aleatoriamente e segundo a distribuição normal com µ = 0 e σ = 1. FUNÇÕES COM MATRIZES O MATLAB possui inúmeras funções com matrizes no quadro seguinte vamos apresentar apenas algumas. Funções com Matrizes det(A) Determinante expm(A) Matriz exponencial logm(A) Matriz logaritmo inv(A) Inversa da matriz A d=eig(A) [V,D]=eig(A) Valores próprio e vectores próprios. poly(A) Polinómio característico ENIDH/DMM – Luis M. Mendonça Pág.30 CAPÍTULO 3 OPERADORES RELACIONAIS, OPERADORES LÓGICOS E ESTRUTURAS DE CONTROLO PLANO DO CAPÍTULO 3.1 – Operadores Relacionais 3.2 – Operadores Lógicos 3.3 – Estrutura de Escolha (IF –ELSE-END) 3.4 – Estruturas de Repetição (FOR, WHILE) ENIDH/DMM – Luis M. Mendonça Pág.31 3.1 OPERADORES RELACIONAIS No MATLAB utilizamos os operadores lógicos e relacionais para, juntamente com as estruturas de repetição, controlar a ordem de execução de um conjunto de instruções ou comandos do MATLAB. Os únicos outputs ou resultados possíveis para uma expressão contendo operadores relacionais e lógicos são 1 (Verdadeiro) ou 0 (Falso) » 3<4 ans = 1 % Verdadeiro » 3>4 ans = 0 % Falso Operadores Relacionais < Menor que <= Menor ou igual a > Maior que >= Maior ou igual a == Igual a ~= Diferente de Estes operadores podem ser utilizados na comparação entre duas matrizes, com as mesmas dimensões, ou para comparar um escalar com os elementos que compõem a matriz » A=1:9, B=9-A A = 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0 B = ENIDH/DMM – Luis M. Mendonça Pág.32 » VF=A>4 % Os zeros correspondem a elementos que são menores que 4 VF = 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 » A==B ans = 0 3.2 OPERADORES LÓGICOS Os principais operadores lógicos são: Operadores Lógicos & And (e) | Or (ou) ~ Not (negação) xor(x,y) Exclusive Or (Ou exclusivo) Apresentam-se de seguida alguns exemplos da sua aplicação: » VF=A>4 VF = 0 0 » VF1=~(A>4) 0 0 1 1 1 1 1 0 0 % negamos a expressão anterior VF1 = 1 1 1 1 0 0 0 A expressão seguinte devolve uns nas posições em que os elementos da matriz A verificam a condição, i.e., são maiores do que 2 e menores do que 6. » VF2=(A>2)&(A<6) VF2 = 0 0 1 ENIDH/DMM – Luis M. Mendonça 1 1 0 0 0 0 Pág.33 3.3 ESTRUTURA DE ESCOLHA (IF-THEN-END) Utilizamos esta estrutura quando queremos condicionar a execução de uma dada instrução ou comando ao valor (verdadeiro ou falso) de uma da expressão relacional ou lógica. O quadro seguinte apresenta a sintaxe da estrutura IF-THEN-END. IF expressão IF Comandos ELSEIF expressão Comandos END Comandos ELSE Comandos END Os Comandos são executados apenas se a expressão for verdadeira. Podemos, também, consultar o MATLAB para obter mais informações sobre a estrutura IF. » help if IF Conditionally execute statements. The general form of an IF statement is: IF variable, statements, END The statements are executed if the real part of the variable has all non-zero elements. The variable is usually the result of expr rop expr where rop is ==, <, >, <=, >=, or ~=. For example: IF I == J A(I,J) = 2; ELSEIF ABS(I-J) == 1 A(I,J) = -1; ELSE A(I,J) = 0; END Apresentam-se, de seguida, dois exemplos que utilizam a estrutura IF. » laranjas=10; » Custo=laranjas*20 Custo = 200 » if laranjas>5 ENIDH/DMM – Luis M. Mendonça Pág.34 Custo=(1-0.2)*Custo % faz-se um desconto de 20% end » Custo = 160 Exemplo: Escreva um m-file que: Pede ao utilizador para introduzir um número. Verifica se esse número é maior ou menor do que 5. Se for maior imprime no ecrã a palavra GRANDE, caso contrário imprime a palavra PEGUENO. n = input('INDIQUE UM NÚMERO MAIOR QUE 0 ->'); if (n > 5) disp('GRANDE') elseif (n < 5) disp('PEQUENO') else disp('BATOTA NÃO VALE! O NÚMERO DEVE SER MAIOR OU MENOR QUE 5') end 3.4 ESTRUTURAS DE REPETIÇÃO FOR O ciclo FOR permite a repetição de um ou mais comandos. É necessário estabelecer na sintaxe do comando qual o número de repetições a efectuar. FOR FOR Variável=expressão Variável=expressão Comando1 Comando2 Comando END … ComandoN END Se, no lugar da expressão tivermos um array ou uma matriz então os comandos são executados um números de vezes iguais ao número de colunas do array ou matriz. Podemos consultar o MATLAB para obter mais informações sobre a estrutura FOR. ENIDH/DMM – Luis M. Mendonça Pág.35 » help for FOR Repeat statements a specific number of times. The general form of a FOR statement is: FOR variable = expr, statement, ..., statement END The columns of the expression are stored one at a time in the variable and then the following statements, up to the END, are executed. The expression is often of the form X:Y, in which case its columns are simply scalars. Some examples (assume N has already been assigned a value). FOR I = 1:N, FOR J = 1:N, A(I,J) = 1/(I+J-1); END END FOR S = 1.0: -0.1: 0.0, END steps S with increments of -0.1 FOR E = EYE(N), ... END sets E to the unit N-vectors. De seguida apresentamos alguns exemplos do uso desta estrutura. » for n=1:10 x(n)=sin(n*pi/10); n=10; end » x x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 » for n=1:5 for m=5:-1:1 A(n,m)=n^2+m^2; end disp(n) ENIDH/DMM – Luis M. Mendonça Pág.36 end 1 2 3 4 5 » A A = 2 5 10 17 26 5 8 13 20 29 10 13 18 25 34 17 20 25 32 41 26 29 34 41 50 Exemplo: Faça um m-file que preencha uma matriz. Peça ao utilizador o números de linhas e de colunas que ele deseja para a matriz. n=1; s=1; disp('PREENCHIMENTO DE UMA MATRIZ') n = input('INDIQUE O NÚMERO DE LINHAS ->'); s = input('INDIQUE O NÚMERO DE COLUNAS ->'); for i=1:n, for j=1:s, a(i,j)=1/(i+j-1); end end disp(' A MATRIZ É:') disp(a) WHILE O ciclo WHILE é executado enquanto a expressão for verdadeira. ENIDH/DMM – Luis M. Mendonça Pág.37 WHILE Variável WHILE Comando1 Variável Comando Comando2 END … ComandoN END Consultando o MATLAB obtemos a seguinte informação sobre a estrutura WHILE. » help while WHILE Repeat statements an indefinite number of times. The general form of a WHILE statement is: WHILE variable, statement, ..., statement, END The statements are executed while the variable has all non-zero elements. The variable is usually the result of expr rop expr where rop is ==, <, >, <=, >=, or ~=. For example (assuming A already defined): E = 0*A; F = E + EYE(E); N = 1; WHILE NORM(E+F-E,1) > 0, E = E + F; F = A*F/N; N = N + 1; END De seguida apresentamos um exemplo de utilização da estrutura WHILE. » n=10; % queremos preencher um vector com os números de 1 a 10 i=1; while i <= n a(i)= i; i=i+1; end disp(' O VECTOR É:') disp(a) O VECTOR É: 1 2 3 ENIDH/DMM – Luis M. Mendonça 4 5 6 7 8 9 10 Pág.38 CAPÍTULO 4 GRÁFICOS PLANO DO CAPÍTULO 4.1 – O comando plot 4.2 – Tipo de linhas e de cores 4.3 – Grid and Labels 4.4– Comando hold 4.5– Subplots 4.6– Utilizar várias janelas com figuras ENIDH/DMM – Luis M. Mendonça Pág.39 4.1 O COMANDO PLOT »x=linspace(0,2*pi,30); »y=sin(x); »plot(x,y) »z=cos(x); »plot(x,y,x,z) Podemos traçar várias funções no mesmo gráfico utilizando vários argumentos no comando plot. »plot(x,y,z) ??? Error using ==> plot Not enough input arguments. Se um dos argumentos for uma matriz e o outro for um vector o matlab representa cada coluna da matriz vs o vector. »W=[y;z]; »plot(x,W) »plot(W,x) »plot(y) »length(y) ans = 30 plot(1:length(y),y) »k=1:30 »kk=i+1.1*i*j »plot(kk) %plot(real(k),imag(k)) 5.2 - Tipo de linhas e cores Nós podemos definir qual as cores e o tipo de linha que pretendemos introduzindo mais argumentos no comando plot Cores: Se não for especificado o tipo de cores que que se pretende para o gráfico o matlab começa no amarelo e faz um ciclo pelas seis cores disponíveis. Linestyle: a linha utilizada, por defeito, é o traço continuo. ENIDH/DMM – Luis M. Mendonça Pág.40 plot(x,y,'g:',x,z,'r-') % utilizando linhas para unir os pontos plot(x,y,'g:',x,z,'r-',x,y,'wo',x,z,'c+') assinalando cada ponto % também com símbolos plot(x,y,'wo',x,z,'c+') % apenas com símbolos LETRA y m c r g b w k SÍMBOLO : -. -SÍMBOLO . o x + * CORES amarelo magenta cyan encarnado verde azul branco preto TIPO DE LINHA linha sólida ponteada traço - ponto traço interropido MARKERS ponto círculo x-mark sinal + Estrela 4.3 GRIDS AND LABELS plot(x,y,x,z) grid grid grid on grid off xlabel ('variavel independente x') ylabel ('variaveis dependentes y e z') ENIDH/DMM – Luis M. Mendonça Pág.41 title ('Seno e Coseno') Podemos introduzir texto em qualquer parte do gráfico utilizando comando text e as respectivas coordenadas. text(2.5,0.7,'sin(x)') gtext('cos (x)') %utilizando o rato para escolher a posição 4.4 COMANDO HOLD plot (x,y) plot(x,z) hold Current plot held plot(x,y) plot(x,y,'m') 4.5 – SUBPLOTS O comando subplot(m,n,p) subdivide a figure windows numa matriz m por n e a área activa corresponde à posição p. a=2*sin(x).*cos(x); b=sin(x)./(cos(x)+eps); subplot(2,2,1) plot(x,y),axis([0 2*pi -1 1]),title('sin(x)') subplot(2,2,2) plot(x,z),axis([0 2*pi -1 1]),title('cos(x)') subplot(2,2,3) plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)') subplot(2,2,4) plot(x,b),axis([0 2*pi -20 20]),title('sin(x)/cos(x)') grid subplot(2,2,2) grid ENIDH/DMM – Luis M. Mendonça Pág.42 4.6 - UTILIZAR VÁRIAS JANELAS COM FIGURAS h1=figure h1 = 1 plot(x,y),axis([0 2*pi -1 1]),title('sin(x)') h2=figure h2 = 2 plot(x,z),axis([0 2*pi -1 1]),title('cos(x)') h3=figure h3 = 3 plot(x,a),axis([0 2*pi -1 1]),title('2sin(x)cos(x)') h4=figure h4 = 4 plot(x,b),axis([0 2*pi -20 20]),title('sin(x)/cos(x)') figure(4) grid close close (2) help close clf GINPUT Graphical input from a mouse or cursor. [X,Y] = GINPUT(N) gets N points from the current axes and returns the X- and Y-coordinates in length N vectors X and Y. The cursor can be positioned using a mouse (or by using the Arrow Keys on some systems). Data points are entered by pressing a mouse button or any key on the keyboard. A carriage return terminates the input before N points are entered. [X,Y] = GINPUT gathers an unlimited number of points until the return key is pressed. [X,Y,BUTTON] = GINPUT(N) returns a third result, BUTTON, that contains a vector of integers specifying which mouse button was used (1,2,3 from left) or ASCII numbers if a key on the keyboard was used. ENIDH/DMM – Luis M. Mendonça Pág.43 CAPÍTULO 5 EXERCÍCIOS PLANO DO CAPÍTULO 5.1 – Exercícios (Parte A) 5.2 – Exercícios (Parte B) ENIDH/DMM – Luis M. Mendonça Pág.44 5.1 EXERCÍCIOS (PARTE A): Os exercícios a efectuar deverão ser apresentados sob a forma de listagem do Matlab. 1. Pretende-se utilizar para cálculos futuros uma matriz A, 2 A = 3 1 5 8 3 7 4 9 1.1. Faça ecoar esta matriz para o monitor. 1.2. Se pretendesse não visualizar a matriz como faria ? 2. Calcule a transposta da matriz A. 3. Pretende-se utilizar, igualmente, uma matriz B 3 B = 1 1 2 4 7 5 6 8 3.1. Calcule a matriz C em que C = A + B. 3.2. Calcule a matriz D em que D = A – B. 4. Introduza agora um vector E. E = [5 6 1] 4.1. Calcule a Matriz F correspondente ao produto de B por E. Efectue todos os cálculos necessários, especificando-os. 5. Efectue a divisão à direita de A por B. 6. Eleve ao cubo o vector E. 7. Apresente os seguintes vectores: 7.1. Iniciando em 2 e terminando em 8 com incrementos de 1 . 2 7.2. Iniciando em 14 e terminando em 1 com incrementos fornecidos por uma variável β. Considere que β = − 1 . 10 8. Qual o resultado que espera obter após a introdução da seguinte expressão: ENIDH/DMM – Luis M. Mendonça Pág.45 A(2,2) = A(2,3) + B(2,2) 9. Determine uma matriz com 2 colunas em que uma delas é obtida de: X = (0.0 : 0.2 : 3.0) E a outra de : Y = exp (-X) .* sin(X) ENIDH/DMM – Luis M. Mendonça Pág.46 5.2 EXERCÍCIOS (PARTE B): A resolução do exercícios deve ser apresentada em disquete ou em listagem do MATLAB. Os ficheiro devem ter os nomes especificados no enunciado de cada exercício. 10. Fazer um m-file em que é pedido ao utilizador para introduzir um número, o programa deve determinar a que intervalo pertence o número e produzir o seguinte output : Nº INTRODUZIDO OUTPUT 0 .. 5 Mau 5 .. 7 Bom 7 .. 10 Muito Bom (o m-file deve ter o nome: if1.m) 11. Preencha uma matriz 4x4 em que os elementos da diagonal principal deverão ser 1 e os restantes elementos são calculados através da expressão: 3x i a( i , j ) = j 2 Utilize ciclos FOR. (O m-file deve ter o nome: for1.m) 12. Faça o exercício 2 utilizando o ciclo WHILE. (O m-file deve ter o nome: wh1.m) ENIDH/DMM – Luis M. Mendonça Pág.47 6- ÍNDICE 1.1 COMMAND WINDOW................................................................................................................................ 2 1.2 OPERAÇÕES ARITMÉTICAS ................................................................................................................... 2 1.3 VARIÁVEIS EM MATLAB ........................................................................................................................ 4 1.4 COMENTÁRIOS E PONTUAÇÃO............................................................................................................ 7 1.5 NÚMEROS COMPLEXOS .......................................................................................................................... 8 1.6 FUNÇÕES MATEMÁTICAS..................................................................................................................... 10 1.7 FICHEIROS SCRIPT OU M-FILES......................................................................................................... 12 1.8 COMO ENCONTRAR AJUDA NO MATLAB..................................................................................... 14 2.1 DEFINIÇÃO DE VECTORES .................................................................................................................. 20 2.2 ENDEREÇAMENTO DE ELEMENTOS DE UM VECTOR ............................................................. 22 2.3 DEFINIÇÃO DE MATRIZES................................................................................................................... 22 2.4 OPERAÇÕES COM MATRIZES............................................................................................................. 23 2.5 OPERAÇÕES COM ARRAYS................................................................................................................... 26 2.6 MANIPULAÇÃO DOS ELEMENTOS DE UMA MATRIZ............................................................... 28 2.7 MATRIZES ESPECIAIS E FUNÇÕES COM MATRIZES................................................................ 29 MATRIZES ESPECIAIS ................................................................................................................................... 29 3.1 OPERADORES RELACIONAIS............................................................................................................... 32 3.2 OPERADORES LÓGICOS ........................................................................................................................ 33 3.3 ESTRUTURA DE ESCOLHA (IF-THEN-END).................................................................................... 34 3.4 ESTRUTURAS DE REPETIÇÃO ............................................................................................................ 35 4.1 O COMANDO PLOT ................................................................................................................................... 40 4.3 GRIDS AND LABELS ................................................................................................................................ 41 4.4 COMANDO HOLD ...................................................................................................................................... 42 4.5 – SUBPLOTS................................................................................................................................................. 42 4.6 - UTILIZAR VÁRIAS JANELAS COM FIGURAS ................................................................................. 43 5.1 EXERCÍCIOS:.............................................................................................................................................. 45 5.2 EXERCÍCIOS:.............................................................................................................................................. 47 6- ÍNDICE............................................................................................................................................................ 48 ENIDH/DMM – Luis M. Mendonça Pág.48