Curso MATLAB BÁSICO

Comandos

Escola de Química/UFRJ
Novembro/2001

ÍNDICE

1. INTRODUÇÃO 1.1. Objetivo do texto 1.2. Conceito do software MATLAB 1.3. Notação utilizada

2. AMBIENTE DE TRABALHO 2.1. Janela de comandos 2.2. Acesso aos recursos de ajuda

3. NÚMEROS, EXPRESSÕES ARITMÉTICAS E FUNÇÕES 3.1. Apresentação de números 3.2. Expressões aritméticas 3.3. Operações com números complexos 3.4. Funções

4. VARIÁVEIS 4.1. Atribuição de variáveis 4.2. Entrada e saída de valores para as variáveis 4.3. Gerenciamento das variáveis

5. PROCESSAMENTO MATRICIAL 5.1. Criação de matrizes e vetores 5.2. Operações matriciais 5.2.1. Operadores de álgebra linear

5.2.2. Operadores elemento a elemento 5.3. Matrizes especiais 5.4. Manipulação de matrizes 5.4.1. Identificação de dimensões 5.4.2. Geração de vetores e matrizes 5.4.3. Extração de elementos 5.4.4. Alteração de matrizes e vetores 5.4.5. Composição de matrizes e vetores 5.4.6. Pesquisando matrizes e vetores 5.5. Matrizes de dimensão superior 5.6. Matrizes de caracteres

6. MATRIZES CELULARES E ESTRUTURAS 6.1. Conceito 6.2. Matrizes celulares 6.2.1. Criação de matrizes celulares 6.2.2. Extração envolvendo matrizes celulares 6.2.3. Alteração de células 6.2.4. Composição de matrizes celulares 6.3. Estruturas 6.3.1. Criação de estruturas 6.3.2. Extração envolvendo estruturas 6.3.3. Alteração de campos

7. GRÁFICOS 7.1. Gráficos 2-D

1.1.3. Histogramas 7. Arquivos de comando 8.3.7.2. Gráficos de barra 7.1. Comandos de fluxo 8. INTRODUÇÃO À LINGUAGEM MATLAB 8. Gráficos 2-D especiais 7. Gráficos tipo torta 7.3. Gerenciando janelas gráficas 7.2. Manipulando gráficos 7.1.2. Traçando gráficos 7.3.3.2.3. Arquivos de função 8. Traçando gráficos de superfícies 7.3.3. Traçando gráficos de curvas 7.2.2.4.2. Comandos condicionais 8.3.1.2.1.2.1. Traçando gráficos de curvas de nível 8.2. Comandos de repetição 8. Gráficos 3-D 7.1.2.1.2. Gráficos com barras de erro 7. Variáveis locais e globais .

o usuário deverá será capaz de escrever seus próprios programas em linguagem MATLAB. serão fornecidas no texto instruções de como o leitor pode obter maiores informações sobre o tópico abordado através das páginas de ajuda do MATLAB. visando facilitar a compreensão das informações apresentadas. Sempre que possível. Após a leitura desta apostila. Este fenômeno alterou de forma marcante os rumos das ciências da engenharia. Este ambiente LABoratory). Conceito do software MATLAB Com o desenvolvimento da indústria de informática. ou até mesmo. uma vez que a interface gráfica com o usuário é bastante amigável. permitindo amplo acesso à precisão e à velocidade no processamento de informações. estabelecendose semelhanças e diferenças. O curso pode ser acompanhado utilizando-se diretamente o MATLAB. com o aluno reproduzindo os exemplos da apostila. criando os seus próprios exemplos. 1. Entre as ferramentas modernas para a resolução de problemas de engenharia destaca-se o software MATLAB (MAtrix empresa The Mathworks. desenvolvido pela permite o de programação desenvolvimento de rotinas computacionais semelhantes às linguagens de . INTRODUÇÃO 1. envolvendo noções básicas de processamento numérico. ao longo da apostila. máquinas cada vez mais poderosas passaram a estar disponíveis a um custo cada vez menor. Ao longo de cada seção da apostila. Objetivo do texto Este texto busca apresentar os fundamentos do desenvolvimento de rotinas de programação através do software MATLAB. etc.1. armazenamento de dados.1.2. Os conceitos envolvidos são acompanhados de grande número de exemplos. apresentação de gráficos. serão apresentadas comparações entre as estruturas computacionais em MATLAB e as estruturas computacionais das linguagens de programação convencionais.

etc. superfícies. graças a uma sintaxe mais enxuta. denominadas “toolboxes” (otimização. gráficos de barras. os comandos do MATLAB ou as informações relativas à entrada e saída de dados diretamente na tela serão representados através de uma fonte de texto diferenciada. presença de vários algoritmos de métodos numéricos já embutidos (solução de sistemas lineares.2: >> sin(pi/2) ans = 1 Exemplo 1. sendo as subopções precedidas por >. etc.).). alocação de memória. PASCAL.3: Pode-se fechar o MATLAB através da barra de menu: File > Exit MATLAB. o desenvolvimento de programas através do MATLAB é uma tarefa relativamente simples. por exemplo. a necessidade de declaração de variáveis. Exemplo 1. mas dispondo de vários diferenciais fundamentais: poderosos recursos de processamento matricial (álgebra matricial). evitando.3. . determinação de raízes de um polinômio.1: O comando clc apaga a tela da janela de comando Exemplo 1. curvas de nível. interpolação. histogramas.programação de alto nível usuais (FORTRAN. disponibilidade de grande número de alternativas para a apresentação gráfica de resultados (curvas no plano e no espaço.) e existência de várias bibliotecas computacionais especializadas que podem ser adquiridas em conjunto com o MATLAB. Apesar da sua grande versatilidade. matemática financeira. etc. Notação utilizada Durante o texto.). identificação de sistemas. etc. As alternativas de opções na barra de menu serão apresentadas em itálico. etc. 1.

.

Nesta tela estão situados os componentes convencionais de todo aplicativo “for Windows”: barra de título. “Command Window”. No entanto.1. surge na tela do computador o MATLAB “desktop”. e a janela “Current Directory”. que fornece um quadro geral de todas as variáveis presentes na memória do MATLAB. é a principal interface utilizada para o usuário acionar os comandos ou rotinas desenvolvidas em MATLAB. a janela “Workspace”. Na primeira vez que o MATLAB é acionado a área principal de trabalho é dominada por três janelas: “Command Window”. todos os componentes apresentados podem ser visualizados através da alternativa View na barra de menu. A janela “Launch Pad” possui atalhos de acesso para demos. A janela de comandos. caso seja necessário. Observação: Pode ser que um usuário anterior tenha alterado a disposição das janelas e alguns dos elementos citados aqui não estejam presentes na sua tela.2. outras ferramentas. diminuídas. A janela “Command History” contém um histórico dos comandos digitados até o presente momento. Janela de comandos . arquivos de ajuda. AMBIENTE DE TRABALHO Quando o MATLAB é acionado. formado por vários componentes gráficos que permitem ao usuário gerenciar rotinas computacionais. constituindo-se também o dispositivo padrão para a saída dos resultados gerados. que indica os arquivos existentes no diretório de trabalho. através da alternativa View na barra de menus. Estas janelas podem ser aumentadas. etc. reorganizadas ou fechadas de acordo com as necessidades do usuário. variáveis ou arquivos desenvolvidos no ambiente MATLAB. “Launch Pad” e “Command History”. o usuário também pode abrir. barra de menu e barra de ferramentas. 2. Adicionalmente. Nesta janela são apresentadas as mensagens de erros.

Após acionar o MATLAB. Exemplo 2. Exemplo 2.1: Para calcular a raiz quadrada de 2 devemos digitar na linha de comando: >> sqrt(2) apertar “Enter”. o usuário deve teclar “Enter” e o computador executará a tarefa. aparecerá na tela: ans = 1. sqrt(144) ans = 2 ans = 12 Caso seja necessário.Todas as operações desenvolvidas ao longo deste curso serão concentradas na janela de comandos. Após a digitação de cada instrução na linha de comando. caso o usuário deseje. A linha onde aparece o símbolo apresentado corresponde à linha de comandos. conforme ilustra o próximo exemplo: . desde que estejam separados por vírgula ou ponto-e-vírgula. desta forma.2: >> log10(100) . e. o símbolo >> e ao lado o cursor piscando. onde o usuário digita as instruções para o MATLAB executar as tarefas desejadas. utilizando-se a reticências.414 É possível também executar vários comandos em seqüência na mesma linha. então. estará presente na janela de comandos. pode fechar todas as demais janelas para facilitar a visualização dos resultados. uma instrução no Matlab pode ser separada em várias linhas.

. . e novamente acionados. movendo-se o cursor com as teclas [ ← ] e [ → ].. percorrer e pesquisar uma lista em ordem alfabética com a descrição de todos os comandos disponíveis (Index). Uma outra forma mais rápida e direta para se conseguir a descrição de um comando ou função através do MATLAB. pesquisar por palavraschaves (Search) e acionar a documentação disponível pela Mathworks na Internet e criar uma lista pessoal de tópicos de ajuda (Favorites).Exemplo 2. surge uma janela. com várias ferramentas de ajuda no lado esquerdo (Contents.3: >> log10(100) . 2. consiste em digitar na linha de comando: help comando onde comando se refere a dúvida a ser esclarecida. Quando esta alternativa é selecionada. Search e Favorites) e um quadro para apresentação de informações no lado direito. Index. na opção Help > MATLAB Help. de acordo com a necessidade. ou então. alterados. Acesso aos recursos de ajuda Assim como os demais aplicativos do ambiente Windows. podendo ser acionados novamente.. sqrt(144) ans = 2 ans = 12 Observação: Um recurso muito útil na utilização da linha de comandos consiste em apertar as teclas [ ↑ ] e [ ↓ ]. Estas teclas permitem que os últimos comandos digitados retornem à tela. é possível acionar os recursos de ajuda através da barra de menu.2. Através das ferramentas de ajuda é possível: navegar através dos vários tópicos de ajuda disponível (Contents).

RK45 Simulink 1.Exemplo 2. digitando-se: lookfor palavra onde palavra é o termo a ser pesquisado. ADAMS Simulink 1.x EULER integration algorithm. . See also COND.x GEAR integration algorithm.x RK45 integration algorithm. Exemplo 2. TRAPZ Trapezoidal numerical integration. LINSIM Simulink 1. RK23 Simulink 1.x ADAMS integration algorithm.4: >> help det DET Determinant. DET(X) is the determinant of the square matrix X. SFUNMEM A one integration-step memory block S-function.5: >> lookfor integration CUMTRAPZ Cumulative trapezoidal numerical integration. GEAR Simulink 1. LOTKADEMO Demonstrate numerical integration of differential equations.x rk23 integration algorithm. Use COND instead of DET to test for matrix singularity. Uma busca por palavras-chaves também pode ser feita diretamente da linha de comando. EULER Simulink 1.x LINSIM integration algorithm.

onde a variável pré-definida pi corresponde ao número π .1416e-004 O MATLAB possui também vários formatos alternativos diferentes para a apresentação de valores numéricos na linha de comando. Caso os algoritmos significativos de um número estejam fora desta faixa. NÚMEROS.3.41592653589793 3. Formatos numéricos Formato format format short format long format short e Expressão 10*pi 31.4159 31. igual a format short 4 casas após a vírgula 14 casas após a vírgula notação científica com 4 casas . Os exemplos abaixo ilustram a forma de apresentação numérica do MATLAB.1. este será apresentado em notação científica. Apresentação de números A opção “default” do MATLAB na apresentação de resultados numéricos representa os números reais com quatro casas decimais após a vírgula (caso o número seja inteiro. as casa decimais não são apresentadas).1416 >> pi/pi ans= 1 >> pi/10000 ans= 3.4159 31.1416e+001 Descrição “default”. EXPRESSÕES ARITMÉTICAS E FUNÇÕES 3. Na tabela seguinte estes resultados são apresentados.1: >> pi ans = 3. Exemplo 3. ilustrando-se como a expressão 10π aparece na tela de acordo com o formato escolhido.

141592653589793e+001 31.4159265358979 403f6a7a2955385e 31.1416 Alternado-se o formato. .2: No formato “default” >> pi ans = 3.42 + 3550/113 notação científica com 14 casas 5 casas decimais no total 15 casas decimais no total hexadecimal 2 casas decimais após a vírgula + . as operações numéricas são efetuadas com a maior precisão possível (aritmética de precisão dupla). então: >> format long >> pi ans = 3.2. de forma semelhante a uma calculadora comercial: Operadores matemáticos . Expressões aritméticas Através da linha de comando do MATLAB.146 31. 3. como ilustra o próximo exemplo. Uma outra alternativa é digitar o comando format na própria linha de comando. deve-se acionar as seguintes opções na barra de menu: > File > Preferences.14159265358979 Observação: Independente do formato utilizado para apresentação dos resultados.format long e format short g format long g format hex format bank Format + format rat 3. Exemplo 3.ou 0 aproximação racional Para alterar o formato utilizado. é possível realizar as operações aritméticas elementares.

8 Observação: O separador decimal no MATLAB é necessariamente o ponto. como em alguns aplicativos neste ambiente (por exemplo. Excel).Operação Soma Subtração Multiplicação Divisão Potenciação Símbolo + * / ^ Exemplo 3. deve-se digitar na linha de comando: >> 203+416+256 Gerando-se como resultado: ans = 875 Exemplo 3. pode ser calculada por: >> 2^10/5 Resultando em: ans = 204.4: A determinação de 2 elevado a 10 dividido por 5. Ou seja.3: Para calcular a soma das parcelas 203 + 416 + 256. Observação: Espaços entre os operadores e os termos de uma expressão aritmética são ignorados. >> 203/430+50*60 é equivalente a >> 230 / 130 + 50 * 60 . não sendo possível alterar esta configuração através do Windows.

Observação: Como pôde ser observado nos exemplos anteriores, as operações realizadas na linha de comando são automaticamente armazenadas em uma variável “default” ans.

Os cálculos aritméticos no MATLAB são realizados de acordo com a ordem normalmente utilizada nas demais linguagens de programação: Ordenação: 1) Operações dentro dos parênteses (interno 2) Potenciação; 3) Multiplicação e divisão; 4) Soma e subtração. externo);

