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

3. Gráficos 2-D especiais 7. Gráficos de barra 7.2. Gráficos 3-D 7.2.1.3.1. Arquivos de comando 8.7.3.3.2.2. Histogramas 7.2.1.2.3.2.1. INTRODUÇÃO À LINGUAGEM MATLAB 8.2.1.1.1.1. Traçando gráficos 7.3.3. Comandos de repetição 8. Comandos de fluxo 8. Arquivos de função 8.2.3.4. Variáveis locais e globais .3. Traçando gráficos de curvas 7.2.2. Comandos condicionais 8. Gráficos tipo torta 7. Traçando gráficos de curvas de nível 8. Gráficos com barras de erro 7. Gerenciando janelas gráficas 7. Traçando gráficos de superfícies 7.2.1. Manipulando gráficos 7.

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

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

.

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

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

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

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

4159 31. 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. 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 .41592653589793 3.1: >> pi ans = 3.1416e+001 Descrição “default”. Os exemplos abaixo ilustram a forma de apresentação numérica do MATLAB.1416 >> pi/pi ans= 1 >> pi/10000 ans= 3. Formatos numéricos Formato format format short format long format short e Expressão 10*pi 31. Caso os algoritmos significativos de um número estejam fora desta faixa. este será apresentado em notação científica. Exemplo 3. Na tabela seguinte estes resultados são apresentados.3.4159 31. ilustrando-se como a expressão 10π aparece na tela de acordo com o formato escolhido. NÚMEROS. 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. EXPRESSÕES ARITMÉTICAS E FUNÇÕES 3. as casa decimais não são apresentadas).1.

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

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

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) Descrição decomposição em fatores primos verificação de número primo (= 1. 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) besselh(x.y) besseli(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 .y) bessely(x.y) lcm(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.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.y) besselk(x. 1 ou 0) Funções relativas à teoria dos números Função factor(x) isprime(x) primes(x) gcd(x.

. Observação: Em uma expressão aritmética.beta(x. as funções são calculadas em primeiro lugar.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.

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

A atribuição é realizada. por exemplo. Exemplo 4. a mensagem é exibida na tela. depois.3026 Mas se digitarmos: >> exponencial=exp(1). Observação: Os valores das variáveis geradas no MATLAB ficam armazenadas no que se convencionou denominar “MATLAB workspace”. Quando o computador recebe este comando. basta apenas que seja colocado o símbolo . 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.atribuição apareça na tela. e. esta . 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'). Se o usuário digitar uma expressão aritmética. como. 4. 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). ao final do comando. mas nada aparece na tela.2. em cálculos intermediários ao longo de um programa.2: Ao digitarmos na linha de comando: >> Logaritmo=log(10) Aparecerá na tela logo em seguida: Logaritmo = 2. o valor digitado é armazenado em variável. espera-se o usuário digitar um dado de entrada. Observação: Quando o valor de uma variável é alterado. Entrada e saída de valores para as variáveis Além dos comandos de atribuição.

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

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.15.O valor da pressão é (bar) : 30 4.3. Exemplo 4. >> V=R*T/P V = 22. Exemplo 4. >> R=8314. >> T=273.15.4116 >> who Your variables are: P R T V Um outro comando semelhante é o comando whos que apresenta a lista das variáveis. >> T=273.6: >> P=1. >> R=8314.7: >> P=1.0133e5. >> V=R*T/P V = 22.0133e5.4116 >> whos Name Size Bytes Class . suas dimensões e classes.

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. >> clear all >> who . >> T=273. É possível também apagar todas as variáveis do “workspace” em conjunto: clear all Exemplo 4.15.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. >> V=R*T/P V = 22. >> R=8314.0133e5.8: >> P=1.

Observação: No desenvolvimento de um código computacional. isto inviabilizará o correto processamento do programa). 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. 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.Agora nenhuma variável aparece. .

1. No entanto. 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. >> A A = 1 -1 2 5 Neste caso.5. .2)=2.1)=-1. 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.2:  1 2 Efetuar a seguinte atribuição: A =    − 1 5 . como está ilustrado no exemplo abaixo (vamos considerar que um vetor é um caso particular de uma matriz): Exemplo 5. A(2. .2)=5. cada elemento da matriz é identificado de acordo com o seu par de índices. PROCESSAMENTO MATRICIAL A capacidade de processamento matricial é uma característica fundamental do MATLAB.1)=1. A(2.1:  1 2 Efetuar a seguinte atribuição: A =    − 1 5 >> A(1. A(1. permitindo definir. 5.

1416 9. Observe no próximo exemplo.0063 . Operações matriciais 5.8696 31.>> A=[ 1 >> A A = 1 -1 2 . Operadores de álgebra linear É possível realizar operações matriciais utilizando o MATLAB com a mesma facilidade com que as linguagens tradicionais operam escalares. -1 5 ]. Os operadores disponíveis para os cálculos envolvendo matrizes são aqueles tradicionalmente utilizados na álgebra linear. 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). 2 5 Como pôde ser observado no exemplo.2. . pi^2 . a utilização desta forma de sintaxe para a entrada de dois vetores: Exemplo 5. pi^3 ] d = 3.1.3: 2  Efetuar as atribuição ao lado: c =   e d = [ π π 2 0  >> c=[ 2 c = 2 0 >> d=[ pi .2. os colchetes indicam a existência de uma matriz. 0 ] π3 ] 5.

Sejam duas matrizes A e B que são empregadas para gerar uma matriz C.4: Sejam as seguintes matrizes e vetores: 1 4 A= . -4 ]. Podemos agora realizar as operações desejadas: >> A*B ans = 14 -6 . 0 . 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 . Observe que as duas formas de atribuição utilizadas para as matrizes A e B são equivalentes e igualmente válidas. 5 ]. >> c=[ 2 . vamos aplicar todas as atribuições: >> A=[ 1 . 4 . 0 5  2 − 2  B= . >> B=[ 2 -2 3 -1 ]. >> d=[ 2 . 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.B C = A * B C = A’ Descrição Cij = Aij + Bij Cij = Aij − Bij Cij = ∑ Ail Blj Cij = A ji Exemplo 5. 3 . 3 ].

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

entramos com a matriz A: >> A=[ 1 A = 1 3 2 4 2 .6: 1 2 Seja a seguinte matriz quadrada: A =   3 4 Determinar a inversa. o traço e o posto da matriz.0000 -0. 3 4 ] A inversa da matriz é calculada por >> inv(A) ans = -2.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.0000 1.0000 0 1.5000 Observe que. o determinante.0000 0.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: . os autovalores. Inicialmente. de acordo com a definição de inversa: >> A*inv(A) ans = 1.5000 1.

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

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

3.^10 ans = 1024 59049 1048576 Caso uma função matemática convencional seja aplicada a uma matriz. 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. seria preciso preparar uma biblioteca de rotinas específica para estas operações. através de uma linguagem de programação convencional. incluindo laços envolvendo um ou mais comandos de repetição encadeadas. >> sqrt(a) ans = 1.ans = 4 8 >>d. Exemplo 5.7321 2. 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.0000 Observação: Para gerar resultados equivalentes às diversas rotinas de processamento matricial apresentadas.8: >> a=[ 1 2 3 4 ]. esta será processada de acordo com o conceito elemento a elemento. .4142 1.0000 1.

ones(2) ans = 1 1 ans = 1 1 1 1 1 1 1 1 O comando zeros nas formas zeros(I. zeros(1.J) ou eye(I). o comando ones(I) gera uma matriz quadrada de dimensão(I.O comando ones(I. Exemplo 5. Alternativamente.J) e zeros(I) atuam de forma similar.11: >> eye(2) .10: >> zeros(3) . Exemplo 5.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.3) ans = .9: >> ones(2. Exemplo 5. eye(2. mas geram matrizes de zeros.I).J) gera uma matriz de dimensão IxJ contendo 1 em todas as posições.

1364 0.9218 0.6154 ans = -0.7919 0.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). O comando randn é equivalente a rand.10) .1763 Seja x um vetor qualquer. randn(1.1832 -0.7382 0.1867 0. utiliza-se o comando rand.13: >> diag([1.2.12: >> rand(1.7258 -0. Exemplo 5.J) e rand(I). .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.5883 2. Exemplo 5. nas formas rand(I. diag(x) gera uma matriz com os elementos do vetor x na diagonal principal. mas gera números aleatórios com distribuição normal padronizada (média zero e variância unitária).10) ans = 0.

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.5. 4 0 ] . 5.1) ou size(A. size(M. é possível manipular matrizes e vetores de várias formas facilitando a sua utilização nas rotinas de programação.14: >> M = [ 1 2 .1) .4.1. size(M.2) ans = 3 ans = 2 . Manipulação de matrizes Através de recursos de sintaxe especiais disponíveis no MATLAB. Este comando também pode aparecer nas formas: size(A. v = [ 2 3 1 4 0 0 ] M = 1 3 4 v = 2 3 1 4 0 0 2 4 0 >> size(M) . 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.2) A primeira indica apenas o número de linhas e a segunda indica apenas o número de colunas da matriz. 3 4 .4.

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. v2 = 4:-0.16: >> v1 = 2:2:10 .5:3 v1 = 2 4 6 8 10 . Exemplo 5. Geração de vetores e matrizes A construção de certos vetores. cujos elementos obedecem a um padrão crescente.3 ans = 2 >> length(v) ans = 6 5.4.2. pode ser realizada de forma rápida.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. Neste caso. utilizando-se uma sintaxe da forma: vetor = lim_1 : lim_2. Este comando gera um vetor linha cujos elementos formam uma seqüência de números inteiros entre lim_1 e lim_2. Exemplo 5.

neste caso.7500 1. Exemplo 5. 6 .2500 3. v = [ 3 . mas necessariamente coluna. 4:-1:1 ] M = 1 4 2 3 3 2 4 1 Uma outra forma de criar vetores com padrão crescente.0000 3.18: >> u = linspace(0. Este comando transforma um vetor x linha ou coluna em um vetor y com os mesmos elementos de x.lim2. envolve a utilização do comando: linspace(lim1.17: >> M = [ 1:4 . 7 ].N) Este comando gera um vetor com N componentes entre lim1 e lim2.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. . .5) u = 0 0. podemos utilizar a seguinte estrutura: y = x(:).3.19: >> u = [ 1 2 3 ].0000 Através da utilização deste recurso também é possível montar matrizes: Exemplo 5.5000 2.5000 3.v2 = 4. Exemplo 5.

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

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

3) para o valor 4: >> M0(3.:) = [ 1 2 3 ] M0 = 1 2 9 2 4 2 -3 0 4 5 3 -3 4 3 6 .4. Exemplo 5.23: Seja a matriz M0 gerada no procedimento abaixo >> M0 = [ 2 3 5 .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.5. 9 0 8 . vamos alterar o valor do elemento M(3. 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.4. Inicialmente. 2 4 3 . 2 -3 -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.

4) = 1 M0 = 1 2 9 2 -3 0 3 -3 4 1 0 0 Note que como a matriz era dimensão 3x3. o próprio MATLAB se encarrega de preencher as demais posições coerentes com valores nulos.As duas últimas linhas da matriz serão agora eliminadas: >> M0(4:5. Exemplo 5.4) um elemento.24: >> M = [ 2 3 5 . 9 1 1 ] M = 2 9 9 z=diag(M) z = 3 9 1 5 8 1 .:) = [] 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. 9 9 8 . A função: diag(A) quando aplicada a uma matriz A. ao atribuir na posição (1. gera um vetor coluna contendo os elementos da diagonal principal de A.4): >> M0(1. vamos incluir um elemento unitário na posição (1.

A função: tril(A) opera de forma semelhante mas cria uma matriz triangular inferior. 5. Exemplo 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. 9 9 8 .2 9 1 A função: triu(A) gera uma matriz diagonal superior a partir dos elementos presentes em A.5.25: >> M = [ 2 3 5 .4. Composição de matrizes e vetores . 9 1 1 ] M = 2 9 9 3 9 1 5 8 1 M_u=triu(M) .

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

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

1. O comando cat é semelhante ao comando repmat mas pode ser utilizado para compor matrizes diferentes: cat(dim.B) onde dim é a dimensão ao longo da qual os blocos A e B serão justapostos. 3 7 3 ] M1 = 1 4 M2 = 2 3 3 7 1 3 4 7 7 8 A partir desta matriz.M2(1.M1. construímos as estruturas desejadas: Mat1=cat(2.25 utilizando o comando cat: Inicialmente.A. Mat3=cat(1.M = 1 1 4 9 2 0 >> M_M_M = repmat(M. M2 = [ 2 3 1 .:)) Mat1 = 1 4 Mat2 = 4 7 7 8 2 3 3 7 1 3 .M2) . >> M1 = [ 1 4 7 . 4 7 8 ] .M2) .29: Refazer o Exemplo 5.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. construímos as matriz M1 e M2.M1.M1. Mat2=cat(1. Exemplo 5.

Veja o exemplo a seguir: Exemplo 5.31: >> v = [ 1 4 2 7 5 2 3 5 3 ] v = 1 4 2 7 5 2 3 5 3 .4. disponível no MATLAB. é 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. em caso contrário. a coerência entre as dimensões da matrizes a serem combinadas deve ser garantida. v ] ??? All rows in the bracketed expression must have the same 4 2 3 4 0 number of columns.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.30: >> u = [ -1 3 4 0 ] . 5. o procedimento levará a uma mensagem de erro.6. v = [ 3 4 2 ] u = -1 v = 3 >> [ u . Exemplo 5.

7 5 2 .32: >> M = [ 1 4 2 .col]=find(M>3) lin = 2 1 2 3 col = 1 2 2 2 . 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. é verdadeira (ou seja. 3 5 3 ] M = 1 7 3 4 5 5 2 2 3 >> [lin. foi gerado um vetor linha que indica os índices dos elementos do vetor v para os quais a expressão relacional. = 1).>> u=find(v>3) u = 2 4 5 8 Através do comando find. presente no argumento. Caso seja necessário extrair os elementos que atendem a condição proposta.

[].dim) ou max(x. [y. col(2)) . o comando find gerou os vetores lin e col.dim) . O vetor lin indica as linhas e o vetor col indica as colunas dos elementos que atendem a condição estabelecida.y) gera uma matriz. além do seu índice (saída i). 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. composta pelos menores/maiores elementos nas duas matrizes ao longo das posições correspondentes. min(x. surgiu uma estrutura da forma [lin. os índices dos elementos que atendem a condição são (lin(1) . 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. etc. col(3)).y) ou max(x.Neste caso.[]. É importante notar que. min(x.i] = min(x) ou [y.col]=find(M>3). col(1)) . não indicando a justaposição dos vetores lin e col.i]=max(x) indica o valor da menor/maior componente do vetor x (saída y). ((lin(2) . ((lin(3) . com a mesma dimensão das matrizes x e y. neste caso. Dois outros comandos de pesquisa bastante úteis são os comandos min e max. Ou seja.col] corresponde à saída fornecida por uma função através de dois componentes. a sintaxe [lin.

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

M(:. Exemplo 5.:.1) = [ 2 4 1 .2) = 9 2 1 1 4 3 Vamos apresentar agora. Finalmente.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. Montamos a matriz através das introdução das duas páginas: >> M(:.34: Vamos entrar com uma matriz de dimensão 2x3x2.35: Seja uma matriz M de dimensão 2x2x2: >> M(:.:.:.:. alguns exemplos de manipulação: .:. >> M(:.2) = [ 9 1 .2) = [ 3 1 8 . apresentamos o resultado na tela: M(:. 3 3 ].1) = [ 0 4 . 3 5 6 ].:. 2 0 9 ].:.:. .1) = 0 3 M(:.1) = 2 3 M(:. 2 1 ] M(:.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. Veja o exemplo abaixo: Exemplo 5.

:) ans(:.>> M(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. zeros. Exemplo 5.1) = 0 ans(:.1.:. 4 5 6 ] M = 1 4 2 5 3 6 >> Mat1 = repmat(M1. eye.:) ans(:.1) = 1 2 3 .36: >> M = [ 1 2 3 .1) = 0 3 ans(:.2]) Mat1(:.:.2) = 9 >> M(:.1) ans = 0 3 4 3 1 4 As funções ones.[1. deve ser necessariamente utilizada a sintaxe apresentada no exemplo abaixo).:.:.:. 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. rand.2) = 9 2 >> M(:.:.

1) = 2 5 ans(:. .2) = [ 9 1 . 2 1 ] M(:.:. M(:.2) = 11 3 6 5 1 1 4 3 .1) = 0 3 M(:. 3 3 ].:.M) Mat2(:.M. estes podem ser aplicados para as “páginas” bidimensionais.4 5 6 Mat1(:.:.1) = [ 0 4 .:.2) = 1 4 2 5 3 6 Note que ambas as operações forneceram o mesmo resultado.37: >> M(:.2) = 9 2 >> M+2 ans(:.:.2) = 1 4 2 5 3 6 >> Mat2 = cat(3.:. Exemplo 5.:. Embora os operadores de álgebra linear não estejam definidos para estas matrizes.1) = 1 4 2 5 3 6 Mat2(:. 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.:.:.

Exemplo 5.^M ans(:. 5. também é possível manipular textos (“strings”).:. 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. Toda “string” ao ser introduzida em uma variável no Matlab deve estar limitada por símbolos ''.4 >> 2.1)*[ 1 .38: >> Mat_char = 'Temperatura no tanque'.1) = 1 8 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. Mat_char = Temperatura no tanque >> size(Mat_char) ans = .2) = 512 4 3 16 8 2 2 >> M(:. Quando uma “string” é armazenada em uma variável. esta variável adquire uma estrutura matricial onde cada caracter da “string” é um elemento da matriz.:. Matrizes de caracteres Apesar do Matlab ser essencialmente um software para processamento numérico.6.

39: >> Mat_char = 'Tempo de fechamento'. Matrizes de caracteres também podem ser manipuladas de forma similar que as matrizes convencionais. >> 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. a “string” foi armazenada como um vetor linha da classe char.1 21 >> class(Mat_char) ans = char Como pode ser observado no exemplo. . conforme está apresentado nos comandos a seguir: Exemplo 5.

2. matrizes celulares ou estruturas.1. 6.1: >> M1(1. Por exemplo. onde cada célula individual pode armazenar elementos de qualquer classe de dados.1. 6. Desta forma. >> M1(1. Como o objetivo destas classes de dados é apenas ordenar a informação disponível. sejam “strings”. matrizes convencionais.1) = { [ 1 2 ] }. embora sejam usualmente utilizadas na forma de um vetor. MATRIZES CELULARES E ESTRUTURAS 6. >> M1(2. .6.2) = { pi }.2. pois um conjunto variado de dados relacionados pode ser agrupado sob uma única variável. Exemplo 6.1) = { eye(2) }. Matrizes celulares podem ser construídas com qualquer dimensão. uma matriz convencional em outra e um vetor em mais outra. uma matriz celular pode armazenar uma outra matriz celular em uma célula. As células de uma matriz são representadas através de chaves { } e indexadas através de ( ). 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. matrizes celulares e estruturas não operam matematicamente (mas o conteúdo armazenado sim). Matrizes celulares Matrizes celulares são matrizes compostas por células. o processamento de informação pode ser facilitado.

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

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

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

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

..var2. Mat_Cel2.Mat_Cel2......M8_2.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 .Mat_Cel3. corresponde a lista de variáveis para a atribuição e Mat_Cel ou Mat_Cel1.) onde var_1....var2.8: >> M8 = { eye(3) .M8_3..] = 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.] = deal(Mat_Cel) ou [var_1. zeros(2) . 30 .var_2... -3 } >> [M8_1. são o conjunto dos conteúdos das células que serão distribuídas ao longos das variáveis Exemplo 6.

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

[ 2 3 ] . [ 3 . Exemplo 6. 4 ] } M11_1 = [1] [2] [1x2 double] [2x1 double] >> M11_2 = { -1 .>> M10{3} ans = 2 -8 -4 -16 Agora. vamos eliminar a última célula: >> M10(end)=[] M10 = [1] [2] [2x2 double] [1x2 double] 6. 2 . [2 3 . M11_2 ] M11 = [ 1] [-1] [ 2] [1x2 double] [ 2] [2x1 double] [ 100] [2x2 double] 6. Enquanto nas matrizes os dados são armazenados em células. A diferença das estruturas consiste na forma de armazenamento de dados. 4 5 ] . 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. 100 } M11_2 = [-1] [2x2 double] [2] [100] >> M11 = [ M11_1 .4. identificadas através de números. 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. 2 . nas estruturas os dados são .2.11: >> M11_1 = { 1 .

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

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

6. ou elementos ou grupo de elementos em um certo campo.14: Este exemplo utiliza a estrutura Duct do exemplo anterior. um conjunto de campos.2. O próximo exemplo ilustra a sintaxe utilizada nestas técnicas: Exemplo 6.number ans = 1 ans = 2 Agora.3. É possível acessar um campo. Extração envolvendo estruturas As técnicas para a extração do conteúdo são similares àquelas utilizadas para matrizes e vetores. >> Duct Duct = 1x2 struct array with fields: number diameter length device O próximo comando apresenta as informações armazenadas no campo number: >> Duct. 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]} .

diameter ans = 5 .O comando abaixo apresenta o conteúdo do primeiro elemento armazenado no campo diameter (diâmetro do duto 1): >> Duct(1).3. Exemplo 6.length ]) O símbolo [ ] presente no comando acima é necessário para colocar as saídas dos campos length em uma matriz. incluir novos campos ou eliminar campos. Alteração de campos Utilizando os mesmos conceitos envolvidos nas matrizes convencionais e celulares. >> Tube.5.3. onde pode ser aplicado o comando sum. etc.diameter = 1. é possível alterar o conteúdo dos campos.diameter ans = 2 Podemos calcular a soma dos comprimentos dos dutos: >> CompTotal = sum([ Duct.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). 6.

.roughness = { 46e-6 }. >> Tube Tube = 1x2 struct array with fields: number diameter length device roughness Finalmente. Tube(2). digitando-se help datatypes na linha de comando. .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. utilizando a função rmfield: >> rmfield('Tube.ans = 3 Vamos introduzir um novo campo com a rugosidade dos tubos: >> Tube(1).

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

0 2.8 32.6 48.0 28. 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 : --. Exemplo 7.5 25.6 48.8 32.0 3. (ºC) 0. vamos alimentar os dados fornecidos através de dois vetores: >> t = [ 0.5 3.2 46.3 35.Caracter .1: Na tabela abaixo há um conjunto de pontos medidos no lento processo de aquecimento de um tanque ao longo do tempo.5 4.0 3.6 38.0 2.0 0.0 1.1 Inicialmente.1 ].5 2.5 3.9 51.5 4.2 46.5 ].0 1.3 35. .5 1.5 1.5 2.0 4.ponto O exemplo a seguir ilustra a utilização do comando plot. >> T = [ 25.5 44.9 51.5 44.0 4.0 0.6 38.7 41. O objetivo deste exemplo é preparar um gráfico que represente os pontos medidos. Símbolo linha contínua tracejado curto tracejado longo Traço .0 28. Dados de aquecimento de um tanque Tempo (h) Temp.7 41.

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

foram preparados gráficos com conjuntos de pontos isolados.4.55 50 45 40 35 30 25 0 0. O exemplo a seguir ilustra esta abordagem.1. na verdade. o conjunto de pontos discretos é plotado.2: Traçar o gráfico da função f ( x ) = [sen( x )]2 cos( x ) para x ∈[0.5 No Exemplo 7.2): >> x = 0 :0. Exemplo 7.5 1 1.5 3 3.4π ] . e depois estes são ligados em seqüência para reproduzir a forma da curva). 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. O procedimento neste caso envolve a utilização do comando plot em conjunto com as operações matriciais elemento a elemento. . também poderia ser aplicado alternativamente o comando linspace. No entanto.5 4 4. Vamos utilizar os recursos de geração de vetores com padrão crescente apresentados anteriormente (Subseção 5.01:4*pi.5 2 2. Além da estrutura de sintaxe utilizada acima. pode ser necessário traçar o gráfico da curva associada ao comportamento de uma função.

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

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

y. 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. Através do comando grid on. 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.[ y .'str'). alterações de características. A identificação do título do gráfico e das escalas pode ser feita.raio. em escala monolog: semilogx(x.'str'). 7. setas. o MATLAB permite que o usuário possa alterar vários dos seus aspectos. No segundo caso. Todos estes comandos seguem a mesma sintaxe geral do comando plot.2.1. inclusão de textos. gerando respectivamente as duas curvas.'str') ou além de coordenadas polares: polar(ang.y. z vetores coluna: >> plot(x.[ y z ]) No primeiro caso. Observação: O Matlab também é capaz de traçar gráficos em escala log-log: loglog(x. dependendo do estado inicial).y.y. dependendo do estado inicial). Vamos apresentar aqui um conjunto de comandos que podem ser utilizados para a manipulação de gráficos. 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. semilogy(x. o vetor da variável independente é combinado com as linhas da matriz. etc. respectivamente. z ]) ou Sejam x. através dos comandos: title('mensagem') . o vetor da variável independente é combinado com as colunas da matriz para gerar as duas curvas. Manipulando gráficos Uma vez que um gráfico foi gerado.'str'). rotação em 3D.>> plot(x.

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

2 Eixo y 0 -0.4 para x ∈[0.6 0.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 .4 -0.8 0.5: Reduzir a área de visualização do Exemplo 7. digitamos: >> axis([ 0 4*pi -1 0 ]) . yinf . Para retornar a sistema de escalas automático utiliza-se axis on.6 -0. ysup ]) onde [ xinf .4 0. xsup .0] .2 -0. Após executarmos o exemplo anterior. Exemplo 7.Gráfico de duas curvas 1 0. xsup . ysup ] são os limites do gráfico a serem visualizados. yinf .4π ] e y ∈[−1.

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

title('Funçao g(x)') >> subplot(2. >> x = 0:0. começando pela primeira. plot(x.z) . e assim sucessivamente). passando no final para a segunda.2.^3. h( x ) = cos( x ) e k ( x ) = [cos( x )]3 para x ∈[0. Finalmente. title('Funçao f(x)') >> subplot(2. title('Funçao k(x)') Gerando assim o gráfico das quatro curvas em uma “matriz” 2x2: . >> y = sin(x).fornecer o número da janela: close(n). Exemplo 7. plot(x. .6: Apresentar as curvas f ( x ) = sen( x ) .3) . Quando uma janela gráfica está ativa.y) . w = cos(x).w) .2) . em separado mas em uma mesma janela gráfica. plot(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).2.2. o comando close all fecha todas as janelas gráficas abertas.2π ] .v) .4) .col. . g ( x ) = [sen( x )]3 . através da divisão da janela gráfica em regiões. plot(x.^3. title('Funçao h(x)') >> subplot(2. utilizando-se o comando subplot: subplot(lin. Vários gráficos podem ser visualizados no MATLAB simultaneamente.01:2*pi.2. v = cos(x). z = sin(x).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. .1) .

5 0 -0.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).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.7: . Histogramas Dada uma certa coleção de valores armazenados em um vetor.2. gera o histograma desta amostra: hist(x. 7. etc.5 0 -0.5 0 -0. gráficos tipo torta.1. o MATLAB também possui várias ferramentas para traçar gráficos especiais como histogramas. o comando hist.Funçao f(x) 1 0. 7. Gráficos 2-D especiais Além dos gráficos 2-D convencionais apresentados.2.5 0 -0.5 -1 0 2 4 6 8 1 0. Exemplo 7. gráficos de barra.5 -1 0 2 4 Funçao h(x) 1 0.5 -1 0 2 6 8 1 0.

y.000 de pontos com distribuição normal padronizada. apresentados está na apresentação do A diferença entre os comandos gráfico (vertical ou horizontal.30) .Traçar o histograma de um conjunto 10.1).y.2. >> x = randn(1e4.'cor') ou bar3h(x.'cor') ou bar3(x. >> hist(x.'cor') ou barh(x.y.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.'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. Exemplo 7. title('Histograma') Histograma 1000 900 800 700 600 500 400 300 200 100 0 -4 -3 -2 -1 0 1 2 3 4 7. bidimensional ou tridimensional).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: .

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

1 ].e. Gráficos 3-D .T. >> T = [ 25.Traçar um gráfico da curva de aquecimento do Exemplo 7.2 46.6 38.5 4.1.0 28. E.8 32.9 51.3 35.0 1.0 2. com quadrados verdes: >> errorbar(t. Os pontos da curva de aquecimento são: >> t = [ 0.3.5 2. Definimos o vetor de erros considerado: >> e = ones(size(t))*e. 7. incluindo uma representação do erro da medida de ±1 ºC.5 1.0 4.5 3.7 41. traçamos o gráfico.0 0.5 44.'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.0 3.5 ].6 48.

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 é:

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

Z).Y.Z). waterfall(X. mesh(X.Y.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.A textura da superfície pode ser alterada através dos comandos shading faceted (“default”).Y.Z) e surfnorm(X. surfc(X. shading interp ou shading flat.Y.Y. surfl(X.Y.Z).

^2 + Y.Z).12: Traçar o gráfico das curvas de nível da função z ( x .Z. Vamos traçar as curvas de nível com o comando contour. As curvas de nível no MATLAB podem ser seguintes comandos: contour(X. 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.05:1. .n. A diferença entre os comandos é a forma de apresentação: contour3 coloca as curvas de nível ao longo da superfície. 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.n. contour coloca as curvas de nível no plano.n.h] = contour(X. Caso as matrizes do Exemplo 7.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. n é o número opcional de curvas de nível a serem traçadas.Y] = meshgrid(x.'cor') representadas através dos ou contourf(X.'cor') ou ou pcolor(X. vamos gerar novamente estes dados: >> x = -1:0.7. >> [X. .Y. .Y.Y. e cor é o código opcional identificando a cor das curvas de nível.13 tenham sido apagadas.n.Y e Z são as matrizes da superfície.'cor') contour3(X.3.Z.Y. >> contour(X.3.^2. Exemplo 7.Z. y ) = x 2 + y 2 para x ∈[−11] e y ∈[−11] . >> clabel(C.Z.'cor') onde X. y = -1:0.05:1.Y.Y.y).h) O resultado final é: . >> Z = X.

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

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

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

2. .2. % Cálculos Tc=(Tf-32)/9*5. Tc disp('Temperatura em Kelvin') . clear all % Entrada de dados Tf=input('Digite a temperatura em graus Fahrenheit'). 8. 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.15. serão apresentados aqui apenas uma breve descrição de sua sintaxe.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') . Comandos condicionais Os operadores relacionais utilizados pelo MATLAB estão apresentados na próxima tabela. Tk 8.Exemplo 8.1. Tk=Tc+273. destacando-se as características específicas do seu emprego em um ambiente MATLAB.

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). 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).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 também pode aparecer nesta forma: if <condição> subrotina executada se <condição> for verdadeira else .

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 .subrotina executada se <condição> for falsa end Finalmente..2: Este é um exemplo de uma rotina empregando o comando if. Segue abaixo um exemplo de sintaxe utilizando este comando: switch <expr> . else subrotina nenhuma executada das se condições anteriores for verdadeira end Exemplo 8.. 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. if T>Tcrit disp('Superaquecimento') else disp('Temperatura controlada') end Um outro comando condicional utilizado no MATLAB é o comando switchcase.

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful