UNINOV A

Manual de Introdução ao MatLab

Manuel Duarte Ortigueira
Professor Auxiliar do Departamento de Engenharia Electrotécnica da Faculdade de Ciências e Tecnologia da universidade Nova de Lisboa

Investigador do UNINOVA

UNINOVA OUTUBRO DE 2000

1.
1.1. 1.2. 1.3. 1.4. 1.5.

INTRODUÇÃO...............................................................................................................4
Sobre o MatLab.......................................................................................................................................................... 4 Obtenção de Informações da Área de Trabalho ............................................................................................... 5 As Facilidades do HELP (Ajuda).......................................................................................................................... 6 Os Ficheiros *.m......................................................................................................................................................... 7 Execução de Programas Externos ......................................................................................................................... 8

2.
2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7.

CARACTERÍSTICAS E OPERAÇÕES BÁSICAS ..................................................9
Declarações e Variáveis............................................................................................................................................ 9 Geração de Vectores ...............................................................................................................................................10 Geração e entrada de matrizes.............................................................................................................................11 Elementos das Matrizes .........................................................................................................................................13 Números e Expressões Aritméticas .....................................................................................................................18 Números e Matrizes Complexas ..........................................................................................................................18 Formato de Saída.....................................................................................................................................................19

3.
3.1. 3.2. 3.3. 3.4. 3.5.

OPERAÇÕES COM MATRIZES ..............................................................................21
Adição e Subtracção................................................................................................................................................21 Multiplicação............................................................................................................................................................22 Divisão.........................................................................................................................................................................24 Exponenciação..........................................................................................................................................................24 Transposição.............................................................................................................................................................24

4.
4.1. 4.2.

OPERAÇÕES ELEMENTO A ELEMENTO............................................................26
Adição e Subtração..................................................................................................................................................26 Multiplicação e Divisão..........................................................................................................................................26

2

4.3. 4.4.

Potenciação................................................................................................................................................................27 Operações Comparativas.......................................................................................................................................27

5. 6.
6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7.

FICHEIROS ".M".........................................................................................................29 GRÁFICOS...................................................................................................................30
Gráficos Bidimensionais ........................................................................................................................................30 Partição da Janela gráfica.....................................................................................................................................33 Estilos de linha, símbolos e cores .........................................................................................................................34 Números Complexos ...............................................................................................................................................36 Escala Logarítmica, Coordenada Polar e Gráfico de Barras ......................................................................37 Traçado de Gráficos Tridimensionais e Contornos .......................................................................................38 Anotações no Gráfico..............................................................................................................................................40

7.
7.1.

PROGRAMAÇÃO .......................................................................................................43
Controlo de Fluxo....................................................................................................................................................43 Ciclo “for” ...........................................................................................................................................................43 Ciclo “while” ......................................................................................................................................................44 Comandos “if” e “break” .................................................................................................................................44 O comando switch-case....................................................................................................................................46

7.1.1. 7.1.2. 7.1.3. 7.1.4. 7.2.

OPERAÇÕES COM O DISCO ...........................................................................................................................47 Manipulação do Disco ......................................................................................................................................47 Importar e Exportar Dados...............................................................................................................................47

7.2.1. 7.2.2.

8. 9.
9.1. 9.2.

VARIÁVEIS E EXPRESSÕES SIMBÓLICAS ........................................................50 APÊNDICE...................................................................................................................53
Funções elementares ...............................................................................................................................................53 Operadores relationais ...........................................................................................................................................55

3

1.

INTRODUÇÃO 1.1. Sobre o MatLab

O MATLAB é um ambiente de computação e desenvolvimento de aplicações, totalmente integrado e orientado para levar a cabo projectos que impliquem cálculos matemáticos complexos e a sua visualização gráfica. O MATLAB integra análise numérica, cálculo matricial, processamento de sinais e visualização gráfica, num meio onde os problemas e as suas soluções são expressas de modo semelhante àquele em que se escreviam tradicionalmente, sem necessidade de fazer uso de técnicas de programação tradicionais. O nome de MATLAB resultou da contracção das palavras "MATrix LABoratory" e foi inicialmente concebido para proporcionar fácil acesso às bibliotecas LINPACK e EISPACK, que representam hoje em dia duas das mais importantes em computação e cálculo matricial. O MATLAB é um sistema de trabalho interactivo baseado na representação matricial. O programa permite realizar de um modo rápido a resolução numérica de problemas, num tempo muito menor do que com linguagens de programação tradicionais como Fortran, Basic ou C. O MATLAB goza na actualidade de um alto grau de implantação em Escolas e Centros Universitários, assim como em departamentos de I&D de muitas empresas industriais. Em ambientes universitários, por exemplo, o MATLAB converteu-se numa ferramenta básica, tanto para os docentes e investigadores, como uma importante ferramenta para a leccionação de cursos universitários, tais como sistemas e engenharia de controle, álgebra linear, processamento digital de imagens, sinais, etc. No mundo industrial, o MATLAB tem sido utilizado como ferramenta de investigação para a resolução de problemas complexos como por exemplo a realização e aplicação de modelos matemáticos em engenharia. As utilizações mais frequentes desta ferramenta encontram-se nas áreas de computação e cálculo numérico tradicional, prototipagem, algorítmia, teoria do controle automático, estatística, análise de séries temporais para o processamento digital de sinais. O MATLAB dispõe também de um amplo conjunto de programas de apoio especializados, denominados Toolboxes, que estendem significativamente o número de funções incorporadas no programa principal. Estas Toolboxes cobrem praticamente todas as áreas principais no mundo da engenharia, destacando entre elas a toolbox de processamento de imagens, sinais, controle robusto, estatística, análise financeira, cálculo matemático simbólico, redes neuronais, lógica difusa, identificação de sistemas, simulação de sistemas dinâmicos, etc. Para ter uma ideia mais precisa das capacidades do MatLab, basta escrever demo na janela de trabalho. Alternativamente, pode clicar em help e escolher examples and demos. O MatLab é muito fácil de usar, sobretudo se se tiver alguns conhecimentos de Fortran ou C, linguagens que lhe serviram de base. Inicialmente desenvolvido para ser usado em DOS, foi adaptado, a partir das versões 4.x, para trabalhar em ambiente Windows e, logo a seguir, para OS (MacIntosh) e LINUX. A abordagem que propomos neste trabalho, permite um fácil acesso às principais características do MATLAB. Deve procurar resolver, cuidadosamente e com atenção, todos os exercícios que propomos, de forma a familiarizar-se com os procedimentos do MATLAB. Faça HELP sempre que necessitar. Para interromper use ‘Control-C’. Pode usar os cursores do teclado para repetir, eventualmente com alterações, instruções dadas anteriormente. Deve usar o comando ‘Clear’ sempre que tenha problemas de memória.

4

1.2.

Obtenção de Informações da Área de Trabalho

Quando se entra no MATLAB, tem-se à disposição uma área de trabalho que, normalmente, fica referida ao directório “bin” do disco onde está instalado o programa. Para evitar encher esta partição com ficheiros que nada têm a ver com o MATLAB original, deve trabalhar-se numa área própria. Para o fazer, há dois procedimentos possíveis: a) Com o rato, ir a File e fazer Set path. Abre-se a janela Path Browser. Depois é só escolher o local de trabalho com o Bowser. Ainda nesta janela, deve fazer File e Save Path. Esta forma de escolha da área de trabalho é vantajosa quando se trabalha sempre no mesmo computador e se tem uma área reservada ao trabalho com o MATLAB. b) Fazer sucessivamente: cd \ para sair da área do MATLAB e depois ir, da forma usual, para o local escolhido. Por exemplo, para a disquete: a:. Tendo fixado o local de referência, estamos em condições de começar a trabalhar. Suponhamos que fazemos as seguintes entradas: » a=2; » b=[1 -1 0 4]; » c=[1 2 3;4 5 6;7 8 9]; » 8-3/5+7; Os exemplos de declarações mostrados acima criaram variáveis que são armazenadas na Área de Trabalho do MATLAB. Fazendo >> who obtêm-se uma lista das variáveis armazenadas num dado instante, na Área de Trabalho: Your variables are: a ans b c % o símbolo “;” inibe o ecoar dos resultados