Observação: Operadores de mesma hierarquia são efetuados da esquerda para a direita.

Exemplo 3.5: Determinar o valor da expressão:
>> ((9.8 - 0.8)/-(4-50))^(245/154) ans = 0.0746

 (9,8 − 0,8)   − ( 4 − 50)   

( 245/154 )

Observação: Para construir as operações aritméticas devem ser utilizados apenas parênteses. No MATLAB, os colchetes servem fundamentalmente para o cálculo matricial como será visto posteriormente.

3.3. Operações com números complexos

Uma das características que diferenciam o MATLAB é a facilidade para operar números complexos. No MATLAB, as variáveis i e j podem ser utilizadas para representar o número imaginário.

Exemplo 3.6:
>> sqrt(-1) ans = 0 + 1.0000i

Exemplo 3.7: Somar 2 + 3i com − 5 − 7i
>> (2+3*i)+(-5-7*i) ans = -3 - 4.0000i

Exemplo 3.8: Multiplicar 7i por − 3 + 7i
>> 7*i*(-3-7*i) ans = -49 - 21.0000i

Observação: Cada vez que o MATLAB é iniciado, as variáveis i e j assumem como valor “default” o número imaginário. No entanto, caso o usuário deseje, estas variáveis podem ser utilizadas para a atribuição de qualquer outro valor (i.e., não são variáveis protegidas).

3.4. Funções O MATLAB possui um grande número de funções matemáticas prédefinidas. Sua utilização é imediata, como mostram os exemplos abaixo:

Exemplo 3.9:

Calcular a raiz quadrada de 3:
>> sqrt(3) ans = 1.7321

Exemplo 3.10: Calcular o seno de 3π / 2 :
>> sin(3*pi/2) ans = -1

Observação: Lembre-se que a variável pi é uma variável já pré-definida no MATLAB com o valor de π .

Observação: As funções trigonométricas no MATLAB devem receber argumentos em radianos.

Nas tabelas a seguir, são apresentadas algumas das funções disponíveis para serem utilizadas na programação em MATLAB:

Funções trigonométricas Função
sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) sinh(x) cosh(x) tanh(x) asinh(x) acosh(x) atanh(x)

Descrição Seno co-seno Tangente arco-seno arco-co-seno arco-tangente seno hiperbólico co-seno hiperbólico tangente hiperbólica arco-seno hiperbólico arco-co-seno hiperbólico arco-tangente hiperbólico