o que mostra as quatro variáveis geradas em nossos exemplos, incluindo ans (usado quando não existe uma declaração de variável). Uma informação mais pormenorizada mostrando a dimensão de cada uma das variáveis correntes é obtido com whos que, para nosso exemplo, produz: Name a ans b c Size 1x1 1x1 1x4 3x3 Bytes 8 8 32 72 Class double array double array double array double array

Grand total is 15 elements using 120 bytes 5

MEAN(X) is the mean value of the elements in X. STD. devido ao seu caracter geral. As Facilidades do HELP (Ajuda) O MATLAB possui um comando de ajuda (help) que fornece informações sobre a maior parte dos tópicos.1) is [1. MEAN(X. Em qualquer momento. Desta forma um comando pode ser corrigido. 1. de dimensão 3x3 usa 72 bytes e todas variáveis utilizadas um total de 120 bytes. usando as teclas Delete e Backspace. Por exemplo. Analogamente. Por exemplo. 6 . Comandos que tenham sido utilizados anteriormente podem ser obtidos novamente usando as teclas ↑ e ↓. MEAN(X) is a row vector containing the mean value of each column.5 2. Com >> help obtêm-se uma lista desses tópicos disponíveis. um de cada vez. com >> help mean obtemos a seguinte resposta. digite help “nome do tópico”. Mais ainda. → podem ser usadas para se mover o cursor dentro de um comando. Example: If X = [0 1 2 3 4 5] then mean(X. digitando no “prompt” os primeiros caracteres de um comando dado anteriormente e então pressionando-se a tecla ↑. pressionando a tecla ↑ uma vez.Cada elemento de uma matriz real requer 8 bytes de memória. Esta ajuda é pouco útil. COV.5 3. obtém-se o último comando digitado.3.5] and mean(X. MEAN(X) is the mean value of the elements along the first non-singleton dimension of X. Pressionando repetidamente a mesma tecla obtêm-se os comandos digitados anteriormente. Para obter informações sobre um tópico específico. obtém-se o comando mais recente com aqueles caracteres iniciais.2) is [1 4] See also MEDIAN. MAX. assim a nossa matriz A. For matrices. For N-D arrays. MEAN Average or mean value. pressionando-se a tecla ↓. MIN. as teclas ←. repetem-se os comando para a frente.DIM) takes the mean along the dimension DIM of X. For vectors.

um ficheiro com uma lista de valores a usar num dado programa. As categorias gerais de funções matemáticas disponíveis no MATLAB incluem: · Matemática elementar.m" criados a partir das funções intrínsecas. Por isso. com uma extensão .n) for i=m. no caso da função convém ser igual ao nome desta. end x Para correr a função. Estas bibliotecas externas podem ser constantemente actualizadas à medida que novas aplicações vão sendo desenvolvidas. fár-se-ia » inteiros(10.20 x(i)=i. basta fazer File/new/m-file. necessitam de uma declaração function. porque nos dá informação sobre outros tópicos relacionados com o actual.4. faríamos: function inteiros(m. As funções efectuam tal passagem. · Funções especiais.m.m. basta fazer na área de trabalho: » inteiros Se se tratasse de uma função. a menos.30) Convém salientar que os ficheiros a usar devem estar na nossa partição de disco.m. As TOOLBOXES são. Para exemplificar. Para correr o script.m Os ficheiros com extensão “. Este comando abre um ficheiro com o Editor. ficheiros com a extensão ". guarda-se com um dado nome. efectivamente. Estas sub-rotinas dividem-se em dois tipos: scripts e funções.A última linha é muito importante. Os Ficheiros *. 7 . No final.n x(i)=i. As primeiras servem para efectuar um determinado tipo de processamento que não necessita de passar variáveis de e para o programa principal. Para criar ficheiros *. 1. que definamos um caminho para acesso a eles. constitui um script desde que o seu nome tenha uma extensão . consideremos o script inteiros. end x que efectua a listagem dos inteiros de 10 a 20.m for i=10.m” constituem sub-rotinas elaboradas a partir de um conjunto extenso de funções intrínsecas que não podem ser alteradas pelo utilizador. Por exemplo.

· Análise de dados. Este procedimento vem sendo historicamente utilizado em todos as versões do MATLAB como "“prompt”" para indicar a execução de um colando do DOS. rmdir. para carregar um programa. deve-se colocá-lo no início do comando do DOS ou Windows que se deseja executar. faça >> ! Notepad Uma nova janela é aberta. 1. No ambiente Windows.· Matrizes elementares.. entretanto. sendo muito útil nas versões que usavam somente o DOS. · Processamento de sinais. por exemplo: copy. · Matrizes especiais. 8 . · Solução de equações diferenciais. podendo ser utilizado da maneira usual. este comando tem pouca utilidade. . também. format.5. o Notepad do Windows. · Polinómios. ren.. Por exemplo. Execução de Programas Externos O caracter ponto de exclamação “!”. p. · Decomposição e factorização de matrizes. · Equações não-lineares e optimização. Pode-se usar. o Notepad é carregado. mkdjr. sem sair do MATLAB. qualquer comando implícito do DOS. ex. Para entrar com o caractere de desvio no "“prompt”" do MATLAB. · Integração numérica. Nota Importante: para interromper um programa em execução deve fazer CTRL-C.. é um desvio e indica que o restante da linha será um comando a ser executado pelo sistema operacional.

.l/10 + 1/11 . mas a tarefa é realizada.1/8 + 1/9 . Estas saídas de vectores de grandes dimensões contribuem para retardar a execução de um dado comando ou programa. As expressões usadas são interpretadas e avaliadas pelo sistema.2. mas não ecoa esse valor. funções e nomes das variáveis. mas INV(A) é uma função indefinida. Estas são: 9 . digite a expressão >> 10*33/5 que produz ans = 66 Se o último caractere da declaração for um ponto e vírgula ". Todas as funções devem ser escritas em letras minúsculas: inv(A) calcula a inversa de A. no caso seguinte. Por exemplo. pelo que devem ser suprimidas.1/12 + 1/13. que atribui à variável s. As declarações no MATLAB são frequentemente da forma >> variável = expressão ou. Se o nome da variável e o sinal de igual "=". "+" e "-" são opcionais.. As variáveis e funções podem ser formadas por um conjunto de letras e/ou algarismos. Se uma expressão for tão grande que não caiba numa linha. mas o espaço em branco entre "1/7" e ". até um máximo de 19 caracteres (acima de 19 serão ignorados). >> s = l 1/2 + 1/3 1/4 + 1/5 1/6 + 1/7 .." é obrigatório. A avaliação das expressões produz matrizes. simplesmente >> expressão As expressões são constituídas por operadores e outros caracteres especiais... são omitidos.”. Esse procedimento deve ser sempre usado em situações onde o resultado é uma matriz de grandes dimensões que não temos interesse em visualizar. que são então mostradas no ecrã e atribuídas às variáveis para uso futuro. os resultados no ecrã são suprimidos. que representa a palavra answer (resposta). é automaticamente criada. >> . o MATLAB calcula o valor da soma. Por exemplo.1. CARACTERÍSTICAS E OPERAÇÕES BÁSICAS 2.".". Note que os espaços em branco entre os sinais "=". usando “..". assim a e A não são as mesmas variáveis. O MATLAB faz distinção entre letras maiúsculas e minúsculas. pode-se continuá-la na linha seguinte usando um espaço em branco e reticências. Alguns nomes são usados para variáveis predefinidas. Declarações e Variáveis O MATLAB é uma linguagem de expressões. no final das linhas incompletas. uma variável com o nome ans.

9635 -1. As variáveis podem ser redefinidas a qualquer momento. quando adicionado a 1. flops .significa infinito.número de argumentos de saída de uma função.5708 -1. realmax . Serve para permitir a geração de sucessões aritméticas do tipo.unidade imaginária -1 .maior número que o computador pode armazenar.ans . nargout .número de argumentos de entrada de uma função.7854 Columns 8 through 14 10 . Geração de Vectores Os dois pontos ":". é um caractere importante no MATLAB.menor número que o computador pode armazenar.: >> x=-5:2:15 x= -5 -3 -1 >> y=10:-3:-9 y= 10 7 4 1 -2 -5 -8 1 3 5 7 9 11 13 15 >> -pi:pi/8:pi ans = Columns 1 through 7 -3. cria um número maior que 1 no computador.3562 -1.1416 -2. tal não é aconselhável. realmin .1781 -0. i é o incremento. nargin .significa “não é um número”. 2. no entanto.menor número tal que. 0/0. pi . bastando para isso atribuir-lhes um novo valor. >> s=a:i:b onde a é o valor inicial e b o final.armazena o número de operações em ponto flutuante realizadas.número π.variável usada para os resultados. por exemplo.7489 -2. i e j . NaN ou nan . eps . inf . Exs.2. que pode ser real e negativo.

0000 gera um vector linearmente espaçado de 0 a 2.6667.geradas por comandos e funções. Os vectores são armazenados de forma a que os seus elementos ficam indexados aos naturais positivos.-0.criadas em ficheiros ". podemos obter a dimensão de um vector usando a função length: >> length(k) ans = 7 Há outra função que pode ser usada em vez de length.7854 1.1781 1. o valor do incremento é 1.3. .3333 1. contendo 7 elementos. . 2. gerar vectores usando a função linspace. 11 . Em qualquer altura.7489 3.m". Geração e entrada de matrizes As matrizes podem ser introduzidas no MATLAB por diferentes processos: .5708 1. também.2.9635 Columns 15 through 17 2.6667 1.carregadas a partir de um ficheiro de dados externo.3562 2. Por exemplo.1416 Por omissão. Notar que não são permitidos índices negativos ou nulos. . é a função size: >> size(k) ans = 1 7 que informa que se trata de um matriz de dimensões 1x7.3333 0.3927 0.7) k= 0 0.6667 2.digitadas na área de trabalho (listagem explícita dos seus elementos). >> k=linspace(0. No exemplo acima. >> z= -5:4 z= -5 -4 -3 -2 -1 0 1 2 3 4 Pode-se. k(2)=0.0000 1.3927 0 0.

ficando armazenada para uso posterior. >>gera O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em ficheiros binários ou matrizes geradas por outros programas armazenadas em ficheiros ASCII. Por exemplo: >>A = >> >> [1 2 3 456 7 8 9] Outra maneira para introduzir matrizes no MATLAB é através de um ficheiro em formato ‘texto’ com extensão ". A= [1 2 3 456 7 8 9] então a expressão "gera" lê o ficheiro e define a matriz A. As matrizes podem. se o ficheiro "gera.m" contiver estas três linhas de texto. ser introduzidas linha a linha. Por exemplo. 12 . o MATLAB mostra o resultado A= 1 4 7 2 5 8 3 6 9 A matriz A é guardada na memória RAM do computador. colocando-se parêntesis rectos em volta do conjunto de elementos da matriz.m". também. método aconselhado para matrizes de grande dimensão.O método mais fácil de definir pequenas matrizes no MATLAB é usando uma listagem explícita. Os elementos de cada linha da matriz são separados por espaços em branco ou vírgulas e as colunas separadas por ponto e vírgula. Por exemplo.7 8 9 ] e pressionando <enter>.4 S 6. escrevendo a expressão >> A=[ 1 2 3.

>> A=[A. Por exemplo.0000 ou.0000 1.2.log(25) sin(2*pi/3)] A= 0 + 1.0000i 3.8660 -1.0000 -8. Continuando o exemplo. pode-se adicionar outra linha na matriz A usando >>v=[1 -1].0000 3. >> w=[1 -1 0].2) a= -8 Matrizes de grandes dimensões podem ser construídas a partir de matrizes de pequena dimensão.0000 0.2189 1.2189 1.v] A= 0 + 1. por exemplo.0000i -8. >> a=A(1. >> A=[sqrt(-1) (-2)^3.2189 0.8660 Um elemento individual da matriz pode ser referenciado com índice entre parênteses.0000 -1. Elementos das Matrizes Os elementos das matrizes podem ser definidos por qualquer expressão do MATLAB.4.0000i -8.0000 0 13 . >> A=[A w'] A= 0 + 1.8660 -1.0000 0.0000 3.

0000 -1. X(V(n))].2189 0. para a matriz A.0000 selecciona as duas primeiras linhas e todas as colunas da matriz A actual.Matrizes de pequena dimensão podem ser extraídas de matrizes de grande dimensão. .l) produz o resultado 2 5 8 3 6 9 A= 1 4 7 2 5 8 3 6 10 Um índice pode ser um vector.0000 3. suponha que A é uma matriz 10x10.. Por exemplo. usando ":". Por exemplo.:) B= 0 + 1. Se X e V são vectores. Um elemento individual da matriz pode ser indicado incluindo os seus índices entre parênteses. Para as matrizes. os índices vectores permitem o acesso a submatrizes. X(V(2)). Por exemplo.. então X(V) é [X(V(1)). >> B=A(1:2.0000i -8.3) + A(3.. A= 92 98 14 85 86 17 99 80 81 87 93 24 11 17 88 19 25 76 18 14 20 21 12 83 15 16 22 13 19 90 67 73 54 60 61 42 14 74 55 56 62 68 49 51 57 63 69 75 26 58 64 70 71 52 33 40 41 47 28 34 65 .3) = A(1.8660 1. A= 1 4 7 a declaração >> A(3.

7:10) ans = 74 55 56 62 68 51 57 63 69 75 58 64 70 71 52 40 41 47 28 34 é uma submatriz 5x4. que consiste dos cinco primeiros elementos da terceira coluna da matriz A. >> A(1:2:5. Utilizando os dois pontos no lugar de um índice. Por exemplo.23 79 10 11 então 15 16 12 18 82 13 94 100 89 95 96 77 91 97 78 84 48 29 35 36 30 31 37 43 32 38 44 50 39 45 46 27 66 72 53 59 >> A(1:5.3) ans = 11 17 88 19 25 especifica uma submatriz 5x1. denotam-se todos elementos da linha ou coluna. Analogamente.:) ans = 92 99 11 18 15 67 74 51 58 40 15 . >> A(1:5. ou vector coluna. que consiste das primeiras cinco linhas e as últimas quatro colunas.

sendo B uma matriz 10x10 unitária. Por exemplo.6:l0) = A(5:-1:2.1:5) produz 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 86 1 85 1 14 93 1 87 1 81 25 1 19 1 88 12 1 21 1 20 19 1 13 1 22 16 . Podem ser obtidos muitos efeitos sofisticados usando submatrizes em ambos os lados das declarações. >> B = ones (10) B= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 a declaração. >> B(1:2:7. terceira e quinta linhas e todas as colunas da matriz A.14 86 81 93 88 25 2 12 22 19 54 61 56 68 63 75 70 52 47 34 é uma submatriz 3x10 que consiste na primeira.

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 98 1 1 1 1 80 1 1 1 1 17 1 1 1 1 14 1 1 1 1 16 1 1 1 O interesse prático motivou a inclusão de algumas funções úteis.3) I= 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 17 . >> I=eye(5) I= 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 >> I=eye(5. Por exemplo a função eye gera a matriz identidade.

>> z= 3 + 4*i ou >> z= 3 +4*j Outro exemplo é >> w=0.5. 2.00001 6.2. com ponto decimal opcional. sobretudo.06375e23 As expressões podem ser construídas usando os operadores aritméticos usuais e as regras de precedência: 1 2 2 3 4 4 ^ / \ * + - potenciação divisão direita divisão esquerda multiplicação adição subtracção Deve notar-se que existem dois símbolos para divisão: as expressões 1/4 e 4 possuem o mesmo valor \1 numérico. Os parênteses são usados na forma habitual para alterar a precedência usual dos operadores aritméticos. é usada para números. 0. 3 9.637458638 -99 1.602E-20 0. para representar números muito grandes ou muito pequenos. Números e Expressões Aritméticas A notação decimal convencional. Os números complexos são definidos usando-se as funções especiais i e j. A notação científica é usada frequentemente.25. Números e Matrizes Complexas Números complexos são permitidos em todas operações e funções no MATLAB. isto é. Por exemplo.6.9 * exp(i*pi) 18 .

Porém. que afecta somente o modo como as matrizes são mostradas e não a forma como elas são calculadas ou guardadas (o MATLAB efetua todas as operações em dupla precisão).As seguintes declarações mostram dois caminhos convenientes para se definir matrizes complexas no MATLAB: >> A= [1 2. se i ou j forem usados como variáveis.2857 3. de forma que tenham os seus valores originais modificados.1416 2. Se todos os elementos das matrizes forem inteiros. >> x=[2/7 pi log(10)] x= 0. a matriz é mostrada num formato sem qualquer separador decimal. >> x = [-1 0 1] resulta sempre em x= -1 0 1 Se pelo menos um dos elementos da matriz não é inteiro.3026 19 . O formato utilizado por omissão é chamado de formato short. é conveniente não usar i ou j para designar outra variável que não seja a unidade imaginária. uma nova unidade complexa deverá ser criada e utilizada da maneira usual. 3 4]+i*[5 6. Formato de Saída O formato numérico exibido no ecrã pode ser modificado com o comando format.7 8] e >> A= [1+5*i 2+6*i. Se se trabalhar com números complexos. >> ii = sqrt(-1). 3+7*i 4+8*i] que produzem o mesmo resultado. Por exemplo. >> z = 3 + 4*ii 2. existem várias possibilidades de formatar a saída. que mostra 5 dígitos significativos ou usa notação científica.7.

"-". Os símbolos "+". a expressão >> x = [4/3 1.00 ++ Com os formatos short e long. Por exemplo.001.33333333333333 0.0003 0. para cada formato usado.Por exemplo.3333e+000 1.234500000000000e-006 3ff5555555555555 3eb4b6231abfd271 4/3 1/810045 1. se o maior elemento da matriz é maior que 1000 ou menor que 0.0e+003 * 0. e "espaço em branco" são mostrados. da seguinte maneira: format short format short e format long format long e format hex format rat format bank format + 1.2345e-006 1.0031 2. respectivamente para elementos positivos.0000 1.33 0.3026 O formato + é uma maneira compacta de mostrar matrizes de grandes dimensões.3333 0. elementos negativos e zeros.2345e-6] é mostrada .333333333333333e+000 1. um factor de escala comum é aplicado para que a matriz completa seja mostrada. >> x=[2/7 pi 1000*log(10)] x= 1.000000123450000 1. 20 .

2372 3.0000 1.8660 1. por "+" e "-".1120 1.0000 1. Adição e Subtracção A adição e subtracção de matrizes são indicadas.7484 0. OPERAÇÕES COM MATRIZES As operações com matrizes no MATLAB são as seguintes: · Adição · Subtração · Multiplicação · Divisão direita · Divisão esquerda · Exponenciação · Transposição A seguir são descritas estas operações em pormenor.0000 8.2516 -0.0000 3.1069 -0.1069 -0.6607 >> D=A-B 21 .3.8931 0.2372 -0. Por exemplo.2189 0.1069 7.1. >> A = 1.7484 3.6607 >> B B= 1.1069 1. respectivamente.7628 0.7628 -0.2516 3.1069 -0.0000 1.0000 0 >> C=A+B C= 2. As operações são definidas somente se as matrizes forem da mesma dimensão. 3.9729 0.

Por exemplo se y = [10 7 4 1 -2 -5 -8]. e resulta em ans = 238 É evidente que o resultado da multiplicação y'*z será o mesmo. visto que se trata de vectores reais.3258 0. Se fossem vectores complexos resultaria no conjugado.1069 -1.D= 0. >> z’*y ans = 70 49 28 40 28 16 10 7 4 7 -14 -35 -56 4 -8 -20 -32 1 -2 -5 -8 4 10 16 -20 -14 -8 -2 -50 -35 -20 -5 10 25 40 -80 -56 -32 -8 16 40 64 22 .2. Neste caso.2372 -1. Existem dois outros produtos que são transpostos um do outro. ou seja. Por exemplo. A multiplicação x*y.6607 A adição e subtracção também são definidas se um dos operadores for um escalar. uma matriz l x l.7628 -3. o escalar é adicionado ou subtraído de todos os elementos do outro operador. Multiplicação A multiplicação de matrizes é indicada por "*".2409 -1. é definida somente se o número de linhas de x for igual ao número de colunas de y.2516 -1.7484 3.1069 -8. o produto interno de dois vectores é uma multiplicação de uma matriz 1xN por outra Nx1. >> z=y-3 z= 7 4 1 -2 -5 -8 -11 3. >> y*z’ é aceitável.

-110 -77 -44 -11 22 55 88 >> y’*z ans = 70 40 10 -20 -50 -80 -110 49 28 28 16 7 4 7 -14 -35 -56 -77 4 -8 -20 -32 -44 1 -2 -5 -8 -11 16 22 -14 -8 -2 4 10 -35 -20 -5 10 25 40 55 -56 -32 -8 16 40 64 88 Às matrizes resultantes do produto de 2 vectores dá-se o nome de díadas. 23 . se A for a matriz definida acima. O produto de uma matriz por um vector é um caso especial do produto entre matrizes. Por exemplo. um escalar pode multiplicar ou ser multiplicado por qualquer matriz. >> b = A’*y que resulta em b= 2380 1666 952 238 -476 -1190 -1904 e >> b=y*A’ resulta em b= 2380 1666 952 238 -476 -1190 -1904 Naturalmente.

Divisão Existem dois símbolos para divisão de m atrizes no MATLAB "\" e "/". • • X = A\B é a solução de A*X = B X = B/A é a solução de X*A = B Por exemplo. Se p é um inteiro maior do que um. a potenciação é calculada efectuando múltiplas multiplicações. 4 5 6. ou inv(A)*B e B*inv(A).4. se ela for real. A declaração >> A = [1 2 3. Por exemplo. então A\B e B/A correspondem respectivamente à multiplicação à esquerda e à direita da matriz B pela inversa da matriz A. 7 8 9] >> B = A' que resulta em A= 1 4 7 2 5 8 3 6 9 24 . Transposição O caractere plica. indica a transposta de uma matriz. a declaração. Exponenciação A expressão A^p eleva A à p-ésima potência e é definida se A for uma matriz quadrada e p um escalar.5. x=A\b é a solução de A*x = b. 3. apenas. Se A for uma matriz quadrada não singular.3. sendo o vector b definido como A*x.3. Em geral. mas. " ' " . >> A = 1 -1 0 0 2 2 1 1 -1 >> A^2 ans = 1 -3 -1 2 0 5 -1 1 2 3.

6.0000 + 5.0000 .0000 + 8.’ que resulta em Z= 1.0000 + 6. 3 4] + [5 6.0000i 4.0000 .B= 1 2 3 4 5 6 7 8 0 e >> x = [-1 O 2]' produz x= -1 0 2 Se Z for uma matriz complexa.0000i 2. como mostra o exemplo >> Z = [1 2.7.0000i 2. Para obter simplesmente a transposta de Z deve-se usar Z.0000i 3.0000i Z1 = 1.0000i Z2 = 1.0000 + 7.0000 .0000i 2.8. 25 . 7 8]*i >> Z1 = Z’ >> Z2 = Z.0000i 4.’.0000 + 6.0000 .0000i 4.0000i Também se pode usar conj(Z’).0000i 6.0000i 3.0000 + 8.0000 + 7.5.0000 + 5. Z’ será a matriz transposta hermiteana (trans-conjugada).

" (". ". Assim.4.*B indica um conjunto (matriz) cujos elementos são simplesmente o produto dos elementos individuais de A e B. então A. a operação com conjuntos e as operações com matrizes são as mesmas. Adição e Subtração Para a adição e a subtracção. >> z = x . Se A e B forem duas matrizes com as mesmas dimensões.\B formam um conjunto cujos elementos são simplesmente os quocientes dos elementos z= 4. "/".5000 2./B e A.0000 26 .\ y resulta em 10 18 As expressões A. se >> x = [1 2 3]. ".*".*". ".0000 2. utilizando-se os mesmos caracteres ("*". Por exemplo. Multiplicação e Divisão A multiplicação de conjuntos é indicada por ". >> z = x . "\". então. Deste mo do os caracteres "+" e "-" podem ser utilizados tanto para operações com matrizes como para operações com conjuntos. OPERAÇÕES ELEMENTO A ELEMENTO O termo “operações entre conjuntos” é usado quando as operações aritméticas são realizadas entre os elementos que ocupam as mesmas posições em cada matriz (elemento por elemento)./". "^" e " ‘ ") precedidos por um ponto " .1. y = [4 5 6]. 4. As operações com conjuntos são feitas como as operações usuais.2. 4.‘ ").\".* y resulta em z= 4 individuais de A e B.^" e " .

^ y resulta em z= l 32 729 A potenciação pode usar um escalar.^[x y] z= 2 4 8 16 32 64 4 9 4.3. Potenciação A potenciação de conjuntos é indicada por ". Operações Comparativas Estes são os seis operadores usados para comparação de duas matrizes com as mesmas dimensões: < menor <= menor ou igual > maior >= maior ou igual == igual ~= diferente A comparação é feita entre os pares de elementos correspondentes e o resultado é uma matriz composta pelos 27 . A seguir são mostrados alguns exemplos usando os vectores x e y definidos anteriormente.4. >> z = x.^". >> z = 2.^2 z= l Ou a base pode ser um escalar.4. A expressão >> z = x .

números um e zero. representando VERDADEIRO e FALSO. também os operadores lógicos & (e) e | (ou). estas operações são extremamente importantes quando se trabalha com ciclos. 28 . Por exemplo. respectivamente. >> 1= = 1 & 4 = = 3 ans = 0 >> 1 = = 1 | 4 = = 3 ans = 1 Como veremo s adiante. Por exemplo. >> 2 + 2 ~= 4 ans = 0 Pode-se usar.

figure(1) mostra a Janela Gráfica número 1 e close fecha todas as Janelas Gráficas. o comando clear apaga todos os dados da memória. clc limpa a área de trabalho. clc a=input(‘a =’). No entanto.5.m" Os comandos do MATLAB são normalmente digitados na área de trabalho.m” se chamavam “scripts” e funções. end O caracter “%” é usado para inserir um comentário no texto. o utilizador pode acrescentar programas seus em ficheiros “. O MATLAB tem uma série de funções científicas pré-definidas. ser editados fora do MATLAB. x=-5:0. O comando pause provoca uma pausa na execução do programa até que qualquer tecla seja digitada.’s’).m” a qualquer Toolbox.^2+b*x+c. Já anteriormente dissemos que os ficheiros “. Todas as Toolboxes do MATLAB são constituídas por ficheiros “. o MATLAB é também capaz de executar sequências de comandos armazenadas em ficheiros. Em apêndice apresentam-se algumas dessas funções. em que uma única linha de comando é escrita e processada imediatamente. a partir do menu File. Para editar um ficheiro texto do MATLAB seleccione New M-File para criar um novo ficheiro ou Open M-File para editar um ficheiro já existente. Como vimos atrás. por exemplo % Traça uma função y=ax^2 + bx + c no intervalo -5<x<5 clear aux=’s’. Existem alguns comandos e declarações especiais para serem usados nos ficheiros. 29 . Os ficheiros podem. FICHEIROS ". também. utilizando qualquer editor de texto. y=a*x.m” inalteráveis pelo utilizador. while aux= = ‘s’. plot(y) figure(1) pause clc close aux=input(‘Traçar outro ? (s/n) = => ‘. O comando input é usado quando se deseja entrar com um dado a partir da área de trabalho. b=input(‘b =’). A maioria pode ser usada da mesma forma que seria escrita matematicamente.1:5. c=input(‘c =’).

2 0] >> plot(y) e o resultado é mostrado na Janela Gráfica: 30 . polar gráfico em coordenadas polares.4 .7 . loglog gráfico em escala loglog.7 . Existe no MATLAB uma vasta biblioteca de comandos gráficos.6.8 . Através de comandos simples podem obter-se gráficos bidimensionais ou tridimensionais com qualquer tipo de escala e coordenada. stairs gráfico em escada hist traçar histograma.2 . semilogy gráfico em semilog.9 1 1. GRÁFICOS A construção de gráficos no MATLAB é mais uma das facilidades do sistema. Por exemplo. fill desenhar polígono 2D.3 . semilogx gráfico em semilog. stem sequência discreta.2 0. plot(y) produz um gráfico linear dos elementos de Y versus o índice dos elementos de Y.5 . Se y for um vector. 6. fplot traçar função. Gráficos Bidimensionais Estes são os comandos para traçar gráficos bidimensionais: plot gráfico linear. >> y=[0 0. bar gráfico de barras.1.

2602 1.8 0.2 0 0 2 4 6 8 10 12 14 fig.5463 0.4 0.1 – exemplo de uma representação obtida com “plot” Suponhamos que transformamos os valores de y por meio de f=tan(y).0296 0.4228 0.8423 1.3093 0.2 – representação de f em função do índice de memória 31 .5 2 1. temos duas hipóteses: >> plot(f) que produz 3 2.1.4 1. Obtemos f= Columns 1 through 7 0 0.5 0 0 2 4 6 8 10 12 14 fig.8423 0.5 1 0.5722 1.2027 0 Pretendendo agora desenhar o gráfico de f.5574 Columns 8 through 13 2.2027 0.6 0.2 1 0.

Por exemplo. plot(X. cos(t + pi)) 32 .ou >> plot(y.Y). Existem dois métodos.Y) traça sucessivamente as linhas ou colunas de X versus o vetor Y. sin(t + pi). plot(X.5 1 0. t. • Se Y é uma matriz. • Se X é uma matriz e Y é um vector. • Se X e Y são matrizes com mesma dimensão.Y) traça sucessivamente as linhas ou colunas de Y versus o vetor X.5 0 0 2 4 6 8 10 12 14 fig. >> plot(t. cos(t). O MATLAB pode também traçar múltiplas linhas e apenas um gráfico. plot(X. e mais fácil. plot(Y) traça sucessivamente as colunas de Y versus o índice de cada elemento da linha de Y. sin(t). t. O segunda.f) que resulta em 3 2.5 2 1.3 – representação de f em função de y. método de traçar gráficos com múltiplas linhas é usando o comando plot com múltiplos argumentos. onde X e/ou Y são matrizes. como em plot(X. t. Então: • Se Y é uma matriz e X um vector. o primeiro é usando apenas dois argumentos.Y) traça sucessivamente as colunas de X versus as colunas de Y.

2.5 -1 -1 0 50 100 -2 0 50 100 60 4 2 40 0 20 -2 0 0 200 400 600 -4 0 200 400 600 fig.fig. 6.5– partição da janela gráfica em 2x2 partes 33 .4 – representação de sinusóides em função de t. Em cada uma destas podem-se traçar vários gráficos. Por exemplo: 1 2 0. Partição da Janela gráfica A janela gráfica pode ser divida em várias sub-janelas.5 1 0 0 -0.

plot(X.t. >> subplot(l2l).^2. » w=x+y.X.’k --‘) 34 .^2.^2.plot(abs(W(1: 512))) » subplot(224). » z=x. >> X = 0:0. começando em 1. » W=fft(w. 6.que foi obtido com a seguinte sequência de comandos.05:1. » t=1:100.1024). » x=sin(2*pi/27*t).plot(t.t.3.x. Estilos de linha.plot(t.plot(angle(W(1:512))) A partição é feita com o comando subplot que tem o formato.w) » subplot(223).X. símbolos e cores Os tipos de linhas. » subplot(221). » y=cos(2*pi/18*t).z. símbolos e cores usados para traçar gráficos podem ser controlados se os padrões não forem satisfatórios. K é o número de ordem do gráfico e que se obtém numerando os gráficos de cima para baixo e da esquerda para a direita. Por exemplo.’k*’) >> subplot(l22). plot(X.y) » subplot(222). subplot(IJK) onde I é o número de linhas e J o número de colunas da partição.

* ° + x ............-... .. pontos e cores podem também ser usados: CORES y m c r g b w k amarelo lilás azul claro vermelho verde azul escuro branco preto TIPO DE LINHA _ --..-. _______________ --------------------. TIPO DE PONTO ......fig.-...-..-. ******** ° ° °° ° ° ° ° ° ° ++++++++++ xx x x x x x x 35 ...-................-.-.-....-. ...-.......6 – representação de X usando dois tipos diferentes de linha Outros tipos de linhas.

4. quando Z é um vector complexo. Para este caso especial é traçada a parte real versus a parte imaginária.imag(W). é equivalente a plot(real(Z). pelo que devemos traçá-las. Por exemplo. No entanto.real(W). a parte imaginária é ignorada.8 – representação das partes real e imaginária de uma função complexa na mesma janela 36 . plot(real(Z)). normalmente necessitamos de ambas as partes.subplot(212).imag(Z)). Para isso.n. >> plot(n. excepto quando é dado simplesmente um argumento complexo.'r') 60 40 20 0 -20 -40 -60 0 200 400 600 800 1000 1200 fig. plot(imag(Z)) que resulta em 60 40 20 0 -20 -40 0 200 400 600 800 1000 1200 50 0 -50 0 200 400 600 800 1000 1200 fig. Números Complexos Quando os argumentos do comando plot são complexos. por exemplo.6. a sequência dos índices de memória: >> n=1:length(W). plot(Z). ou fazemos dois gráficos separados >> subplot(211).7 – representação das partes real e imaginária de uma função complexa ou teremos que usar uma variável independente que pode ser.

r) . pelo que devemos representá-los separadamente como fizemos com as partes real e imaginária. necessitamos do módulo e argumento das variáveis complexas.4x3 +3x2 – x + 1.2. Na figura seguinte.Porém. 37 . Estes comandos são usados para traçar gráficos em diferentes coordenadas e escalas: • • • • polar(teta.traça um gráfico em que a escala do eixo x é logarítmica e a do eixo y é linear. Escala Logarítmica. usam-se as funções abs e angle. semilogy e polar é idêntico ao uso de plot. loglog . semilogy .5.traça um gráfico usando escalas logarítmicas para as ordenadas e abcissas. versus o raio r. em muitas situações práticas. Para isso. apresenta-se em escala logarítmica o gráfico 3 da figura apresentada na secção 6. semilogx. obtido com a função polar. Coordenada Polar e Gráfico de Barras O uso de loglog.traça um gráfico em que a escala do eixo x é linear e a do eixo y é logarítmica.traça em coordenadas polares o ângulo teta. 6. semilogx . mostra-se a representação das raízes do polinómio p(x) = 2x5 + 2x4 . 60 50 40 30 20 10 0 0 10 10 1 10 2 10 3 fig.9 – representação usando uma escala logarítmica Na figura seguinte. em radianos. O comando bar(X) mostra um gráfico de barras dos elementos do vector X e não aceita argumentos múltiplos.

y.z) que resulta em 38 .fig.10 – representação num diagrama polar 6. Em primeiro lugar.y).y) obtidos: >> z=sin(X+Y). vamos calcular os valores da função para todos os pares (x.6. Com esta grelha assim definida. Traçado de Gráficos Tridimensionais e Contornos Para traçar gráficos tridimensionais e contornos é necessário avaliar a função numa grelha rectangular. >> y=-2*pi:pi/40:2*pi. devem criar-se 2 vectores descrevendo as grelhas segundo os eixos xx e yy >> x=-pi:pi/25:pi. cria-se uma grelha do tipo 2-D a partir das duas grelhas do tipo 1-D: >> [X Y] = meshgrid(x.*cos(X-Y). Isto pode fazer-se com o comando meshgrid. Para efectuar o traçado gráfico usa-se um dos comandos seguintes: >> mesh(x. Seguidamente.

11 – representação tridimensional sombreada que cria uma versão sombreada da superfície.y. fig. O comando contour(x.fig.z).11 – representação tridimensional ou >> surf(x.z) mostra a projecção da superfície no plano xy 39 .y.

text Inserir anotação no gráfico.12 – representação da projecção horizontal 6. Por exemplo: >> fplot(‘sin’. ylabel Título do eixo -Y.7. [-pi pi]) >> title(‘Gráfico da função f(x)=seno(x). gtext Inserir anotação com o rato grid Traçado de uma grelha. Anotações no Gráfico O MATLAB possui comandos de fácil utilização que permitem adicionar informações num gráfico: title Título do gráfico. zlabel Título do eixo -Z. -pi<x<pi’) >> xlabel(‘x’) >> ylabel(‘f(x)’) 40 .6 4 2 0 -2 -4 -6 -3 -2 -1 0 1 2 3 fig. xlabel Título do eixo -X.

obtidas escrevendo os comandos na área de trabalho. actuando na janela gráfica.5 3 2.8 -1. Por exemplo.>> grid fig. retomemos o gráfico da função seno acima apresentado e façamos: >> v=[ -pi pi –1. Obtemos: 41 .5 2 1. Para exemplificar.8 -2.4 -2.2]. 4 3. convém acrescentar que podemos dimensionar os eixos de uma representação gráfica usando a função axis. fazendo zoom.6 -2.14 – Zoom da figura 12 Para finalizar esta secção.2 -2 -1.5 -3 -2. >> axis(v).2 1. conforme se pode observar na figura seguinte.13 – gráfico com anotações Além destas possibilidades.6 fig. podemos alterar um gráfico.

8 -0.6 0. Suponhamos que queremos representar parametricamente uma elipse.6 0.2 0. por exemplo Word. convém efectuar a cópia no formato windows metafile.y) 4 3 2 1 0 -1 -2 -3 -4 -1 -0. fazendo copy figure. -pi<x<pi 1 0. » y=4*cos(t).8 -1 -3 -2 -1 0 x 1 2 3 fig. Powerpoint.4 -0.2 -0. 42 .2 f(x) 0 -0.8 0.Gráfico da função f(x)=seno(x).8 1 fig.4 -0.6 -0.4 0.2 0 0.. » plot(x.6 -0. porque a cópia no formato “bitmap” origina ficheiros que ocupam demasiado espaço em memória.16 – gráfico de elipse A cópia dos gráficos da janela gráfica para outro tipo de ficheiros. etc. No entanto. é imediata.4 0.15 – redimensionamento dos eixos Podemos fazer representações paramétricas de forma semelhante à usada atrás. » x=sin(t). Podemos fazer: » t=-pi:pi/25:pi.

A(i. B(i. Atente-se no ciclo seguinte: >> for i=1:2:5.j)= i+j. especificam a ordem em que a computação é feita. Esta condição é avaliada. Ciclo “for” O ciclo for é o controlador de fluxo mais simples usado na programação MATLAB. Controlo de Fluxo Os comandos que controlam o fluxo. antes do ciclo se iniciar.j)= i-j. end onde se pode notar que o ciclo for é dividido em quatro partes: • • • • • A primeira parte (i=1) é realizada uma vez. (i<=5). Por omissão o incremento é 1. 7. PROGRAMAÇÃO 7.1. A segunda parte consiste num teste ou condição que controla o ciclo. O comando end é usado como limite inferior do corpo do ciclo.7. end end 43 . Na terceira parte a variável i é incrementada de acordo com o incremento especificado (2 neste caso).1. É vulgar encontrar ciclos for na manipulação de matrizes: for i= 1:8 for j= 1:8. Se verdadeira. No MATLAB estes comandos são semelhantes aos usados na linguagem C. o corpo do ciclo (X(i)=i^2) é executado. A quarta parte acontece quando a condição se torna falsa e então o ciclo termina. mas com uma estrutura diferente.1. X(i)=i^2.

mas apenas a condição é testada.2. ou.1. 7. o corpo do ciclo será executado. if i = = j A(i. Por exemplo. se verdadeira o corpo será executado. varrendo toda a matriz A. clc a = a+l b = b-l pause(l) end disp(‘fim do loop’) a condição a<b é testada. (else) A(i. as construções com if têm a forma seguinte: if expr1 acções elseif expr2 acções . else A(i.j)=-1. else 44 .j) = -1. end end end Os valores de i e j variam de 1 a 5. é apresentado um exemplo do uso da declaração if no MATLAB.1. Quando o teste concluir que a condição é falsa.j)=0. Seguidamente. elseif abs(i-j) = = 1 A(i. . a condição é testada novamente.7.j) = 0. o ciclo terminará a execução e continuará no comando que se segue ao ciclo while. Comandos “if” e “break” A seguir. A(i. while a<b. após o comando end. Em geral. A(i. . pelo que é bastante útil. for j = l:5. O comando elseif permite efectuar “bifurcações”. Porém pode ser omitido.j) = 2. na expressão a = l. Se ela for verdadeira. b = 15. ou se (elseif) o valor absoluto de i-j for igual a 1.j)=2. se nenhuma das condições anteriores forem satisfeitas. Se (if) i for igual a j. for i = l:5.3. Ciclo “while” O ciclo while é semelhante ao ciclo for.

if x = = ‘q’. n-não. de outro modo que não o método do teste.j) = input(‘Entre com o novo valor de A(i. clc break end end end 45 .’ num2str(j)’) = ‘num2str(A(i. %modifica a matriz A clc x = ’s’. j=j+l. [‘A(‘num2str(i) ‘. às vezes. Por exemplo. clc break end if x = = ‘q’. O comando break permite uma saída antecipada de um ciclo for ou while. A(i. no início ou no fim do mesmo. Um comando break faz com que o ciclo mais interno seja terminado imediatamente.j) = = >’). for i = l:5. while j<=5. controlarmos a saída de um ciclo.j))] x = input(‘Modifica? (s-sim. p-próxima linha. break end j = l. j=j+l. clc end if x = = ‘n’. if x = = ’s’.acções end É conveniente. clc end if x = = ‘p’. q-sair) =>’).

. OTHERWISE. Podemos fazer: for i=1:8 s=X(i.. . .1. Suponhamos que temos um conjunto de 8 sinais cujos gráficos queremos traçar em diferentes partições da área gráfica.2} subplot(311).. otherwise subplot(313).. end 46 .. switch i case {1...7.5.. acção. end plot(s).:). case_expr2.4. case_expr3. O comando “switch-case” Este comando actua de forma semelhante ao if e pode ser usado em situações em que há várias alternativas de saída dependentes de um ou mais parâmetros de entrada.6} subplot(312)... acção .} acção CASE {case_expr1. acção END Vejamos um exemplo..} acção. Tem a forma: SWITCH switch_expr CASE {case_expr.. case {4..

OPERAÇÕES COM O DISCO Os comandos load e save são usados.sai X Y Z -ascii -double Os dados obtidos por outros programas podem ser .mex". Para maiores detalhes sobre estes comandos utilize o help. Existem diversas maneiras de utilizar este comando..m". Y e Z pode-se fazer: save guarda os dados no ficheiros binário "matlab. delete. Y e Z no ficheiro texto "arq2. como executar programas externos. no formatos texto ou binário.2. 7. Y e Z no ficheiro texto "arq3. Y e Z no ficheiro binário "arq1. respectivamente.mat". guarda as matrizes X.7. Por exemplo.. importados pelo MATLAB desde que estes sejam 47 save arq2. Manipulação do Disco Os comandos cd. listar o directório.2. etc. alterar o directório de trabalho. para armazenar as variáveis X.sai" com 16 dígitos. Guarda as matrizes X.mat".sai X Y Z -ascii Save arq3. ".mat" e ".2.mat". save X guarda a matriz X no ficheiro o binário "x. Podem ser efectuadas outras operações com o disco. type e what do MATLAB são usados da mesma maneira que os comandos similares do sistema operacional.sai" com 8 dígitos. para importar dados do disco (rígido ou flexível) para a área de trabalho do MATLAB e exportar dados da área de trabalho para o disco. dir. 7.1. utilizando o comando save.2. save arql X Y Z guarda as matrizes X. Importar e Exportar Dados Os dados contidos na Área de Trabalho do MATLAB podem ser armazenados em ficheiros. cd muda de directório de trabalho dir lista o conteúdo do directório actual delete apaga ficheiro type mostra o conteúdo do ficheiro texto what lista ficheiros ".

sai X Y Z -ascii -double load load x load arq1 load arq2. Por exemplo >> X=rand(3.3) X= 0.0000 Executando o comando: >> load teste.0000 5. Quando importamos estes comandos através do comando load.6793 48 0.sai X Y Z -ascii save arq3.sai load arq3.0000 teste = 1 4 7 2 5 8 3 6 9 Obviamente.0000 6.guardados em disco num formato apropriado. quando usado para exportar os dados do MATLAB em formato texto. para importar as variáveis X. gera o ficheiro "teste. suponha que um programa em linguagem C.0000 4.0000 9.0000 7. exporta apenas um bloco contendo todas as variáveis. com colunas separadas por espaços e cada linha da matriz a ocupar uma linha de texto. Por exemplo.sai" que contém a matriz 1. anteriormente exportadas usando o comando save. pode-se fazer: save save X save arq1 X Y Z save arq2. Por exemplo. Y e Z. O comando load pode ser usado se os dados forem armazenados no formato ASCII. que passa a chamar-se teste: >> teste 2.sai o MATLAB importa a matriz. o MATLAB pode também importar (através do comando load) os dados que foram anteriormente exportados por ele.sai Deve salientar-se que o comando save.5194 . depois de executado. é importada apenas uma variável com nome do ficheiro. e no caso de matrizes.0000 3.0000 8.2190 0.

fopen. fgets.0535 0.6789 >> Y = rand(3.6868 0. load. No entanto.0346 Y= 0.9347 0.: fread.5890 Estas formas de acesso ao disco são de utilização simples. etc.sai X Y -ascii >> clear >> load arq2.0470 0.4175 0. fseek.8310 0.0.3834 0.3835 0.5890 arq2 = 0.0470 0.3835 0. há outras que têm relação íntima com a linguagem C e que permitem o acesso e transferência de dados obtidos por outros sistemas de aquisição.0077 0. fwrite.6711 >> save arq2.0535 0.sai >> arq2 0.5194 0. São de referir.9347 0. fgetl.4175 0.3) 0.3835 0.0668 0.6793 0.0668 0.6789 0.5297 0.6711 0.8310 0.6868 0.0346 0. fscanf.2190 0.ex.0077 0. 49 .5297 0. p.

sem necessidade de a redefinir. usando sym. Mesmo usando apenas a área de trabalho podemos tirar partido das possibilidades do cálculo simbólico. Como vimos anteriormente. a função é um comando que pode ter alguns argumentos de entrada e alguns de saída. Vejamos: » f=inline(‘log(x^2+abs(y))’. Por exemplo: >> syms x >> simplify((sin(x))^2+(cos(x))^2) ans =1 Com estes comandos consegue-se simplificar a expressão sen2 x+cos2 x.’x’. podemos definir expressões que envolvem esta variável.8. Neste caso. VARIÁVEIS E EXPRESSÕES SIMBÓLICAS Uma das toolboxes mais interessantes (e das mais recentes) é a toolbox symbolic que permite manipular expressões que além de grandezas e variáveis numéricas. Uma vez assente que x é uma variável simbólica.30) Vamos agora regressar ao objectivo inicial desta secção: usar a toolbox symbolic. Neste caso. usamos uma função chamada simplify. 50 . dadas duas funções f(x) = 2x2 +3x-5 e g(x) = x2 -x+7. Primeiro temos de informar o MATLAB que x é uma variável simbólica. Por exemplo.10.y) = log(x^2+abs(y)) » f(-2.’y’) dá: f= Inline function: f(x.9459 Também pode ser considerado nesta secção o comando str que serve para introduzir um texto como se se tratasse de um número: » str='estou farto do MatLab' str = estou farto do MatLab Um outro comando interessante é feval que permite correr uma função definida pelo seu nome com determinados parâmetros: » feval=(‘inteiros’. depois pedimos para simplificar a expressão que a envolve.3) ans = 1. contêm também variáveis simbólicas. a função simplify tem como argumento de entrada e de saída uma expressão simbólica. Por exemplo o comando inline permite definir uma função e usá-la sempre que queira.

.x + 7 x .substitui uma variável por um número (ou por outra variável) numa expressão. diff . >> f+g ans = 3*x^2+2*x+2 >> f-g ans = x^2+4*x-12 >> f*g ans = (2*x^2+3*x-5)*(x^2-x+7) >> expand(ans) ans = 2*x^4+x^3+6*x^2+26*x-35 >> f/g ans = (2*x^2+3*x-5)/(x^2-x+7) >> expand(ans) ans = 2/(x^2-x+7)*x^2+3/(x^2-x+7)*x-5/(x^2-x+7) >> pretty(ans) 2 x x 5 2 ---------. Para isso.calcula a derivada de f.+ 3 ---------. pretty . O MATLAB pode realizar operações mais avançadas sobre expressões simbólicas.tenta encontrar a forma mais simples de escrever uma expressão. >> f=2*x^2+3*x-5.podemos efectuar uma série de operações algébricas envolvendo estas funções.encontra a inversa funcional de uma expressão. g=x^2-x+7.mostra a expressão de uma forma mais fácil de visualizar.---------2 2 2 x .calcula a composição das funções f(x) e g(x) em f(g(x)).x + 7 x . subs . usando comandos como: compose . Por exemplo: 51 .x + 7 >> f^3 ans = (2*x^2+3*x-5)^3 >> expand(ans) ans = 8*x^6+36*x^5-6*x^4-153*x^3+15*x^2+225*x-125 Observe que o MATLAB não faz as simplificações ou expansões automaticamente.faz a expansão. simple . usamos comandos como por exemplo: simplify – simplifica. expand . finverse .

4 a c) ] --------------------] a ] ] 2 1/2] -b .(b . g=sin(x).f) ans = sin(1/(1-x^2)) >> finverse(g) ans = asin(x) >> subs(f. para resolver a equação ax2 +bx+c = 0.x.>> f=1/(1-x^2). podemos usar os comandos: >> syms a b c x >> solve(a*x^2+b*x+c) ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))] O MATLAB pode exibir este resultado de uma forma mais fácil de visualizar usando.2) ans = -1/3 O MATLAB pode também resolver equações. algebricamente. >> compose(f. >> pretty(ans) [ [ [1/2 [ [ [ [ [1/2 [ 2 1/2] -b + (b .4 a c) ] --------------------] a ] 52 .g) ans = 1/(1-sin(x)^2) >> compose(g. Por exemplo. como vimos a função pretty.

Co-seno .Tangente .Logaritmo Natural .arco do seno .Exponential. Funções elementares Trigonométricas sin sinh asin cos acos tan tanh atan atan2 cot .1.raíz quadrada 53 .arco de tangente . .Tangente Hiperbólica .Logaritmo decimal . APÊNDICE 9.arco de tangente para os 4 quadrantes .Seno Hiperbólico .Cotangente Exponencial exp log log10 log2 pow2 sqrt .potência de base 2 .arco do co-seno .Seno.Logaritmo de Base 2 . .9.

resto depois de divisão .Complexos abs angle complex conj imag real unwrap .Complexo conjugado . .Arredonda em direcção a zero .Arredonda para o inteiro mais próximo .Valor absoluto = módulo .Módulo = resto depois de divisão (com sinal) .“desenbrulha” a fase = soma múltiplos de 2π para tornar a fase contínua cplxpair .Faz sair números aos pares complexos conjugados arredondamento e resto fix floor ceil round mod rem sign .Constroi complexos a partir das partes real e imaginária.Arredonda para cima (direita no eixo real) .Sinal 54 .Parte real .Arredonda para baixo (esquerda no eixo real) .Parte imaginária .Fase = argumento .

| “OU” Lógico A | B é uma matriz cujos elementos são 1's onde A ou B têm elementos não-nulos e 0's onde ambas têm um zero. ou seja. uma tem um zero. mas não ambas. com o auxílio do Manual do MATLAB 5 e de alguma pesquisa na Internet. xor “OU” Exclusivo xor(A. A < B efectua comparações elemento a elemento entre A e B e retorna uma matrix com as mesmas dimensões e cujos elementos são um ou zero consoante a relação é ou não verdadeira. Há alguns temas não tratados que escapam ao objectivo deste texto.pt 55 . Existe uma grande quantidade de livros sobre ou com aplicações do MatLab. de sistemas de Telecomunicações. indicar um caminho através de um dos mais poderosos meios postos ao dispor de um Engenheiro ou Cientista. pelo menos. and ~=. facilmente encontráveis em livrarias técnicas ou na Internet. Como texto introdutório não pretende mais do que dar o “pontapé de saída”. é não-nula.B) é 1 onde ou A. >.2. como sejam: agregados de células e estruturas. ==. Operadores relacionais The six relational operators are <. ou B. --------------------------------------------------------------------------------------------------------------NOTA FINAL – A elaboração deste manual introdutório ao MATLAB. A e B devem ter as mesmas dimensões (ou uma pode ser um escalar). e o simulink. úteis em programação avançada. foi feita com base na experiência pessoal do autor.9. ferramenta extremamente útil na simulação de sistemas contínuos e. <=. Todas as sugestões que permitam aumentar a eficácia deste manual são bem vindas mdo@uninova. A e B devem ter as mesmas dimensões (ou uma pode ser um escalar). em particular. ~ “NÃO” Lógico ~A é uma matriz cujos elementos são 1's onde A tem zeros e 0's onde A tem elementos não-nulos. & “E” Lógico A & B é uma matriz cujos elementos são 1's onde ambas A e B têm elementos não-nulos e 0's onde.pt e mdo@inesc. >=. Obviamente. A e B devem ter as mesmas dimensões (ou uma pode ser um escalar).