y) besseli(x.y) lcm(x.y) Descrição decomposição em fatores primos verificação de número primo (= 1.y) besselk(x.Funções exponenciais e logarítmicas Função exp(x) log(x) log10(x) log2(x) sqrt(x) Descrição exponencial logaritmo neperiano logaritmo de base 10 logarimto de base 2 raiz quadrada Funções complexas Função abs(x) angle(x) conj(x) real(x) imag(x) Descrição valor absoluto angulo de fase em radianos conjugado complexo parte real parte imaginária Funções de truncamento Função fix(x) floor(x) feil(x) round(x) rem(x. 1 ou 0) Funções relativas à teoria dos números Função factor(x) isprime(x) primes(x) gcd(x.y) besselh(x.y) Descrição função de Bessel do primeiro tipo função de Bessel do segundo tipo função de Bessel do terceiro tipo função modificada de Bessel do primeiro tipo função modificada de Bessel do segundo tipo . se primo) lista de números primos menores que x MDC entre x e y MMC entre x e y Funções matemáticas especiais Função besselj(x.y) bessely(x.y) sign(x) Descrição arredondamento na direção do 0 arredondamento na direção de − ∞ arredondamento na direção de + ∞ arredondamento na direção do inteiro mais próximo resto da divisão de x por y sinal de x (-1.

Observação: Em uma expressão aritmética.y) erf(x) erfc(x) Gamma(x) função Beta função erro função erro complementar função gama Observação: Uma lista ampliada das funções disponíveis em MATLAB pode ser encontrada através dos comandos de ajuda help elfun e help specfun.beta(x. . as funções são calculadas em primeiro lugar.

No entanto. A e a são variáveis diferentes. O MATLAB diferencia letras maiúsculas e minúsculas. . mas os símbolos de pontuação ou acentos gráficos não ( ~ ` ‘ “ .4. variáveis. o MATLAB apresenta na tela o resultado desta atribuição. expressões aritméticas. caso não seja necessário que a . etc. VARIÁVEIS 4. . Exemplo 4. O nome de uma variável no MATLAB pode ser representado por qualquer seqüência de letras e números. Atribuição de variáveis A sintaxe para estabelecer um certo valor para uma variável. isto é. começando por uma letra (até 31 caracteres são reconhecidos).1. através do comando de atribuição = é: variável = expressão onde a o termo expressão acima corresponde a números.0407 Observação: Os comandos do MATLAB devem ser necessariamente escritos em letras minúsculas. o símbolo _ também é permitido no nome. ). Sempre que um comando de atribuição é executado.1: >> A1=3 A1 = 3 >> Bt=3^3 Bt = 27 >> expr=log(A1)/Bt expr = 0.

a entrada de dados para as variáveis de um certo problema pode ser também realizada através do comando input: variável=input('mensagem'). os valores das demais variáveis que foram definidas anteriormente a partir desta variável original não são recalculados (ao contrário dos aplicativos baseados em planilhas de cálculo). Observação: Os valores das variáveis geradas no MATLAB ficam armazenadas no que se convencionou denominar “MATLAB workspace”. espera-se o usuário digitar um dado de entrada. ao final do comando. Entrada e saída de valores para as variáveis Além dos comandos de atribuição. como.2. A atribuição de uma variável a partir de outras variáveis leva em conta o valor das variáveis apenas no momento da atribuição.2: Ao digitarmos na linha de comando: >> Logaritmo=log(10) Aparecerá na tela logo em seguida: Logaritmo = 2. Observação: Quando o valor de uma variável é alterado. A atribuição é realizada. basta apenas que seja colocado o símbolo . o valor digitado é armazenado em variável. a mensagem é exibida na tela. mas nada aparece na tela.3026 Mas se digitarmos: >> exponencial=exp(1). Quando o computador recebe este comando.atribuição apareça na tela. Exemplo 4. e. por exemplo. depois. esta . Se o usuário digitar uma expressão aritmética. em cálculos intermediários ao longo de um programa. 4.

disp(P) . o valor contido em variável.será calculada e o resultado também será armazenado em variável.4: >> P=30 P = 30 >> disp(P) 30 O comando disp também pode ser utilizado para a apresentação de mensagens na tela do computador: disp('mensagem') Observe que a mensagem está redigida entre os símbolos: ''. e depois teclar enter. Um exemplo da utilização do comando input está no exemplo a seguir: Exemplo 4. Exemplo 4. Outra opção é utilizar o comando disp: disp(variável) Este comando também apresentará na tela. basta apenas digitar o nome da variável. o usuário possa alimentar os valores desejados para as variáveis. >> disp('O valor da pressão é (bar) : ') .3: >> TK=input('Digite o valor da temperatura em K'). A diferença entre estas duas formas de apresentação de resultados pode ser ilustrada através do próximo exemplo: Exemplo 4. Este comando é útil para preparar uma subrotina de entrada de dados que permita que cada vez que o programa seja acionado. >> TC=TK-273.15 Para indicar o valor de uma variável na tela.5: >> P=30. sem precisar alterar nenhum comando.

4116 >> whos Name Size Bytes Class . >> R=8314.6: >> P=1. >> T=273. >> T=273. Exemplo 4. Exemplo 4. >> R=8314. >> V=R*T/P V = 22. suas dimensões e classes.3.7: >> P=1.O valor da pressão é (bar) : 30 4.4116 >> who Your variables are: P R T V Um outro comando semelhante é o comando whos que apresenta a lista das variáveis.15.15.0133e5.0133e5. Gerenciamento das variáveis Através do comando who é possível apresentar na tela a lista de todas as variáveis armazenadas no “workspace” em um certo instante. >> V=R*T/P V = 22.

>> R=8314. É possível também apagar todas as variáveis do “workspace” em conjunto: clear all Exemplo 4.P R T V 1x1 1x1 1x1 1x1 8 8 8 8 double array double array double array double array Grand total is 4 elements using 32 bytes O comando clear permite que uma ou mais variáveis sejam apagadas da memória do MATLAB: clear lista_de_variáveis onde lista_de_variáveis corresponde às variáveis que devem ser apagadas. >> V=R*T/P V = 22.8: >> P=1. >> T=273.0133e5. >> clear all >> who .4116 >> who Your variables are: P R T V >> clear P R >> who Your variables are: T V Observe que P e R sumiram da lista de variáveis presentes.15.

Observação: No desenvolvimento de um código computacional. muitas vezes torna-se recomendável aplicar o comando clear all no início da rotina para garantir que qualquer resultado proveniente de um processamento anterior seja eliminado da memória.Agora nenhuma variável aparece. preparando assim o MATLAB para receber a tarefa desejada (é claro que se o clear all for inadvertidamente aplicado no meio da rotina computacional desenvolvida. . pois foram todas apagadas. isto inviabilizará o correto processamento do programa).

. o MATLAB possui uma forma particular mais direta e simplificada para a entrada de matrizes: Exemplo 5. operar e manipular matrizes e vetores com facilidade.5.1)=1. >> A A = 1 -1 2 5 Neste caso. como está ilustrado no exemplo abaixo (vamos considerar que um vetor é um caso particular de uma matriz): Exemplo 5. . A(1.2)=5. Criação de matrizes e vetores A entrada de uma variável na forma de uma matriz no MATLAB pode ser realizada de maneira semelhante que as linguagens de programação convencionais. cada elemento da matriz é identificado de acordo com o seu par de índices. 5.2)=2. A(2.1)=-1.1. .1:  1 2 Efetuar a seguinte atribuição: A =    − 1 5 >> A(1. PROCESSAMENTO MATRICIAL A capacidade de processamento matricial é uma característica fundamental do MATLAB. A(2. No entanto. permitindo definir.2:  1 2 Efetuar a seguinte atribuição: A =    − 1 5 .

3: 2  Efetuar as atribuição ao lado: c =   e d = [ π π 2 0  >> c=[ 2 c = 2 0 >> d=[ pi . Operadores de álgebra linear É possível realizar operações matriciais utilizando o MATLAB com a mesma facilidade com que as linguagens tradicionais operam escalares. 2 5 Como pôde ser observado no exemplo.1416 9. a utilização desta forma de sintaxe para a entrada de dois vetores: Exemplo 5. pi^2 .1. os colchetes indicam a existência de uma matriz.2.8696 31. Operações matriciais 5.>> A=[ 1 >> A A = 1 -1 2 . os elementos ao longo de uma linha são separados por espaços (poderiam ser vírgulas) e a passagem para uma próxima linha é indicada por ponto-e-vírgula (poderia ser Enter). Os operadores disponíveis para os cálculos envolvendo matrizes são aqueles tradicionalmente utilizados na álgebra linear. 0 ] π3 ] 5. .2.0063 . pi^3 ] d = 3. -1 5 ]. Observe no próximo exemplo.

>> c=[ 2 . A tabela a seguir exemplifica a utilização dos operadores matriciais: Operadores matriciais Operação Soma Subtração Multiplicação Transposição Sintaxe C = A + B C = A . 3 . Podemos agora realizar as operações desejadas: >> A*B ans = 14 -6 . 3 ]. -4 ]. 0 . >> B=[ 2 -2 3 -1 ].Sejam duas matrizes A e B que são empregadas para gerar uma matriz C. >> d=[ 2 . 0 5  2 − 2  B= . 4 .4: Sejam as seguintes matrizes e vetores: 1 4 A= .B C = A * B C = A’ Descrição Cij = Aij + Bij Cij = Aij − Bij Cij = ∑ Ail Blj Cij = A ji Exemplo 5. 3 − 1 2  c=   3 e  2    d= 3  − 4   Efetuar as seguintes operações: a) A ⋅ B b) A + B c) A ⋅ B ⋅ c d) d T e) c − d Inicialmente. vamos aplicar todas as atribuições: >> A=[ 1 . 5 ]. Observe que as duas formas de atribuição utilizadas para as matrizes A e B são equivalentes e igualmente válidas.

Na tabela abaixo. pois as dimensões dos vetores c e d não são compatíveis. multiplicação e divisão entre uma matriz e um escalar correspondem à operação do escalar em todos os elementos da matriz. Exemplo 5.5: >> 2 + [ ans = 3 4 6 -3 1 2 4 -5 ] O MATLAB possui também várias funções embutidas para o processamento matricial. são apresentadas algumas destas funções: Funções para processamento matricial Função Descrição . Observação: As operações de soma. subtração. Note no último exemplo que o MATLAB forneceu uma mensagem de erro.15 >> A+2*B ans = 3 3 >> A*B*c ans = 10 15 >> c+d 2 4 -5 ??? Error using ==> + Matrix dimensions must agree.

Inicialmente.0000 -0. os autovalores. o determinante.6: 1 2 Seja a seguinte matriz quadrada: A =   3 4 Determinar a inversa.5000 1.5000 Observe que.0000 1.0000 0 1. entramos com a matriz A: >> A=[ 1 A = 1 3 2 4 2 . 3 4 ] A inversa da matriz é calculada por >> inv(A) ans = -2.0000 0. o traço e o posto da matriz.0000 O determinante da matriz pode ser calculado por >> det(A) ans = -2 Através da fórmula de cálculo do determinante de matrizes 2x2 podemos verificar o resultado obtido: . de acordo com a definição de inversa: >> A*inv(A) ans = 1.inv(X) det(X) eig(X) rank(X) inversão de matrizes cálculo do determinante determinação dos autovalores cálculo do posto da matriz Exemplo 5.

3723 Novamente.3723 5. o posto da matriz pode ser calculado por: » rank(A) ans = 2 Tal como era esperado pois o determinante é não nulo. 0 1 ]) ans = 0 Finalmente. é interessante verificar o resultado obtido através da definição: » det(A-aval(1)*[ 1 0 .1)*A(2. onde A e B são duas matrizes de mesma dimensão: Operações elemento a elemento .2. 0 1 ]) ans = 0 » det(A-aval(2)*[ 1 0 .2)-A(2.2. 5. Estes operadores correspondem às operações elemento a elemento. Observação: Uma lista ampliada das funções para processamento matricial disponíveis em MATLAB pode ser encontrada através do comando help matfun.2) ans = -2 Os autovalores da matriz são: » aval=eig(A) aval = -0.1)*A(1.>> A(1. representadas na próxima tabela. Operadores elemento a elemento O MATLAB possui um conjunto de operadores especiais muito úteis para o processamento de grandes volumes de dados.

0 5 ].0000 -5.^c -2.^10: Inicialmente. 3 ]. -4 ]. 3 >> c=[ 2 . 3 . A.Operação Soma Subtração Multiplicação Potenciação Sintaxe C = A + B C = A . 0 5  2 − 2  B= .*A ans = 1 0 >> A./B. -1 ].5000 0 >>2.^c e d.B C = A . >> d=[ 2 .0000 16 25 . vamos aplicar todas as atribuições: >> A=[ 1 >> B=[ 2 4 . 3 − 1 2  c=   3 e  2    d= 3  − 4   Calcular as seguintes operações elemento a elemento: A.7: Sejam as seguintes matrizes e vetores: 1 4 A= .^ B Descrição Cij = Aij + Bij Cij = Aij − Bij Cij = Aij Bij Cij = Aij Bij Exemplo 5. 2./B ans = 0. Podemos agora apresentar vários exemplos de aplicação das operações elemento a elemento: >> A. -2 .* B C = A .*A.

0000 1.8: >> a=[ 1 2 3 4 ]. >> sqrt(a) ans = 1.0000 Observação: Para gerar resultados equivalentes às diversas rotinas de processamento matricial apresentadas. através de uma linguagem de programação convencional. Exemplo 5.ans = 4 8 >>d. incluindo laços envolvendo um ou mais comandos de repetição encadeadas.3.4142 1. seria preciso preparar uma biblioteca de rotinas específica para estas operações. Esta análise demonstra a grande simplificação permitida pelo MATLAB no desenvolvimento de programas envolvendo o processamento de grande quantidade de dados organizados em matrizes e vetores. 5. .7321 2.^10 ans = 1024 59049 1048576 Caso uma função matemática convencional seja aplicada a uma matriz. Matrizes especiais O MATLAB possui um conjunto de comandos que permitem gerar uma série de matrizes especiais que podem ser úteis no desenvolvimento de rotinas de programação. esta será processada de acordo com o conceito elemento a elemento.

9: >> ones(2. Exemplo 5.J) e zeros(I) atuam de forma similar.I). eye(2. Exemplo 5. Exemplo 5.3) .11: >> eye(2) .J) gera uma matriz de dimensão IxJ contendo 1 em todas as posições. Alternativamente. zeros(1.O comando ones(I.10: >> zeros(3) .10) ans = 0 0 0 ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O comando eye gera matrizes identidade de acordo com as dimensões especificadas em eye(I.J) ou eye(I). o comando ones(I) gera uma matriz quadrada de dimensão(I. ones(2) ans = 1 1 ans = 1 1 1 1 1 1 1 1 O comando zeros nas formas zeros(I. mas geram matrizes de zeros.3) ans = .

1832 -0. O comando randn é equivalente a rand.1 0 ans = 1 0 0 1 0 1 0 0 Para gerar uma matriz contendo elementos selecionados de forma randômica (entre 0 e 1).J) e rand(I). nas formas rand(I.9218 0.5883 2.10) ans = 0.10) . utiliza-se o comando rand. randn(1.7258 -0.1867 0. . mas gera números aleatórios com distribuição normal padronizada (média zero e variância unitária).7382 0. Exemplo 5. diag(x) gera uma matriz com os elementos do vetor x na diagonal principal.1763 Seja x um vetor qualquer.13: >> diag([1. Exemplo 5.3]) ans = 1 0 0 0 2 0 0 0 3 Observação: A descrição de todas as matrizes especiais disponíveis no MATLAB pode ser encontrada através do comando help elmat.12: >> rand(1.7919 0.6154 ans = -0.1364 0.2.

2) A primeira indica apenas o número de linhas e a segunda indica apenas o número de colunas da matriz. v = [ 2 3 1 4 0 0 ] M = 1 3 4 v = 2 3 1 4 0 0 2 4 0 >> size(M) . 5.1. size(M. Este comando também pode aparecer nas formas: size(A.1) ou size(A. Identificação de dimensões As dimensões de uma matriz podem ser determinadas através do comando: size(A) onde é gerado um vetor cuja a primeira componente é o número de linhas e a segunda é o número de colunas de A. O seguinte comando indica o número de componentes de um vetor (não importando se é um vetor linha ou coluna): length(x) Exemplo 5. size(M.4.4. Manipulação de matrizes Através de recursos de sintaxe especiais disponíveis no MATLAB.5.1) . 3 4 .14: >> M = [ 1 2 . 4 0 ] .2) ans = 3 ans = 2 . é possível manipular matrizes e vetores de várias formas facilitando a sua utilização nas rotinas de programação.

16: >> v1 = 2:2:10 . Exemplo 5.5:3 v1 = 2 4 6 8 10 . pode ser realizada de forma rápida.2.3 ans = 2 >> length(v) ans = 6 5. Este comando gera um vetor linha cujos elementos formam uma seqüência de números inteiros entre lim_1 e lim_2. o vetor linha formado possui um conjunto de elementos organizados na forma de uma seqüência que começa em lim_1 e se estende até lim_2 através de um incremento inc. Neste caso. utilizando-se uma sintaxe da forma: vetor = lim_1 : lim_2. Geração de vetores e matrizes A construção de certos vetores.15: >> v = 2:10 v = 2 3 4 5 6 7 8 9 10 Uma variação desta sintaxe permite que os elementos estejam distribuídos ao longo da seqüência de acordo com um incremento não unitário: vetor = lim_1 : inc : lim_2. cujos elementos obedecem a um padrão crescente. Exemplo 5.4. v2 = 4:-0.

.17: >> M = [ 1:4 . podemos utilizar a seguinte estrutura: y = x(:).0000 Através da utilização deste recurso também é possível montar matrizes: Exemplo 5.N) Este comando gera um vetor com N componentes entre lim1 e lim2. Exemplo 5.19: >> u = [ 1 2 3 ]. 6 . Exemplo 5.5000 2.18: >> u = linspace(0.0000 3. neste caso.lim2. envolve a utilização do comando: linspace(lim1.5) u = 0 0.0000 Durante a execução de um programa pode ser necessário que a dimensão de um vetor fornecido pelo usuário seja fixada. Este comando transforma um vetor x linha ou coluna em um vetor y com os mesmos elementos de x. v = [ 3 . .5000 3. 7 ].7500 1. 4:-1:1 ] M = 1 4 2 3 3 2 4 1 Uma outra forma de criar vetores com padrão crescente.3.2500 3.v2 = 4. mas necessariamente coluna.

>> [ u(:) v(:) ] ans = 1 2 3 3 6 7 5. Exemplo 5. 4 6 ]. z = v([ 2 1 3 4 ]) u = .4.2)+x(2) ans = 9 Além da extração de elementos na forma tradicional. >> M(2.21: Este exemplo ilustra a apresentação do conceito aplicado a um vetor: >> v = [ 1 4 7 4 7 8 9 5 8 5 4 ] v = 1 4 7 4 7 8 9 5 8 5 4 >> u = v(1:4) .3. Neste caso deve ser fornecido apenas o conjunto dos índices dos elementos que devem ser extraídos. w = v(5:end) .2) da matriz com a segunda componente do vetor >> M = [ 1 3 . o MATLAB também é capaz de realizar a extração de submatrizes e subvetores com apenas um comando. .20: O comando abaixo soma o elemento presente na posição (2. Exemplo 5. é possível extrair um elemento de uma matriz bastando apenas indicar os seus índices. x = [ 1 3 4 6 ]. Extração de elementos De maneira semelhante que as linguagens de programação convencionais.

Exemplo 5. O vetor v2 corresponde aos elementos presentes na segunda linha de M e na primeira e segunda coluna. o vetor v contém a segunda. 4 7 8 . o símbolo : indica todo os índices de uma certa dimensão.:) .1:2) . primeira. A matriz M3 corresponde aos elementos presentes na primeira e segunda linha e na segunda e terceira colunas. . terceira e quarta componentes. o vetor w contém da quinta até a última componente do vetor v. M3 = M(1:2.22: Um procedimento semelhante pode ser aplicado para matrizes: >> M = [ 1 4 7 . Neste caso. v2 = M(2. o vetor u contém da primeira à quarta componente do vetor v.1 w = 7 z = 4 4 7 4 8 9 5 8 5 4 1 7 4 No exemplo acima foram gerados três vetores. 9 5 8 .2:3) v1 = 1 v2 = 4 M3 = 4 7 7 8 7 4 7 O vetor v1 corresponde à primeira linha da matriz M. 5 4 0 ] M = 1 4 9 5 4 7 5 4 7 8 8 0 >> v1 = M(1.

3) = 4 M0 = 2 2 9 2 4 3 -3 0 4 5 5 -3 4 3 6 Podemos também substituir a primeira linha da matriz pelo vetor [ 1 2 3 ]: >> M0(1.4. vamos alterar o valor do elemento M(3. 4 5 6 ] M0 = 2 2 9 2 4 3 -3 0 4 5 5 -3 8 3 6 Vamos agora realizar uma série de alterações na matriz M0.3) para o valor 4: >> M0(3.5.23: Seja a matriz M0 gerada no procedimento abaixo >> M0 = [ 2 3 5 . Inicialmente.4. Alteração de matrizes e vetores As estruturas apresentadas para extração de elementos de uma matriz também podem ser utilizadas para alterar os valores destes elementos. 2 -3 -3 . 9 0 8 . 2 4 3 . Exemplo 5.:) = [ 1 2 3 ] M0 = 1 2 9 2 4 2 -3 0 4 5 3 -3 4 3 6 .

Exemplo 5. gera um vetor coluna contendo os elementos da diagonal principal de A. 9 1 1 ] M = 2 9 9 z=diag(M) z = 3 9 1 5 8 1 . ao atribuir na posição (1.4) um elemento.As duas últimas linhas da matriz serão agora eliminadas: >> M0(4:5.4) = 1 M0 = 1 2 9 2 -3 0 3 -3 4 1 0 0 Note que como a matriz era dimensão 3x3. vamos incluir um elemento unitário na posição (1. o próprio MATLAB se encarrega de preencher as demais posições coerentes com valores nulos. 9 9 8 .4): >> M0(1.24: >> M = [ 2 3 5 .:) = [] M0 = 1 2 9 2 -3 0 3 -3 4 Finalmente. O MATLAB também dispõe de funções especiais para a alteração de matrizes e vetores de acordo com certos padrões. A função: diag(A) quando aplicada a uma matriz A.

Exemplo 5.4.2 9 1 A função: triu(A) gera uma matriz diagonal superior a partir dos elementos presentes em A. 9 1 1 ] M = 2 9 9 3 9 1 5 8 1 M_u=triu(M) .5. 9 9 8 .25: >> M = [ 2 3 5 . A função: tril(A) opera de forma semelhante mas cria uma matriz triangular inferior. Composição de matrizes e vetores . 5. M_d=tril(M) M_u = 2 0 0 M_u = 2 9 9 0 9 1 0 0 1 3 9 0 5 8 1 Observação: A lista de funções especializadas para manipulação de matrizes pode ser encontrada através do comando help elmat.

3 7 3 ] M1 = 1 4 M2 = 2 3 3 7 1 3 4 7 7 8 A partir da justaposição de matrizes.É possível criar novas matrizes e vetores através da justaposição de outras matrizes e vetores originais. 4 7 8 ] . Mat3=[ M1 . M2(1. é possível gerar várias estruturas diferentes: >> Mat1=[ M1 M2 ] . M2 ] . Os próximos exemplos permitem esclarecer esta idéia: Exemplo 5. mas agora se referindo a blocos de elementos. A estrutura de sintaxe baseada neste conceito é semelhante aquela para a entrada dos elementos de uma matriz.:) ] Mat1 = 1 4 Mat2 = 1 4 2 3 Mat3 = 1 4 2 4 7 3 7 8 1 4 7 3 7 7 8 1 3 4 7 7 8 2 3 3 7 1 3 . Mat2=[ M1 . M2 = [ 2 3 1 .26: Sejam as matrizes representadas abaixo: >> M1 = [ 1 4 7 .

uma vez que foi utilizado como separador entre os dois blocos um caracter de espaço que significa ao longo da mesma linha. uma vez que o separador entre os blocos utilizado foi o ponto-e-vírgula. . v ] v(1:2)' ] Mat1 = 1 Mat2 = 1 4 2 7 Mat3 = 1 1 4 4 2 2 7 7 1 4 1 4 2 7 4 2 7 1 4 2 7 A criação de matrizes por justaposição também pode ser realizada através do comando repmat: repmat(bloco. mas. Exemplo 5. só foi justaposto embaixo de M1. que indica na linha abaixo. >> Mat1 = [ v v ] . Mat3 = [ [ v .col]) onde bloco corresponde à matriz que deve ser repetida ao longo de lin linhas e col colunas.28: >> M = [ 1 4 2 .27: O mesmo procedimento pode ser aplicado para vetores: >> v = [ 1 4 2 7 ]. Finalmente. Mat2 = [ v' v' ] . a primeira linha da matriz M2. A matriz Mat2 foi criada pela justaposição da matriz M2 embaixo da matriz M1.lin. a matriz Mat3 é semelhante à matriz Mat2. 1 9 0 ]. O exemplo abaixo ilustra bem o conceito envolvido: Exemplo 5.[lin.col) ou repmat(bloco.A matriz Mat1 foi gerada pela justaposição da matriz M2 à direita da matriz M1. neste caso.

B) onde dim é a dimensão ao longo da qual os blocos A e B serão justapostos. M2 = [ 2 3 1 .M2) . Mat2=cat(1. Exemplo 5. O comando cat é semelhante ao comando repmat mas pode ser utilizado para compor matrizes diferentes: cat(dim.A.M2(1. >> M1 = [ 1 4 7 . 3 7 3 ] M1 = 1 4 M2 = 2 3 3 7 1 3 4 7 7 8 A partir desta matriz.M1.M1.:)) Mat1 = 1 4 Mat2 = 4 7 7 8 2 3 3 7 1 3 .29: Refazer o Exemplo 5.1. construímos as matriz M1 e M2.25 utilizando o comando cat: Inicialmente.M2) . construímos as estruturas desejadas: Mat1=cat(2.M1. 4 7 8 ] . Mat3=cat(1.M = 1 1 4 9 2 0 >> M_M_M = repmat(M.3) M_M_M = 1 1 4 9 2 0 1 1 4 9 2 0 1 1 4 9 2 0 Observe que a matriz M foi replicada uma vez ao longo da linha e três vezes ao longo das colunas.

30: >> u = [ -1 3 4 0 ] .4. Veja o exemplo a seguir: Exemplo 5. v ] ??? All rows in the bracketed expression must have the same 4 2 3 4 0 number of columns. em caso contrário. disponível no MATLAB.1 4 2 3 Mat3 = 1 4 2 4 7 3 7 7 8 1 3 4 7 3 7 8 1 Observação: Em qualquer caso de composição de matrizes e vetores. 5. v = [ 3 4 2 ] u = -1 v = 3 >> [ u . a coerência entre as dimensões da matrizes a serem combinadas deve ser garantida. o procedimento levará a uma mensagem de erro. é possível identificar os elementos de uma matriz ou de um vetor que atendem a uma certa condição. Pesquisando matrizes e vetores Através do comando find.6. Exemplo 5.31: >> v = [ 1 4 2 7 5 2 3 5 3 ] v = 1 4 2 7 5 2 3 5 3 .

= 1). presente no argumento. basta apenas utilizar os recursos especiais de extração de elementos já apresentados: >> v_maior_3 = v(u) v_maior_3 = 4 7 5 5 O comando find também pode ser aplicado para matrizes como mostra o exemplo abaixo: Exemplo 5.32: >> M = [ 1 4 2 . foi gerado um vetor linha que indica os índices dos elementos do vetor v para os quais a expressão relacional.col]=find(M>3) lin = 2 1 2 3 col = 1 2 2 2 . Caso seja necessário extrair os elementos que atendem a condição proposta. 3 5 3 ] M = 1 7 3 4 5 5 2 2 3 >> [lin.>> u=find(v>3) u = 2 4 5 8 Através do comando find. 7 5 2 . é verdadeira (ou seja.

min(x. col(2)) . Uma visão geral destas posições pode ser observada utilizando-se o recurso de justaposição apresentado na subseção anterior: >> [ lin col ] ans = 2 1 2 3 1 2 2 2 Observação: Na utilização do comando find para matrizes no exemplo abaixo. ((lin(3) . É importante notar que. o comando find gerou os vetores lin e col. col(3)).[]. Ou seja. neste caso. a sintaxe [lin. além do seu índice (saída i).i] = min(x) ou [y. col(1)) . Dois outros comandos de pesquisa bastante úteis são os comandos min e max. etc.dim) . ((lin(2) .[]. [y.col]=find(M>3). os índices dos elementos que atendem a condição são (lin(1) .col] corresponde à saída fornecida por uma função através de dois componentes. O vetor lin indica as linhas e o vetor col indica as colunas dos elementos que atendem a condição estabelecida. composta pelos menores/maiores elementos nas duas matrizes ao longo das posições correspondentes.i]=max(x) indica o valor da menor/maior componente do vetor x (saída y).y) ou max(x.dim) ou max(x. min(x.y) gera uma matriz.Neste caso. surgiu uma estrutura da forma [lin. As sintaxes mais importantes para estas funções são: min(x) ou max(x) indica o valor da menor/maior componente do vetor x. não indicando a justaposição dos vetores lin e col. com a mesma dimensão das matrizes x e y.

4 9 3 ] v = 1 M = 2 7 4 4 4 9 0 2 3 4 2 4 5 3 6 >> [ min(v) max(v) ] ans = 1 6 >> min(M. M = [ 2 4 0 .quando x é uma matriz determina os menores/maiores ao longo da dimensão dim.5. Para facilitar a visualização. no entanto. vamos apresentar aqui o desenvolvimento dos conceitos apresentados para matrizes de três dimensões. todos os exemplos são plenamente aplicáveis para outras dimensões.M(:.2)) ans = 4 7 9 5.1). Exemplo 5. caso seja necessário. No caso de matrizes de três dimensões. 7 4 2 .[].1) ans = 2 4 0 >> max(M(:.33: >> v = [ 1 4 2 4 5 3 6 ] . . a terceira dimensão será denominada “página”. Matrizes de dimensão superior O MATLAB também é capaz de processar matrizes de dimensão maior que 2.

Finalmente.:.:. .:.:. Exemplo 5.1) = 0 3 M(:.1) = 2 3 M(:. alguns exemplos de manipulação: . Montamos a matriz através das introdução das duas páginas: >> M(:.:. M(:. 2 0 9 ].34: Vamos entrar com uma matriz de dimensão 2x3x2.2) = [ 9 1 . >> M(:. 3 3 ].35: Seja uma matriz M de dimensão 2x2x2: >> M(:. Veja o exemplo abaixo: Exemplo 5.2) = 3 2 1 0 8 9 4 5 1 6 As técnicas apresentadas anteriormente para a extração de elementos e alteração de matrizes e vetores também podem ser utilizadas.:.:. 2 1 ] M(:.1) = [ 0 4 . apresentamos o resultado na tela: M(:.A entrada de dados de uma matriz de três dimensões pode ser feita compondo matrizes de duas dimensões ao longo do índice das páginas.:. 3 5 6 ].2) = [ 3 1 8 .1) = [ 2 4 1 .2) = 9 2 1 1 4 3 Vamos apresentar agora.

Exemplo 5.1) ans = 0 3 4 3 1 4 As funções ones.1) = 0 3 ans(:.:) ans(:.:.2) = 9 >> M(:.:.2) = 9 2 >> M(:.:.:.:.1. Os comandos repmat e cat também podem ser aplicados para composição de matrizes de dimensão maior que 2 (para o comando repmat.1) = 1 2 3 .:) ans(:.>> M(1. eye.[1. randn para criação de matrizes especiais e as funções para determinação da dimensão de matrizes também podem ser aplicadas para matrizes de dimensão superior.1.36: >> M = [ 1 2 3 . deve ser necessariamente utilizada a sintaxe apresentada no exemplo abaixo).1) = 0 ans(:. zeros.2]) Mat1(:. 4 5 6 ] M = 1 4 2 5 3 6 >> Mat1 = repmat(M1. rand.:.:.

:.2) = 11 3 6 5 1 1 4 3 . 2 1 ] M(:.4 5 6 Mat1(:.:.2) = [ 9 1 . Em relação às operações matemáticas para matrizes de dimensão superior estão definidas as operações envolvendo escalares e as operações elemento a elemento. 3 3 ]. .:.:.:.:. M(:.:.M.:. Exemplo 5.:.1) = 2 5 ans(:.M) Mat2(:. Embora os operadores de álgebra linear não estejam definidos para estas matrizes.1) = [ 0 4 .2) = 9 2 >> M+2 ans(:.1) = 1 4 2 5 3 6 Mat2(:. estes podem ser aplicados para as “páginas” bidimensionais.2) = 1 4 2 5 3 6 Note que ambas as operações forneceram o mesmo resultado.2) = 1 4 2 5 3 6 >> Mat2 = cat(3.37: >> M(:.1) = 0 3 M(:.

^M ans(:.:. recomenda-se que este tipo de variável seja utilizado apenas quando efetivamente trouxer um ganho na organização das informações do problema abordado. 2 ] ans = 8 9 Observação: Uma vez que a utilização de matrizes multidimensionais aumenta a complexidade de processamento computacional e de endereçamento dos dados. Matrizes de caracteres Apesar do Matlab ser essencialmente um software para processamento numérico. esta variável adquire uma estrutura matricial onde cada caracter da “string” é um elemento da matriz.1) = 1 8 ans(:.2) = 512 4 3 16 8 2 2 >> M(:. Exemplo 5.:. Mat_char = Temperatura no tanque >> size(Mat_char) ans = . 5.:.6. Toda “string” ao ser introduzida em uma variável no Matlab deve estar limitada por símbolos ''.1)*[ 1 . também é possível manipular textos (“strings”). Quando uma “string” é armazenada em uma variável.4 >> 2.38: >> Mat_char = 'Temperatura no tanque'.

>> disp(Mat_char) Tempo de fechamento >> Mat_char1 = Mat_char(1:5) Mat_char1 = Tempo >> Mat_char2 = Mat_char(5:-1:1) ans = opmeT >> Mat_char3 = [ Mat_char1 ' ' Mat_char2 ] Mat_char3 = Tempo opmeT Observação: Uma lista completa dos comandos de manipulação de “strings” pode ser encontrada em help strfun. Matrizes de caracteres também podem ser manipuladas de forma similar que as matrizes convencionais.39: >> Mat_char = 'Tempo de fechamento'.1 21 >> class(Mat_char) ans = char Como pode ser observado no exemplo. . conforme está apresentado nos comandos a seguir: Exemplo 5. a “string” foi armazenada como um vetor linha da classe char.

2. o processamento de informação pode ser facilitado. matrizes convencionais. matrizes celulares e estruturas não operam matematicamente (mas o conteúdo armazenado sim).1: >> M1(1. sejam “strings”. Matrizes celulares Matrizes celulares são matrizes compostas por células.1) = { eye(2) }. As células de uma matriz são representadas através de chaves { } e indexadas através de ( ). 6. pois um conjunto variado de dados relacionados pode ser agrupado sob uma única variável.2. matrizes celulares ou estruturas. embora sejam usualmente utilizadas na forma de um vetor.1.1) = { [ 1 2 ] }. >> M1(1. >> M1(2. Como o objetivo destas classes de dados é apenas ordenar a informação disponível.1.2) = { pi }. Conceito Matrizes celulares (“cell arrays”) e estruturas (“structures”) são classes de dados disponíveis nas versões mais recentes do MATLAB que permitem agrupar elementos de diferentes classes em um mesmo grupo. Criação de matrizes celulares Uma matriz celular pode ser construída através da atribuição de cada célula individual. Desta forma. Matrizes celulares podem ser construídas com qualquer dimensão. 6. MATRIZES CELULARES E ESTRUTURAS 6. onde cada célula individual pode armazenar elementos de qualquer classe de dados. uma matriz celular pode armazenar uma outra matriz celular em uma célula.6. Por exemplo. Exemplo 6. uma matriz convencional em outra e um vetor em mais outra. .

>> M2 M2 = [2x2 double] [2x1 double] [9. >> M2{1. por um escalar.3: . >> M2{2.8696] [] A diferença é sutil mas deve ser observada. a identificação da posição do conteúdo de uma célula é feita através de { }. >> M1 M1 = [2x2 double] [1x2 double] [3. >> M2{2.1} = [ 1 .1} = ones(2).2) = { [] }. as células contendo matrizes são apresentadas através da dimensão da matriz que está armazenada. Na representação de uma matriz celular.>> M1(2.2} = [].1416] [] A matriz celular criada possui dimensão 2x2 e é formada por uma matriz identidade 2x2. por um vetor linha com duas componentes e por uma matriz de dimensão 0x0. Veja o exemplo a seguir: Exemplo 6.2: >> M2{1.2} = pi^2. a indexação de uma célula é realizada através de ( ) e a indexação do conteúdo da célula na matriz celular é realizada através de { }. Uma forma alternativa de alimentar dados em uma matriz celular corresponde a indicar diretamente o conteúdo de cada célula. O exemplo abaixo permite esclarecer esta idéia. Neste caso. 2 ]. Exemplo 6.

contendo duas matrizes de zeros de diferentes dimensões >> M3{1.4: >> M4 = { [ 1 2 ] .1)) ans = cell Agora vamos apresentar o conteúdo da célula presente na primeira posição: >> M3{1. Exemplo 6. [ 6 7 8 9 ] . >> M3 M3 = [2x2 double] [3x3 double] Vamos agora apresentar a célula presente na primeira posição: >> M3(1. [ 3 4 5 ] . >> M3{1.2} = zeros(3).1}) ans = double As chaves { } podem representar não só células isoladas mas também matrizes celulares como um todo. [ 10 11 12 13 ] } M4 = .1) ans = [2x2 double] >> class(M3(1.1} = zeros(2).Inicialmente vamos criar uma matriz celular 1x2. de forma semelhante àquela utilizada nas matrizes convencionais.1} ans = 0 0 0 0 >> class(M3{1.

podemos acessar o conteúdo de uma célula isolada de forma semelhante às matrizes convencionais.2.6: >> M6 = { ones(1. que cria uma matriz celular contendo matrizes de dimensão 0x0. zeros(1.3) .:} ??? Illegal right hand side in assignment. zeros(1. é possível inicializar uma matriz celular através do comando cell. Extração envolvendo matrizes celulares Tal como foi apresentado no Exemplo 6.3. Exemplo 6.2) .2.1} M6_1 = 1 >> M6{1. Veja o exemplo abaixo: Exemplo 6.5: >> cell(2.2) ans = [] [] [] [] 6. A apresentação do conteúdo de grupo de células também pode ser feita da mesma forma. ones(1. .[1x2 double] [1x4 double] [1x3 double] [1x4 double] Caso seja necessário. Too many elements.:} ans = 1 ans = 0 0 0 1 1 1 1 >> M6_2 = M6{1.2) }. >> M6_1 = M6{1.3) .

1} = 1 M7{2. >> M6_ = M6(1. >> M7{2.1} = [ 6 7 8 9 ]. mas um subgrupo de células como um todo. >> M7{1.1} = 6 M7{1.7: Inicialmente vamos criar uma matriz celular 2x2: >> M7{1. não o conteúdo. mais uma vez. >> M7{2. que é diferente da representação da célula como um todo: >> M7 . em uma outra matriz celular. Observe.:) M6_ = [1x3 double] [1x3 double] Para apresentarmos o conteúdo de todas as células de uma matriz celular. conforme está apresentado no próximo exemplo: Exemplo 6. No entanto é possível atribuir.1} = [ 1 2 ].2} = [ 10 11 12 13 ].2} = 10 11 12 13 4 5 7 8 9 2 Este comando apresenta o conteúdo de cada célula. Agora utilizamos o comando celldisp para apresentar o conteúdo de todas as células: >> celldisp(M7) M7{1.2} = [ 3 4 5 ].É importante observar neste exemplo que não foi possível atribuir o conteúdo de um grupo de células em uma outra matriz celular. utilizamos o comando celldisp.2} = 3 M7{2.

var_2. -3 } >> [M8_1..8: >> M8 = { eye(3) .Mat_Cel2. corresponde a lista de variáveis para a atribuição e Mat_Cel ou Mat_Cel1.... zeros(2) . 30 ..M8_2..] = deal(Mat_Cel) ou [var_1.var2.var2... são o conjunto dos conteúdos das células que serão distribuídas ao longos das variáveis Exemplo 6..M8_3.) onde var_1...] = deal(Mat_Cel1.....M7 = [1x2 double] [1x4 double] [1x3 double] [1x4 double] Uma representação gráfica da estrutura da célula também pode ser obtida através do comando abaixo: >> cellplot(M7) Através do comando deal é possível realizar múltiplas atribuições do conteúdo de um grupo de células para um conjunto de variáveis: [var_1. Mat_Cel2.Mat_Cel3.M8_4]=deal(M8{:}) M8_1 = 1 0 0 M8_2 = 30 M8_3 = 0 0 M8_4 = -3 0 0 0 1 0 0 0 1 .

Alteração de células As técnicas utilizadas para manipular as matrizes convencionais também podem ser utilizadas para matrizes celulares.1416] >> M9_2 = M9{2.3. [ -1 2 . zeros(1.10: Inicialmente. [ -1 2 . Exemplo 6. 4 8 ] .1} M9_1 = -1 4 2 8 [3. .1) M9_2 = -1 >> M9_3 = M9{2. como ilustra o próximo exemplo. também é possível acessar um certo elemento ou grupo de elementos de uma matriz contida em uma célula.1}(1. Exemplo 6. 2 .Além de acessarmos o conteúdo de uma célula. 4 8 ] .2.1}(1. pi } M9 = [ 1] [ 2] [2x2 double] >> M9_1 = M9{2. vamos criar a matriz celular M9: >> M10 = { 1 .9: >> M9 = { 1 2 . 10 } M10 = [1] [2] [2x2 double] [1x2 double] [10] Vamos alterar o conteúdo da terceiro célula: >> M10{3} = -2*M10{3}.:) M9_3 = -1 2 6.2) .

nas estruturas os dados são . 2 . vamos eliminar a última célula: >> M10(end)=[] M10 = [1] [2] [2x2 double] [1x2 double] 6. A diferença das estruturas consiste na forma de armazenamento de dados. Exemplo 6.11: >> M11_1 = { 1 .3. Enquanto nas matrizes os dados são armazenados em células. 4 ] } M11_1 = [1] [2] [1x2 double] [2x1 double] >> M11_2 = { -1 . 2 . 100 } M11_2 = [-1] [2x2 double] [2] [100] >> M11 = [ M11_1 . Composição de matrizes celulares O próximo exemplo apresenta como as matrizes celulares podem ser justapostas de forma equivalente às matrizes numéricas. [ 3 . M11_2 ] M11 = [ 1] [-1] [ 2] [1x2 double] [ 2] [2x1 double] [ 100] [2x2 double] 6.2. [2 3 . Estruturas Estruturas são classes de dados semelhantes às matrizes celulares e também têm como objetivo agrupar conjuntos de dados de classes diferentes através de uma única variável. identificadas através de números. 4 5 ] .4.>> M10{3} ans = 2 -8 -4 -16 Agora. [ 2 3 ] .

Agora.device. Estruturas também podem ser criadas com qualquer dimensão. >> Pipe. mas são usualmente utilizadas como vetores.armazenados em diferentes campos (“fields”) identificados através de “strings”.3. >> Pipe. vamos introduzir as informações referentes ao próximo duto da lista: >> Pipe(2). .sensor=[ 10 ]. >> Pipe(2). Exemplo 6. >> Pipe(2). são introduzidas as diversas informações disponíveis sobre um certo duto na estrutura pipe: >> Pipe. >> Pipe.diameter=3. >> Pipe. >> Pipe(2).number=1. Criação de estruturas Vamos apresentar a sintaxe de criação de estruturas através do próximo exemplo.1.valve=[ 0 25 ].length=30.sensor=[ ].device.valve=[ 2 18 ].number=2. >> Pipe Pipe = number: 1 diameter: 2 length: 20 device: [1x1 struct] Os campos number.12: Inicialmente. 6. >> Pipe(2). cujos campos são valve e sensor.length=20.device.device. diameter e length são escalares e o campo device é uma outra estrutura.diameter=2. onde é criada uma variável para guardar as informações relativas a um conjunto de dutos de uma unidade industrial.

e V1. Exemplo 6. são matrizes celulares de mesmo tamanho com as informações para serem armazenadas nos diferentes campos. field2.'device'. as informações a serem armazenadas são agrupadas em matrizes celulares relativas aos diferentes campos: >> N = { 1 2 }.>> Pipe Pipe = 1x2 struct array with fields: number diameter length device Alternativamente. >> L = { 20 30 }. >> Dv = { { [ 2 18 ] . [ 10 ] } . { [ 0 25 ] .…) onde struct_name é o nome da estrutura a ser criada.V2. field1. etc. V2.N. [ ] } }.13: Este exemplo armazena as mesmas informações apresentadas no exemplo anterior na estrutura Duct. >> Duct = struct('number'. também é possível alimentar dados em uma estrutura através do comando struct: struct_name = struct('field1'.V1.L. Primeiro.'length'.D.'field2'. são os campos para armazenamento das informações. >> D = { 2 3 }.'diameter'. etc.Dv) Duct = 1x2 struct array with fields: number diameter length device .

14: Este exemplo utiliza a estrutura Duct do exemplo anterior. Extração envolvendo estruturas As técnicas para a extração do conteúdo são similares àquelas utilizadas para matrizes e vetores. ou elementos ou grupo de elementos em um certo campo.3.2.number ans = 1 ans = 2 Agora. O próximo exemplo ilustra a sintaxe utilizada nestas técnicas: Exemplo 6. >> Duct Duct = 1x2 struct array with fields: number diameter length device O próximo comando apresenta as informações armazenadas no campo number: >> Duct. É possível acessar um campo.6. são apresentados todos os campos do primeiro grupo de dados armazenados: >> Duct(1) ans = number: 1 diameter: 2 length: 20 device: {[2 18] [10]} . um conjunto de campos.

15: Vamos criar uma nova estrutura com o nome Tube a partir da estrutura Duct existente: >> Tube = Duct Tube = 1x2 struct array with fields: number diameter length device Agora vamos alterar o diâmetro do tubo 1: >> Tube(1). incluir novos campos ou eliminar campos. onde pode ser aplicado o comando sum.diameter = 1. Alteração de campos Utilizando os mesmos conceitos envolvidos nas matrizes convencionais e celulares.O comando abaixo apresenta o conteúdo do primeiro elemento armazenado no campo diameter (diâmetro do duto 1): >> Duct(1).diameter ans = 5 . >> Tube.3.length ]) O símbolo [ ] presente no comando acima é necessário para colocar as saídas dos campos length em uma matriz. 6. etc. Exemplo 6.diameter ans = 2 Podemos calcular a soma dos comprimentos dos dutos: >> CompTotal = sum([ Duct. é possível alterar o conteúdo dos campos.3.5.

roughness = { 46e-6 }.device') ans = 1x2 struct array with fields: number diameter length roughness Observação: Informações adicionais sobre matrizes celulares e estruturas podem ser encontradas na documentação do MATLAB. vamos eliminar o campo device. . >> Tube Tube = 1x2 struct array with fields: number diameter length device roughness Finalmente.roughness = { 46e-6 }. digitando-se help datatypes na linha de comando. Tube(2). .ans = 3 Vamos introduzir um novo campo com a rugosidade dos tubos: >> Tube(1). utilizando a função rmfield: >> rmfield('Tube.

curvas de nível. símbolo e estilo da linha: Codificação de cores Caracter b g r c Cor azul verde vermelho azul claro Caracter m y k w Cor magenta amarelo preto branco Codificação de símbolos . serão plotados os pontos (x1. A tabela a seguir apresenta a codificação de cor. incluindo curvas no plano e no espaço. o símbolo dos pontos e o estilo da linha empregados na representação gráfica. Gráficos 2-D 7. e str é uma “string” de caracteres opcional indicando a cor. etc.y. utilizado na sua forma mais simples da seguinte maneira: plot(x. (x2.y1) . etc. histogramas. GRÁFICOS O MATLAB oferece uma grande quantidade de recursos gráficos para a apresentação de resultados.1. superfícies com diversas formas de representação e texturas. A poderosa capacidade gráfica do Matlab constitui uma das suas características mais importantes quando comparado às linguagens de programação convencionais. 7.7..y2) .1. Traçando gráficos A sintaxe básica para representar uma massa de dados em um gráfico bidimensional é o comando plot. gráfico de barras.1.'str') onde x e y são os vetores contendo as coordenadas dos pontos a serem apresentados no gráfico – desta forma.

7 41.0 0.8 32.Caracter .0 1.5 44.0 3. >> T = [ 25.3 35.5 2.0 2.7 41.5 2.3 35.0 28.5 4.5 4.0 2.8 32.0 1. Símbolo linha contínua tracejado curto tracejado longo Traço . vamos alimentar os dados fornecidos através de dois vetores: >> t = [ 0.0 4.2 46.1 ].ponto O exemplo a seguir ilustra a utilização do comando plot.0 28.2 46.9 51.5 25.6 48.0 3.5 1.0 0.5 1.5 3. (ºC) 0.6 48.6 38.5 44. O objetivo deste exemplo é preparar um gráfico que represente os pontos medidos.1 Inicialmente.5 ].5 3.1: Na tabela abaixo há um conjunto de pontos medidos no lento processo de aquecimento de um tanque ao longo do tempo. Exemplo 7. o x + * s d Símbolo ponto círculo xis soma asterisco quadrado losango Caracter ^ v < > p h Símbolo triângulo ( ) triângulo ( ) triângulo () triângulo ( ) pentágono hexágono Codificação de estilos de linha Caracter : --.9 51. Dados de aquecimento de um tanque Tempo (h) Temp. .6 38.0 4.

'd') Como o código de cor não está presente.T.5 2 2. uma vez que queremos um gráfico de pontos discretos não ligados (quando o caracter referente ao símbolo está presente e o caracter referente ao estilo de linha não está presente. os símbolos dos pontos serão losangos: . o MATLAB irá utilizar a cor “default” azul. Não selecionaremos nenhum estilo de linha.5 3 3.5 1 1.T.Para traçar o gráfico utilizamos o comando plot.'ro') Finalmente. nenhuma linha é adicionada): >> plot(t. Vamos selecionar os pontos na cor vermelha e representados como círculos. e de acordo com a codificação do caracter.5 Vamos verificar outra combinação de cores e símbolos: >> plot(t.5 4 4. o MATLAB abrirá uma janela onde será apresentado o gráfico abaixo: 55 50 45 40 35 30 25 0 0.

55 50 45 40 35 30 25 0 0. .4π ] .2): >> x = 0 :0.4.1. O procedimento neste caso envolve a utilização do comando plot em conjunto com as operações matriciais elemento a elemento.5 3 3.5 4 4.5 No Exemplo 7. Além da estrutura de sintaxe utilizada acima.01:4*pi. o conjunto de pontos discretos é plotado. foram preparados gráficos com conjuntos de pontos isolados. No entanto. e depois estes são ligados em seqüência para reproduzir a forma da curva).5 1 1. também poderia ser aplicado alternativamente o comando linspace.2: Traçar o gráfico da função f ( x ) = [sen( x )]2 cos( x ) para x ∈[0. Exemplo 7. O primeiro passo para traçar um gráfico de uma função consiste em gerar um vetor com as coordenadas da variável independente dos pontos (a rotina gráfica não traça curvas contínuas.5 2 2. Vamos utilizar os recursos de geração de vetores com padrão crescente apresentados anteriormente (Subseção 5. O exemplo a seguir ilustra esta abordagem. na verdade. pode ser necessário traçar o gráfico da curva associada ao comportamento de uma função.

devem ser utilizadas as operações elemento a elemento. .4 0.^2. um incremento excessivamente pequeno pode acarretar um esforço computacional desnecessário. o MATLAB irá utilizar os valores “default”: cor azul com os pontos não marcados mas ligados através de uma curva contínua: 0. Desta forma.3 -0.1 -0. armazenado então no vetor y: >> y = sin(x).Uma vez criado o vetor da variável independente.3 0. o emprego de poucos pontos poderia levar a uma curva poligonal que não representaria de forma correta o gráfico da função. Finalmente. através da imagem da função. o incremento utilizado para a geração do vetor da variável independente deve ser suficientemente pequeno para produzir uma curva precisa. Para este cálculo.y) A “string” de identificação da cor e do símbolo não foi introduzida. para cada componente do vetor x.4 0 2 4 6 8 10 12 14 Observação: No traçado de uma curva. deve ser criado o vetor da variável dependente.2 0.*cos(x). como conseqüência. aplica-se o comando plot: >> plot(x. Por outro lado.1 0 -0. será calculado o valor da imagem da função.2 -0.

y1..str2 são as informações da segunda curva e assim sucessivamente.y2. Vamos seguir os mesmos passos do Exemplo 7.4π ] . z vetores linha . x2.'str2'.6 -0.x.2.*cos(x). Exemplo 7.Também é possível traçar o gráfico de múltiplas curvas simultaneamente.) onde x1.: >> x = 0:0.str1 são as informações da primeira curva. y.4 -0..01:4*pi.6 0. >> y = sin(x).4 0.2 0 -0. z = sin(x).x2.. .'str1'.z) Resultando finalmente no seguinte gráfico (observe que o MATLAB utiliza uma cor para cada curva): 1 0.2 -0.y.3: Traçar os gráficos das funções f ( x ) = [sen( x )]2 cos( x ) e g ( x ) = sin( x ) para x ∈[0. utilizando a seguinte sintaxe: plot(x1. >> plot(x.8 0.y2.y1.8 -1 0 2 4 6 8 10 12 14 Alternativamente também poderia ser utilizado o seguinte comando: Sejam x.^2.

dependendo do estado inicial). Os gráficos no Matlab são embutidos em uma caixa que pode ser desativada através do comando box off (o comando box on coloca a caixa e o comando box coloca/retira caixa. respectivamente. o MATLAB permite que o usuário possa alterar vários dos seus aspectos.[ y z ]) No primeiro caso. através dos comandos: title('mensagem') . A identificação do título do gráfico e das escalas pode ser feita. y. inclusão de textos. z vetores coluna: >> plot(x. o vetor da variável independente é combinado com as colunas da matriz para gerar as duas curvas.1. em escala monolog: semilogx(x. Através do comando grid on.>> plot(x. gerando respectivamente as duas curvas.'str').raio. o gráfico ativo recebe uma malha de linhas delimitadoras (o comando grid off retira estas linhas e o comando isolado grid recebe/retira as linhas. semilogy(x.[ y . o vetor da variável independente é combinado com as linhas da matriz. alterações de características. etc. rotação em 3D.y.'str'). Vamos apresentar aqui um conjunto de comandos que podem ser utilizados para a manipulação de gráficos. Observação: O Matlab também é capaz de traçar gráficos em escala log-log: loglog(x. Manipulando gráficos Uma vez que um gráfico foi gerado. dependendo do estado inicial). 7.y.y.2. A própria janela gráfica criada através do comando plot possui uma barra de ferramentas com vários recursos que podem ser explorados para a manipulação do gráfico: zoom. Todos estes comandos seguem a mesma sintaxe geral do comando plot. No segundo caso.'str') ou além de coordenadas polares: polar(ang. z ]) ou Sejam x. setas.'str').

Caso os vetores não estejam mais armazenados no “workspace”. segunda curva.y. .^2.4: Refazer o gráfico do Exemplo 7. como no exempo acima. realizamos as alterações desejadas (sem fechar a janela inicial): >> grid on >> box off >> title('Gráfico de duas curvas') >> xlabel('Eixo x') .*cos(x). etc.xlabel('mensagem') ylabel('mensagem') onde mensagem é o texto de identificação a ser apresentado.. retirando a caixa externa e incluindo a identificação do título e dos eixos e uma legenda. mensagem2.'Função g(x)') O resultado final é: . são as identificações da primeira curva.. Traçamos o gráfico base: >> plot(x..x.) onde mensagem1. Quando múltiplas curvas são traçadas em um gráfico.3 incluindo uma malha de linhas delimitadoras. Exemplo 7. ylabel('Eixo y') >> legend('Função f(x)'. o comando legend permite que sejam adicionadas identificações para cada curva: legend('mensagem1'. z = sin(x). . y = sin(x). etc.z) Agora. vamos repetir a geração dos pontos: >> x = 0:0.01:4*pi.'mensagem2'.

yinf .4 0. xsup .4 para x ∈[0.6 -0. xsup .2 Eixo y 0 -0.Gráfico de duas curvas 1 0. Exemplo 7.8 -1 0 2 4 6 Eixo x 8 10 12 14 Função f(x) Função g(x) A região do gráfico a ser visualizado pode ser alterada através do comando axis: axis([ xinf .8 0. digitamos: >> axis([ 0 4*pi -1 0 ]) .0] . yinf . Após executarmos o exemplo anterior. ysup ] são os limites do gráfico a serem visualizados.5: Reduzir a área de visualização do Exemplo 7.4 -0. Para retornar a sistema de escalas automático utiliza-se axis on.4π ] e y ∈[−1.2 -0.6 0. ysup ]) onde [ xinf .

2 -0. utilizandose o comando close. inicialmente o gráfico deve ser traçado. o MATLAB sempre apaga o gráfico anterior. estas vão sendo numeradas como pode ser visto na barra de título de cada uma. a visualização de várias janelas gráficas diferentes pode ser feita através do comando figure. No entanto.7 -0.3. o MATLAB cria uma janela adicional e qualquer novo gráfico vai para esta nova janela.9 -1 0 2 4 6 Eixo x 8 10 12 Função f(x) Função g(x) Observação: Lembre-se que para efetuar as alterações apresentadas nesta subseção.4 Eixo y -0. o comando figure pode ser utilizado na seguinte forma: figure(n) onde n é o número da janela. Através da linha de comando também é possível fechar janelas.6 -0. Uma vez acionado este comando. Todas as manipulações gráficas apresentadas na subseção anterior são aplicadas na janela que estiver ativa naquele instante.1. o MATLAB fecha a janela que estiver ativa. Para fechar uma janela diferente da janela ativa. basta apenas .8 -0. À medida que as janelas são criadas em seqüência. mantendo as demais intactas.1 -0. Quando este comando é digitado. Para ativar um janela existente para o primeiro plano. Gerenciando janelas gráficas Quando vários comandos plot são executados em seqüência.3 -0. e a sua janela deve estar ativa antes dos comandos serem aplicados. 7.Gráfico de duas curvas 0 -0.5 -0.

>> y = sin(x).2π ] .w) .n) onde lin e col são os números de linhas e colunas em que deve ser dividida a janela gráfica e n é a posição em que o próximo gráfico deve ser colocado (a numeração das posições caminha da esquerda para a direita ao longo de uma linha. w = cos(x). começando pela primeira. title('Funçao h(x)') >> subplot(2. o comando hold on faz com que qualquer comando plot adicional seja desenhado na janela ativa sem apagar o conteúdo desta (hold off desativa o comando e hold alterna entre os dois estados). através da divisão da janela gráfica em regiões.2. plot(x. . >> subplot(2.2.2.01:2*pi. .v) . Finalmente.y) .^3.^3. Vários gráficos podem ser visualizados no MATLAB simultaneamente.2) . utilizando-se o comando subplot: subplot(lin. h( x ) = cos( x ) e k ( x ) = [cos( x )]3 para x ∈[0. . g ( x ) = [sen( x )]3 . title('Funçao f(x)') >> subplot(2. plot(x. o comando close all fecha todas as janelas gráficas abertas. Exemplo 7. z = sin(x). >> x = 0:0. v = cos(x). Quando uma janela gráfica está ativa. title('Funçao g(x)') >> subplot(2.fornecer o número da janela: close(n). title('Funçao k(x)') Gerando assim o gráfico das quatro curvas em uma “matriz” 2x2: .6: Apresentar as curvas f ( x ) = sen( x ) . e assim sucessivamente). passando no final para a segunda.3) . em separado mas em uma mesma janela gráfica.4) . plot(x.z) .col.1) .2. plot(x.

o comando hist. o MATLAB também possui várias ferramentas para traçar gráficos especiais como histogramas.5 0 -0.1. etc. Histogramas Dada uma certa coleção de valores armazenados em um vetor.2. gráficos tipo torta.2. gera o histograma desta amostra: hist(x. gráficos de barra. Gráficos 2-D especiais Além dos gráficos 2-D convencionais apresentados.5 -1 0 2 6 8 1 0.5 -1 0 2 4 Funçao h(x) 1 0.5 0 -0. Exemplo 7. 7. 7.5 0 -0.7: .5 -1 0 2 4 6 8 1 0.5 -1 0 2 Funçao g(x) 4 Funçao k(x) 6 8 4 6 8 Observação: Informações adicionais sobre as rotinas gráficas 2-D do Matlab podem ser encontradas em help graph2d.n) onde x é o vetor de valores e n é um escalar opcional que indica o número de barras que devem ser incluídas (“default” n = 10).Funçao f(x) 1 0.5 0 -0.

'cor') onde x e y são os vetores utilizados para construção do gráfico e cor é o caracter opcional para definição da cor das barras.Traçar o histograma de um conjunto 10.'cor') ou barh(x.y.000 de pontos com distribuição normal padronizada. bidimensional ou tridimensional).y. Exemplo 7.'cor') ou bar3(x.30) .y. Gráficos de barra A sintaxe geral para a construção de um gráfico de barra em suas diversas formas é: bar(x.2.1). title('Histograma') Histograma 1000 900 800 700 600 500 400 300 200 100 0 -4 -3 -2 -1 0 1 2 3 4 7.'cor') ou bar3h(x.y. >> hist(x. >> x = randn(1e4.8: A produção média de uma refinaria (em milhares de barris/dia) ao longo dos meses de um certo ano está representada na tabela abaixo: . apresentados está na apresentação do A diferença entre os comandos gráfico (vertical ou horizontal.2.

>> prod = [ 200 220 230 80 90 150 220 230 225 275 280 285 ]. vamos utilizara o recurso do subplot. Os comandos para traçar os gráficos são: >> bar3(mes.prod) >> title('Gráfico da produção') Gráfico da produção 300 250 200 150 100 50 0 1 2 3 4 5 6 7 8 9 10 11 12 7.b) .b) ou pie3(x.3. Gráficos tipo torta Os comandos pie ou pie3 permitem gerar um gráfico de torta a partir dos valores armazenadas em ou vetor: pie(x.2.Mês Prod. Para ilustrar a utilização das diversas formas de gráfico de barras disponíveis. Jan 200 Fev 220 Mar 230 Abr 80 Mai 90 Jun 150 Jul 220 Ago 230 Set 225 Out 275 Nov 280 Dez 285 Fazer uma representação da produção ao longo do ano com gráfico de barras. Os vetores de dados são: >> mes = 1:12.

2.8: >> prod = [ 200 220 230 80 90 150 220 230 235 275 280 285 ]. >> pie3(x. b(end)=1. (x2.onde x é o vetor de dados e b é um vetor booleano indicando os elementos que devem ser destacados (=1) ou não (=0).'str') onde x.4.e. e assim sucessivamente.y. vamos traçar um gráfico tipo torta com aparência 3-D utilizando-se os dados armazenados no vetor x.b) Neste caso. Exemplo 7. Este comando plotará os pontos (x1. y e e são vetores de mesma dimensão. >> b = zeros(1. A “string” str define as características do gráfico utilizando a mesma codificação já apresentada.y1) com barra de erro em torno do ponto de -e1 até +e1.y2) com barra de erro em torno do ponto de -e2 até +e2. A única diferença ente estes dois comandos é a aparência do gráficos (2-D ou 3-D).12). destacando-se o mês de maior produção. Exemplo 7.10: .9: Traçar um gráfico tipo torta com os dados do Exemplo 7. 11% 8% 11% 9% 9% 9% 3% 9% 4% 6% 9% 11% 7. Gráficos com barras de erro Para traçarmos um gráfico incluindo barras de erro na indicação dos pontos utilizamos o comando errorbar: errorbar(x. .

5 3.3.5 ].Traçar um gráfico da curva de aquecimento do Exemplo 7. E. traçamos o gráfico.0 1.7 41.5 2.0 0.0 2.9 51.8 32. com quadrados verdes: >> errorbar(t.5 44. Os pontos da curva de aquecimento são: >> t = [ 0. 7.6 48.2 46.T.e.1.0 3.5 4.1 ]. Definimos o vetor de erros considerado: >> e = ones(size(t))*e.6 38.0 28.3 35.0 4.'gs') >> title('Curva de aquecimento') >> xlabel('Tempo (h)') >> ylabel('Temperatura (ºC)') C urva de aquecimento 55 50 45 Temperatura (ºC ) 40 35 30 25 20 -1 0 1 2 Tempo (h) 3 4 5 Observação: Uma lista completa de todos os gráficos especiais 2-D disponíveis no MATLAB pode ser encontrada através do comando help especgraph. incluindo uma representação do erro da medida de ±1 ºC.5 1. Gráficos 3-D . >> T = [ 25.

Os gráficos 3-D no MATLAB podem ser traçados de forma equivalente que os gráficos 2-D tradicionais, permitindo gerar curvas e superfícies no espaço com facilidade. Os comandos apresentados anteriormente para a manipulação de gráficos e gerenciamento de janelas também podem ser aplicados para os gráficos 3-D apresentados ao longo desta Subseção.

7.3.1. Traçando gráficos de curvas Para traçar o gráfico de uma curva no espaço utiliza-se o comando plot3, de forma semelhante ao comando plot. Em sua forma geral, temos:
plot3(x1,y1,'str1',x2,y2,'str2',...)

onde x1,y1,z1,str1 são as informações da primeira curva; x2,y2,z2,str2 são as informações da segunda curva, e assim sucessivamente.

Exemplo 7.11: Traçar o gráfico da função parametrizada: x ( t ) = t ⋅ cos( t ) , y( t ) = t ⋅ sen( t ) e
z ( t ) = t para t ∈[0, 20π ] .

Os vetores para a geração da curva são:
>> t = 0:0.01:20*pi; >> x = t.*cos(t); , y = t.*sin(t); , z = t;

O gráfico resultante é:
>> title('Curva em espiral') >> xlabel('Eixo x') , ylabel('Eixo y') , zlabel('Eixo z')

70 60 50
Eixo z

40 30 20 10

0 100 50 0 -50 Eixo y -100 -100 0 -50 Eixo x 50 100

7.3.2. Traçando gráficos de superfícies O procedimento para traçar o gráfico da superfície de uma função
f :ℜ 2 → ℜ envolve inicialmente a criação de uma malha de pontos cobrindo a

região do domínio do gráfico. Esta malha de pontos pode ser gerada através da função meshgrid, que recebe dois vetores relativos às coordenadas independentes do gráfico e gera duas matrizes, cujos os pares de elementos correspondentes formam a malha desejada para a geração da superfície. A sintaxe do comando é:
[X,Y]=meshgrid(x,y)

onde x e y são os vetores das coordenadas independentes; e X e Y são as matrizes formadas. Uma vez que a malha foi criada, na forma de duas matrizes, deve-se calcular o valor da função em cada par de elementos, armazenando-se então o resultado em uma terceira matriz, relativa à variável dependente. Após as três matrizes que descrevem a superfície foi gerada, o MATLAB possui uma variedade de comandos diferentes para traçar o gráficos em diferentes formas de apresentação. Os dois comandos básicos são:
mesh(X,Y,Z) surf(X,Y,Z) waterfall(X,Y,Z)

onde X,Y e Z são as matrizes que representam os pontos da superfície. Para explorar as diferenças entre cada ferramenta de apresentação gráfica 3-D, vamos analisar o exemplo a seguir.

Exemplo 7.12: Traçar o gráfico da superfície da função z ( x , y ) = x 2 + y 2 para x ∈[−11] e ,
y ∈[−11] . ,

O primeiro passo é definir vetores de valores nas variáveis independentes que originarão a malha de pontos que deve cobrir a região:
>> x = -1:0.05:1; >> y = -1:0.05:1;

O próximo passo é gerar as matrizes que formam a malha:
>> [X,Y] = meshgrid(x,y);

Uma vez que a malha foi criada, devemos calcular o valor da função em cada ponto da malha, utilizando-se para isto operações elemento a elemento:
>> Z = X.^2 + Y.^2;

De posse das três matrizes que representam os pontos por sobre a superfície, geramos o gráfico utilizando o comando mesh.
>> mesh(X,Y,Z)

O gráfico resultante é:

hidden (alterna os estados).Z) . >> surf(X.Y. semelhante ao comando mesh.Note no gráfico acima que as cores são alteradas dependendo do valor da função objetivo. mas com os espaços entre as linhas são coloridos. (opaco). Veja o que acontece: >> hidden hidden off Uma outra opção de apresentação gráfica é o comando surf. Observe também que a superfície é “opaca”. Esta característica pode ser alterada através dos comandos hidden on (transparente).

Y.Z).Y. mesh(X. surfc(X.Z) e surfnorm(X. .Z).Z).Z). >> shading interp Deixamos ao leitor interessado um passeio através das formas de apresentação gráfica derivadas dos comandos apresentados aqui: meshc(X. waterfall(X.Y.Z).A textura da superfície pode ser alterada através dos comandos shading faceted (“default”). surfl(X.Y.Y. shading interp ou shading flat.Y.

Z.Y.h] = contour(X. e cor é o código opcional identificando a cor das curvas de nível. .n.Y.Z.'cor') representadas através dos ou contourf(X.Z) Aproveitando vamos também digitar os comandos necessários para indicar os valores da função ao longo das curvas de nível: >> [C.Z. n é o número opcional de curvas de nível a serem traçadas.05:1.n.Y. >> [X.^2.3. >> Z = X.n.Y e Z são as matrizes da superfície.y).Y.Y.^2 + Y.Y. A diferença entre os comandos é a forma de apresentação: contour3 coloca as curvas de nível ao longo da superfície. Caso as matrizes do Exemplo 7. .'cor') contour3(X.12: Traçar o gráfico das curvas de nível da função z ( x . >> contour(X. y ) = x 2 + y 2 para x ∈[−11] e y ∈[−11] .n. .Z. As curvas de nível no MATLAB podem ser seguintes comandos: contour(X.7. y = -1:0. Traçando gráficos de curvas de nível Curvas de nível indicam os pontos da superfície que possuem um mesmo valor para a função.'cor') ou ou pcolor(X. >> clabel(C.Y] = meshgrid(x. contour coloca as curvas de nível no plano.h) O resultado final é: .Z). vamos gerar novamente estes dados: >> x = -1:0.3. Exemplo 7. contourf é semelhante a contour mas colorindo o espaço entre as curvas e pcolor representa as curvas de nível através de um mapa de cores. Vamos traçar as curvas de nível com o comando contour.05:1.'cor') onde X.13 tenham sido apagadas.

Y.1 0. 0 .6 0 . 1 1 1 0 . .2 0 .4 0.8 1 -0. 8 4 1 .2 0 .8 -1 -1 1.4 -0.6 0 .6 0 .4 0. 0 .8 6 1.5 1 1 .2 1.6 0 .4 6 1 .4 0 .4 1 -0.6 0.4 1 2 1. 0.6 0.Z) >> shading interp 0. 4 0. 2 6 1 0 .8 0 .2 0 .2 0 0. 1 1 1 0.6 8 1.6 0 .5 O resultado utiizando um mapa de cores é (mudando a textura para shading interp): >> pcolor(X.8 0 .2 -0. 2 1 .8 . 2 0 .4 0 -0. 0.8 0.8 4 1 . 1 . 6 1. 6 4 0.8 0 .

m” (os arquivos de comando também são denominados “m-files”). deve-se apenas digitar o nome do arquivo na linha de comando. é possível utilizar os seguintes comandos: path(path.1. aplicamos todos as instruções ao MATLAB através da linha de comando. sendo reconhecidos pela extensão “. Para executar um arquivo de comandos. indicar o subdiretório de trabalho através da barra de ferramentas. Como opção “default”. todos os comandos devem ser novamente digitados. o MATLAB possibilita a criação de arquivos de comandos (“script files”). Para esta tarefa. é necessário antes da execução do arquivo.'endereço_do_subdiretório') ou cd endereço_do_subdiretório ou. é possível inclusive acionar outros arquivos de comandos. No entanto. os arquivos de comandos podem ser escritos em um editor de texto embutido no próprio MATLAB. pois requer a introdução dos comandos passo a passo e. INTRODUÇÃO À LINGUAGEM MATLAB O objetivo deste Capítulo é apresentar como as rotinas de programação em MATLAB podem ser desenvolvidas. Estes arquivos correspondem às listagens de programa utilizadas pelas linguagens de programação convencionais. descrevendo o conjunto de passos necessários para a criação de um arquivo de comandos (“script file”) em MATLAB. . Arquivos de comandos são arquivos texto onde é armazenada uma seqüência qualquer de comandos. São apresentados também os principais comandos normalmente utilizados para direcionar o fluxo da informação ao longo do programa (comandos condicionais e comandos de repetição). Através de um arquivo de comandos. indicar ao MATLAB em que subdiretório se encontra o arquivo. Arquivos de comando Até este ponto. caso seja necessário repetir um procedimento.8. No entanto. então. de maneira que estes podem ser executados quando necessário. Para permitir a realização de tarefas mais complexas. 8. torna-se óbvio que para resolver problemas maiores esta forma de interface não pode ser utilizada.

.Passo 3 Gravar o arquivo de comandos com um nome apropriado. .Passo 4 Antes de executar o programa pela primeira vez. . Os comandos devem ser escritos linha por linha. passo a passo. Caso o programa não seja salvo.Passo 1 Através da barra de menu: File > New > M-file abrir um arquivo no editor de texto do MATLAB. o MATLAB continuará executando a versão anterior da rotina. . Observação: Após qualquer alteração realizada no programa.Passo 5 Passar para a linha de comando do MATLAB e digitar o nome do arquivo de comandos (sem a extensão). o arquivo deve ser novamente salvo. o MATLAB ignora o que estiver escrito.Passo 2 Escrever neste arquivo os comandos do programa. A direita deste caracter. basta apenas apertar simultaneamente as teclas [ Ctrl ] e [ C ]. Para facilitar a leitura posterior da listagem de programação é possível incluir comentários através do caracter %. informar ao MATLAB onde seus arquivos de comandos estarão localizados (barra de ferramentas ou comandos cd ou path). Segue abaixo um exemplo de uma programa bem simples escrito em linguagem MATLAB. ou quando escritos na mesma linha separados por vírgula. o procedimento básico para a criação de um programa: . Caso seja necesso interromper o programa durante a sua execução.Abaixo está apresentado. .

Exemplo 8. % Cálculos Tc=(Tf-32)/9*5. .1. destacando-se as características específicas do seu emprego em um ambiente MATLAB. Comandos condicionais Os operadores relacionais utilizados pelo MATLAB estão apresentados na próxima tabela. Comandos de fluxo Uma vez que os comandos de fluxo (comandos condicionais e comandos de repetição) são largamente utilizados em qualquer linguagem de programação. clear all % Entrada de dados Tf=input('Digite a temperatura em graus Fahrenheit'). Tc disp('Temperatura em Kelvin') . serão apresentados aqui apenas uma breve descrição de sua sintaxe. Tk=Tc+273.1: Criar um programa para efetuar a conversão de temperaturas °F → °C e K % Programa para a conversão de temperaturas % Inicialização clc . % Resultado disp('Temperatura em graus Celsius') .2.15.2. 8. Tk 8.

A sintaxe deste comando em sua forma mais simples é: if <condição> subrotina executada se <condição> for verdadeira end onde condição é uma expressão fornecendo um resultado do tipo verdadeiro (=1) ou falso (=0).Operador = = ~= > Significado igual diferente maior Operador >= < <= Significado maior ou igual menor menor ou igual Para expressar condições mais complexas são utilizados os seguintes operadores lógicos: Operador & | ~ xor ~ Significado and / e or / ou not / não exclusive or/exlcusivo ou not / não O principal comando condicional disponível no MATLAB é o comando if. Este comando permite controlar o fluxo de um programa de acordo com o resultado de uma ou mais expressões booleanas (condições verdadeiro ou falso). Este comando também pode aparecer nesta forma: if <condição> subrotina executada se <condição> for verdadeira else .

.subrotina executada se <condição> for falsa end Finalmente. que permite direcionar o fluxo de um programa de acordo com a comparação do valor de uma expressão com diversas opções alternativas. else subrotina nenhuma executada das se condições anteriores for verdadeira end Exemplo 8. Segue abaixo um exemplo de sintaxe utilizando este comando: switch <expr> . if T>Tcrit disp('Superaquecimento') else disp('Temperatura controlada') end Um outro comando condicional utilizado no MATLAB é o comando switchcase. o comando if pode aparecer junto com o comando elseif: if <condição1> subrotina executada se <condição1> for verdadeira elseif <condição2> subrotina executada se <condição2> for verdadeira elseif <condição3> subrotina executada se <condição1> for verdadeira ..2: Este é um exemplo de uma rotina empregando o comando if.

Exemplo 8. a rotina indicada pelo termo otherwise será executada.. executando a rotina correspondente.case teste1 subrotina executada se teste1 for verificado case {teste2.2: Este é um exemplo de uma rotina empregando o comando switch-case. Comandos de repetição O comando for permite que uma rotina do programa seja executado um número pré-determinado de vezes.Z) case 2 surf(X.teste4} subrotina executada se algum dos testes for verdadeiro otherwise subrotina executada se nenhum dos testes for verdadeiro end O comando switch-case avalia se expr==teste1. Em caso contrário. A sintaxe do comando é: for var = matriz subrotina end .Z) otherwise disp('Gráfico não executado') end 8.teste3.2.Y. ou expre==teste3. ou expr==teste2.2. etc.Y. switch opcao case 1 mesh(X.

j) = A(i. A sintaxe do comando é: while <condição> subrotina end Enquanto <condição> for verdadeira.j). end end Observação: Apesar do exemplo anterior estar computacionalmente correto.3: Vamos apresentar um exemplo de rotina para calcular a soma de duas matrizes utilizando o comando for.2) C(i. estruturas como esta devem ser evitadas. O comando while é um comando de repetição que permite que uma rotina do programa seja executada até que uma certa condição seja alterada.j) + B(i.g. Exemplo 8. Na prática.1) for j = 1:size(A. o comando for é usualmente utilizado com matriz na forma de um vetor do tipo lim_inf:inc:lin_sup. com a variável var assumindo o valor da coluna correspondente a cada repetição.4: . operações elemento a elemento). conforme está ilustrado no exemplo a seguir: Exemplo 8. a subrotina será executada seqüencialmente. No Matlab. Sempre que possível deve se buscar a “vetorização” dos programas desenvolvidos..A subrotina é executada para cada coluna da matriz. for i = 1:size(A. uma rotina baseada em comandos for é muito mais lenta que a rotina equivalente utilizando as ferramentas de processamento matricial (e.

temperatura e volume). a partir da temperatura e do volume. A função deve ser criada em um arquivo exclusivo para ela. As funções recebem um ou mais argumentos. gerando na saída um ou mais resultados. Finalmente. estas podem ser empregadas quantas vezes forem necessárias em um ou mais programas diferentes. p=R*T/V. a partir destes argumentos.m). end 8.Este é um exemplo de uma rotina empregando o comando while. while abs(x1-x0)>1e-4 x0 = x1. O arquivo de função proposto possui a seguinte estrutura: function p=eq(T. eq. na prática.3. Todo arquivo de função deve começar pelo comando function. e. procedem a execução de um conjunto de comandos. Ao lado deste comando. Com o objetivo de apresentar. operações matemáticas e comandos que permitirão a função determinar o resultado da saída. a pressão) igualado ao nome da função (eq) seguido pelos argumentos de entrada (T. segundo a equação de estado dos gases ideais. considere a criação de uma função para o cálculo da pressão de um gás.V. A grande vantagem das funções é que. uma vez definidas. Arquivos de função Funções (“function files”) são uma classe especial de arquivos de comandos. . a função deve ser gravada em um arquivo necessariamente com o nome declarado inicialmente (no nosso caso. como deve ser montado um arquivo de função. Seguem-se então o conjunto de definições.V) R=8314. x1 = g(x0). escreve-se a variável interna de saída da função (no nosso caso p. respectivamente.

no entanto. C. e. global A B C . continuam armazenadas no “workspace”. Tente. as operações matemáticas e os comandos utilizados no interior da função só reconhecem as variáveis internas à função. Variáveis locais e globais Quando um arquivo de comandos convencional é executado. introduzindo todos os valores numéricos necessários para o cálculo da função. etc. agora. O comando global deve ser incluído na função e também no arquivo de comandos ou funções onde as variáveis globais aparecem. utilizar a função de cálculo da pressão de um gás (eq) na linha de comando. Mas este pode não ser o procedimento mais prático sempre. onde A. Neste caso utiliza-se o comando global. Por exemplo.. Caso seja necessário. calcula o valor da pressão nas coordenadas consideradas de temperatura e volume. e também não interferem com as demais variáveis externas.3. As variáveis definidas no interior de uma função (variáveis locais) não são armazenadas após a execução da função. Da mesma maneira.4). operam de maneira diferente. . em um arquivo de comando qualquer ou até mesmo em outra função. as variáveis envolvidas são manipuladas ao longo do programa. ou definindo-os no interior da própria função. é possível nunca usar o comando global. executar um arquivo de comandos e depois digitar o comando who. como exemplo. 8. Em teoria.É possível. no final. Em um programa onde um grande número de parâmetros é calculado através de um arquivo de comandos principal e depois estes parâmetros são utilizados em várias funções diferentes. são os nomes das variáveis a serem exportadas. o comando: PT = eq(273..22. é possível permitir que uma função compartilhe uma ou mais variáveis externas. armazenando o resultado na variável PT. torna-se mais prático “distribuir” estes parâmetros através do comando global. Funções.15. ou através do argumento. B.1.

Tr.a/V^2.Tc2] = eos(T2.5: A função abaixo (arquivo eos. a função deve ser chamada da seguinte forma: >> P2 = eos(T2. Para gerar como saída o cálculo de uma pressão hipotética P2 a partir das coordenadas T2 e V2. a sintaxe da chamada seria: >> [P2. .Exemplo 8. assim como as coordenadas reduzidas do gás.Tr2.Pr. b = R*Tc/8/Pc.V) global Tc Pc R a = 27*R^2*Tc^2/64/Pc. P = R*T/(V-b) .V2) Caso seja necessário gerar todas as saída.m) calcula a pressão através da equação de van der Waals.V2) . function [P.Pr2.Tc] = eos(T.

Sign up to vote on this title
UsefulNot useful