Buscar

Apostila Básica do Software Matlab

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA 
DE SANTA CATARINA – CEFET-SC 
DEPARTAMENTO ACADÊMICO DE ELETRÔNICA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Apostila Básica do Software Matlab 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
André Luís Dalcastagnê 
 
 
 
Florianópolis, agosto de 2008 
APRESENTAÇÃO 
 
 O Matlab é um software criado pela Mathworks em 1984 destinado à análise e 
modelagem de sistemas e algoritmos. Devido à sua praticidade, essa poderosa 
ferramenta computacional vem sendo utilizada tanto em universidades quanto em 
empresas do mundo todo. 
 Em relação a uma linguagem de programação tradicional (como C/C++ ou 
Fortran), o desenvolvimento de algoritmos no ambiente Matlab é sem dúvida mais fácil 
e rápido. A desvantagem é que utilizando uma linguagem de programação tradicional é 
possível desenvolver algoritmos mais eficientes. 
 O objetivo deste curso é fornecer a base necessária para desenvolver programas 
no ambiente Matlab. Devido à grande quantidade de funções disponibilizadas pelo 
Matlab, é impossível aprender todo o seu conteúdo em um único curso. Entretanto, o 
aluno será capaz de entender como o Matlab funciona e descobrir quais funções são 
úteis para as suas aplicações. 
 
 
 
 
 
 
 
1 Introdução ao Matlab 
 O Matlab (Matrix Laboratory) pode ser definido como um ambiente de 
computação numérica baseado em matrizes. Dentre as suas principais características, 
destacam-se: 
• gráficos e visualização de dados; 
• linguagem de programação de alto nível; 
• toolboxes, que oferecem funcionalidades específicas por área de aplicação. 
Como exemplos de toolboxes, podem-se citar: 
• Optimization, Statistics, Financial; 
• Fuzzy Logic, Neural Networks, Control System; 
• Signal Processing, System Identification. 
A estrutura de diretórios do Matlab é a seguinte: 
• diretório base: c:\matlab; 
• executáveis: c:\matlab\bin; 
• diretório de trabalho: c:\Matlab\work. 
1.1 Ambiente Matlab 
a) Área de trabalho 
A área de trabalho do Matlab apresenta duas partes principais: 
• Command Window: área na qual os dados e instruções são digitados e os 
resultados são apresentados; 
• Workspace: área de memória de trabalho do Matlab, na qual todas as variáveis 
são armazenadas. 
Como exemplo, digite no Command Window a instrução “ver”. Como resultado, o 
usuário recebe as informações acerca das versões do Matlab, do Simulink e de todos os 
toolboxes instalados no computador. O sinal de prompt “>>” dessa janela indica que o 
sistema está apto a receber comandos. 
 1 
>> ver 
-------------------------------------------------- 
MATLAB Version 6.0.0.88 (R12) on PCWIN 
MATLAB License Number: 0 
-------------------------------------------------- 
MATLAB Toolbox Version 6.0 (R12) 06-Oct-2000 
Simulink Version 4.0 (R12) 16-Jun-2000 
Stateflow Version 4.0 (R12) 04-Oct-2000 
Stateflow Coder Version 4.0 (R12) 04-Oct-2000 
Communications Blockset Version 2.0 (R12) 01-Sep-2000 
Communications Toolbox Version 2.0 (R12) 01-Sep-2000 
Control System Toolbox Version 5.0 (R12) 01-Sep-2000 
DSP Blockset Version 4.0 (R12) 01-Sep-2000 
Filter Design Toolbox Version 2.0 (R12) 01-Aug-2000 
Fixed-Point Blockset Version 3.0 (R12) 26-May-2000 
Image Processing Toolbox Version 2.2.2 (R12) 10-Mar-2000 
MATLAB Compiler Version 2.1 (R12) 26-Jul-2000 
Model Predictive Control Toolbox Version 1.0.5 (R12) 10-May-2000 
Nonlinear Control Design Blockset Version 1.1.4 (R12) 12-Jun-2000 
Optimization Toolbox Version 2.1 (R12) 07-Jun-2000 
Partial Differential Equation Toolbox Version 1.0.3 (R12) 31-Dec-1999 
Robust Control Toolbox Version 2.0.7 (R12) 10-May-2000 
SB2SL (converts SystemBuild to Simu... Version 2.1 (R12) 16-Jun-2000 
Signal Processing Toolbox Version 5.0 (R12) 01-Jun-2000 
Simulink Accelerator Version 1.0 (R12) 01-Mar-2000 
Model Differencing for Simulink and... Version 1.0 (R12) 19-Jul-2000 
Simulink Model Coverage Tool Version 1.0 (R12) 02-Jun-2000 
Simulink Report Generator Version 1.1 (R12) 01-Apr-2000 
Statistics Toolbox Version 3.0 (R12) 01-Sep-2000 
Symbolic Math Toolbox Version 2.1.2 (R12) 11-Sep-2000 
System Identification Toolbox Version 5.0 (R12) 27-Aug-2000 
Wavelet Toolbox Version 2.0 (R12) 16-Jun-2000 
b) Janelas 
A versão Matlab para ambiente Windows apresenta as seguintes janelas: 
 2 
• Command Window: ambiente de trabalho; 
• Launch Pad: apresenta informações, textos explicativos e exemplos dos produtos 
instalados; 
• Workspace: apresenta as variáveis do ambiente de trabalho; 
• Command History: histórico das instruções já executadas. 
c) Menus 
O Matlab também possui uma série de menus: File, Edit, View, Web, Window e 
Help. Os mais importantes serão vistos ao longo do curso. Alguns menus são bastante 
utilizados: 
• File: manipulação de arquivos; 
o File/Set Path: configura a lista de diretórios de busca (equivalente ao 
comando “pathtool”); 
o File/Preferences: configura parâmetros do ambiente Matlab (equivalente 
ao comando “preferences”); 
• Edit: recursos de edição; 
• View: configuração de visualização da tela do Matlab; 
• Web: aciona web browser; 
• Window: fecha janelas de figuras (gráficos); 
• Help: aciona textos de ajuda. 
d) Barra de ferramentas 
A primeira parte da barra de ferramentas do Matlab segue o padrão Windows. As 
demais opções são próprias do Matlab: 
• New M-File, Open, Cut, Copy, Paste, Undo e Redo; 
• Simulink: abre um modelo do Simulink; 
• Current Directory: apresenta o diretório de trabalho corrente; 
• Browse for folder: busca um novo diretório de trabalho. 
 3 
1.2 Configuração de Parâmetros do Ambiente Matlab 
 Os parâmetros do Matlab são configuráveis pelo comando “preferences” ou pelo 
menu “File/Preferences”. As principais opções desse menu são: 
• General: parâmetros gerais. 
o Habilita/desabilita textos explicativos de ícones; 
o Tipo de impressão desejado. 
• Command Window: configura a janela Command Window. 
o Formato de exibição de números; 
o Formato de exibição de matrizes; 
o Cor e tipo de fonte. 
• Editor/Debugger: configura o editor de textos do Matlab (edit). 
• Help: configurações da ajuda do Matlab. 
• Current Directory: configura a opção Current Directory da barra de ferramentas. 
• Workspace: configura parâmetros da janela Workspace. 
• Array Editor: configura parâmetros da janela Array Editor. 
• Guide: configura parâmetros do ambiente de desenvolvimento de interfaces 
gráficas guide (Graphical User Interface). 
• Figure Copy Template: configura parâmetros para cópia de figuras. 
• Simulink: configura parâmetros do Simulink. 
1.3 Configuração de Diretórios do Matlab 
 Para que uma função possa ser utilizada por qualquer programa Matlab, o 
diretório no qual ela está salva deve estar incluído na lista de diretórios de busca do 
Matlab (arquivopathdef.m). Para realizar tal tarefa, pode-se utilizar a instrução 
“pathtoll” ou o menu “File/Set Path” (mais prático). Se isso não for feito, a função 
criada só poderá ser utilizada por programas Matlab (.m) que estiverem gravados no 
mesmo diretório da função. 
 4 
 O Matlab possui algumas funções do sistema operacional, apresentados na tabela 
abaixo. 
Tabela 1.1: Comandos do sistema operacional 
Comando Função Exemplo 
cd ou pwd Informa ou altera diretório cd 
dir ou ls Lista conteúdo do diretório dir 
what exibe arquivos Matlab salvos no diretório what 
which Identifica e localiza arquivo which cos 
! Chama comando do sistema operacional !del arquivo.m 
 
 
 
 5 
2 Elementos Básicos do Matlab 
2.1 Notações 
 O Matlab utiliza as seguintes notações para representar um número: 
Tabela 2.1: Notações adotadas no Matlab 
número negativo sinal “-“ 
casa decimal ponto final “.” 
notação científica “e” 
−1 “j” ou “i” 
Exemplos: 
>> -2.5e-3 
ans = 
 -0.0025 
>> 1+2j 
ans = 
 1.0000 + 2.0000i 
 Note que o Matlab atribui o resultado de cada operação a uma variável 
denominada ans (de answer). Ela é utilizada pelo Matlab para armazenar o último valor 
calculado pelo Matlab, a não ser nos casos em que o usuário explicita o nome de uma 
variável juntamente com o comando. Veja o exemplo abaixo. 
>> a=-2.5e-3 
a = 
 -0.0025 
>> b=1+2j 
b = 
 1.0000 + 2.0000i 
2.2 Matrizes 
 Para o Matlab, qualquer valor numérico é interpretado como uma matriz. Uma 
matriz é definida da seguinte forma: 
 6 
• valores numéricos são definidos entre colchetes (“[...]”); 
• elementos de uma linha são separados por “,” ou por espaço em branco; 
• final de uma linha é informado por “;”. 
Alguns exemplos 
Tabela 2.2: Tipos de matrizes 
tipo de matriz exemplo 
 
escalar 
>> 2 
ans = 
 2 
 
vetor linha (1 ) n×
>> [1 2 3] 
ans = 
 1 2 3 
 
 
vetor coluna ( ) n×1
>> [1;2;3] 
ans = 
 1 
 2 
 3 
 
 
matriz bidimensional ( ) m n×
>> [1 2 3;4 5 6;7 8 9] 
ans = 
 1 2 3 
 4 5 6 
 7 8 9 
matriz de dimensão 
 mn n n× × ×1 2 "
 
mostrado adiante 
2.3 Variáveis 
 Para criar uma variável no Matlab deve-se seguir algumas regras. Assim, o nome 
de uma variável Matlab 
• deve ser alfanumérico e iniciado por uma letra. 
• é case-sensitive; 
• pode conter o caractere “_”; 
 7 
• pode possuir no máximo 32 caracteres; 
• não pode ser uma palavra reservada, como “for” ou “while”. 
As variáveis criadas no Matlab ficam registradas na região Workspace (ver 
Capítulo 1). A Tabela 2.3 apresenta alguns comandos para manipular essas variáveis. 
Tabela 2.3: Comandos para manipulação de variáveis 
comando descrição 
who lista nomes das variáveis do Workspace 
whos lista os nomes e tipos das variáveis do Workspace 
clear elimina variáveis do Workspace 
 
>> a = 1; 
>> b = [1 2; 3 4]; 
>> texto = 'matlab'; 
>> who 
Your variables are: 
a b texto 
>> whos 
 Name Size Bytes Class 
 a 1x1 8 double array 
 b 2x2 32 double array 
 texto 1x6 12 char array 
Grand total is 11 elements using 52 bytes 
>> clear b; 
>> whos 
 Name Size Bytes Class 
 a 1x1 8 double array 
 texto 1x6 12 char array 
Grand total is 7 elements using 20 bytes 
>> who 
Your variables are: 
a texto 
 8 
2.4 Funções Matemáticas 
O Matlab possui uma série de funções matemáticas (built-in functions). Além 
dessas funções previamente programadas, o usuário também pode criar funções para 
atender as suas necessidades. Uma função no Matlab apresenta a seguinte sintaxe: 
[saída1, saída2, ... , saídaN] = NomeFunção [entrada1, entrada2, ... ,entradaM], 
onde 
saída1 a saídaN são os N parâmetros de saída da função; 
entrada1 a entradaM são os M parâmetros de entrada da função; 
NomeFunção é o nome da função. 
 Para obter ajuda em alguma função, pode-se utilizar o comando 
help NomedaFunção 
Exemplo 
>> help sin 
 SIN Sine. 
 SIN(X) is the sine of the elements of X. 
 Overloaded methods 
 help sym/sin.m 
>> x = pi/2; 
>> a = sin(x) 
a = 
 1.0000 
 É interessante notar a função do “;” no Matlab. Na definição da variável “x”, o 
seu valor não foi apresentado na tela devido à inserção do “;”. Já quando se definiu a 
variável “a”, o seu valor foi apresentado na tela porque não se colocou o “;” no final da 
instrução. Em termos numéricos, não há diferença alguma; o sinal “;” serve apenas para 
informar ao Matlab que não se deseja ver o resultado de uma operação na tela. 
 9 
3. Manipulação de Matrizes 
 Como mencionado no Capítulo 2, uma matriz é definida da seguinte forma: 
• valores numéricos são definidos entre colchetes (“[...]”); 
• elementos de uma linha são separados por “,” ou por espaço em branco; 
• final de uma linha é informado por “;”. 
3.1 Criação de Matrizes 
a) Matrizes numéricas: formadas por qualquer número ou operação numérica: 
>> m = [-2.8 sqrt(2) (5+4)/8 1; sin(0.4) exp(0.7) fix(4.5) 100] 
m = 
 -2.8000 1.4142 1.1250 1.0000 
 0.3894 2.0138 4.0000 100.0000 
b) Acrescendo valores em uma matriz: é possível acrescentar apenas um valor em 
uma matriz; os demais novos componentes são considerados iguais a zero: 
>> m(1,6) = 666 
m = 
 -2.8000 1.4142 1.1250 1.0000 0 666.0000 
 0.3894 2.0138 4.0000 100.0000 0 0 
c) Criação de vetores linearmente espaçados: através do símbolo “:”. Veja o exemplo 
abaixo, no qual x é um vetor que varia entre 1 e 5 com incremento 1 (valor padrão). 
>> x = 1:5 
x = 
 1 2 3 4 5 
 Se o incremento for diferente de 1, o seu valor deve ser incluído na instrução. 
Veja o exemplo a seguir, no qual o incremento do vetor x é 0,5 e o do vetor y é . 0,5−
> x = 1:0.5:5 
x = 
 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 
>> y = 5:-0.5:1 
y = 
 5.0000 4.5000 4.0000 3.5000 3.0000 2.5000 2.0000 1.5000 1.0000 
 10
d) Principais instruções relacionadas com matrizes. 
Tabela 3.1: Comandos para criação de matrizes elementares 
função descrição Exemplo 
 
eye 
 
cria matriz identidade 
>> eye(3) 
ans = 
 1 0 0 
 0 1 0 
 0 0 1 
 
zeros 
 
cria matriz com todos os 
elementos nulos 
>> zeros(2,3) 
ans = 
 0 0 0 
 0 0 0 
 
ones 
 
cria matriz com todos os 
elementos iguais a um 
>> ones(2,3) 
ans = 
 1 1 1 
 1 1 1 
 
rand 
 
cria matriz com números pseudo-
randômicos com distribuição 
uniforme entre 0 e 1 
>> rand(2,3) 
ans = 
 0.9501 0.6068 0.8913 
 0.2311 0.4860 0.7621 
e) Concatenação de matrizes: criação de matrizes a partir de outras matrizes: 
>> A = [1 2 3]; 
>> B = [4 5 6]; 
>> C = [A B] 
C = 
 1 2 3 4 5 6 
>> D = [A ; B] 
D = 
 1 2 3 
 4 5 6 
>> E = [A' B'] 
E = 
 1 4 
 2 5 
 3 6 
 11
3.2 Operações com Matrizes 
É muito importante notar que o Matlab pode realizar uma operação matricial (em 
uma ou entre duas matrizes) como também uma operação elemento a elemento (em uma 
ou entre matrizes). Para exemplificar, considere as matrizes 
A=    
1 2
3 4
 e . B=    
5 6
7 8
A Tabela 3.2 apresentaas principais operações realizáveis com essas duas matrizes. 
Tabela 3.2: Operações com matrizes 
Operação Operador Exemplo 
 
soma 
 
+ A B=
+ +  + =  + +  
1 5 2 6 6 8
3 7 4 8 10 12
 
 
subtração 
 
- A B=
− − − −  − =  − − − −  
1 5 2 6 4 4
3 7 4 8 4 4
 
 
multiplicação vetorial 
 
* A*B=    
19 22
43 50
 
 
multiplicação escalar 
 
.* A .*B=
× ×  =  × ×  
1 5 2 6 5 12
3 7 4 8 21 32
 
divisão matricial 
(equivale a ) -1A B×
 
/ A / B=
−  − 
3 2
2 1
 
 
divisão escalar 
 
./ / / , ,A ./ B= =
/ / , ,
      
1 5 2 6 0 2 0 333
3 7 4 8 0 428 0 5
 
divisão esquerda 
(equivale a ) -1A B×
 
\ A \ B=
− −   
3 4
4 5
 
 
potência matricial 
 
^ A^2=A*A=    
7 10
15 22
 
 
potência escalar 
 
.^ A .^2=
   =     
2 2
2 2
1 41 2
9 163 4
 
 
transposta 
 
‘ A'=    
1 3
2 4
 
 
 12
Exemplo 1: Considere o seguinte sistema de equações lineares 
1 1 2
2 1 2 3
3 1 2
2
3
3 4
y x x x
y x x x
y x x
= − + +
= − +
= − + +
3
3x
1 1
2 2
3 3
1 1 2
3 1 1
1 3 4
y x
y x
y x
−          ⇒ = −          −     
 ou AXY =
a) Qual o valor de se ? Y [ ]X 1 1 2 T= −
 Nesse caso, utiliza-se diretamente a operação matricial : Y A*X=
>> A = [-1 1 2 ; 3 -1 1; -1 3 4] 
A = 
 -1 1 2 
 3 -1 1 
 -1 3 4 
>> Y = A*[1 ; -1 ; 2] 
Y = 
 2 
 6 
 4 
b) Qual o valor de se Y ? X [ ]0 2 1 T=
 Nesse caso, pode-se deduzir que . No Matlab, esse operação é 
equivalente a (divisão esquerda, ver tabela 3.2). 
-1X=A Y
X=A\Y
>> Y = [0 ; 2 ; 1]; 
>> X = A\Y 
X = 
 0.7000 
 0.3000 
 0.2000 
Exemplo 2: Utilizando o Matlab, plote a função , para − ≤ . 2 2y x x= + − 3 5 5x ≤
 Note que nesse caso deve-se utilizar a operação de potência escalar, e não a 
matricial, pois para cada elemento de x deve-se calcular um valor de y. Veja como fica 
o código Matlab: 
>> x=[-5:0.1:5]; 
>> y = x.^2 + 2*x -3; 
>> plot(x,y) 
 13
-5 -4 -3 -2 -1 0 1 2 3 4 5
-5
0
5
10
15
20
25
30
35
 
Figura 3.1: Gráfico de . 2 2 3y x x= + −
3.3 Tratamento de Matrizes por Funções 
 Uma característica muito importante do Matlab é a forma como uma função 
manipula matrizes. Uma função no Matlab trata uma matriz como um todo, e não 
elemento a elemento. Tal característica é conhecida na literatura como bulk processing. 
Para entender tal característica, veja o seguinte exemplo. No primeiro caso, x é um 
escalar de valor 2. A variável a é simplesmente e . No segundo caso, 
considera-se uma matriz m de dimensão . Nesse caso, B também é uma matriz 
, no qual cada elemento é dado por . 
2 7,3891=
2 3×
ijae2 3× Bij
>> x = 2; 
>> a = exp(2) 
a = 
 7.3891 
 
>> M = rand(2,3) 
M = 
 0.9501 0.6068 0.8913 
 0.2311 0.4860 0.7621 
 
>> B = exp(m) 
B = 
 2.5860 1.8346 2.4383 
 1.2600 1.6258 2.1428 
 14
 Tal propriedade facilita bastante o desenvolvimento de programas. Por 
exemplo, se for desejado plotar o seno de x, para x variando entre 0 e 2 . No Matlab, o 
código seria o seguinte: 
π
>> x = 0:0.1:2*pi; 
>> plot(x,sin(x)); 
Em uma linguagem de programação sem bulk processing, o código seria algo desse 
tipo: 
inc = 0.1 
xi = 0 
i = 1 
while xi <= 6.28 
 x(i) = xi 
 yi = sin(xi) 
 xi = xi + inc 
end 
plot(x,y) 
 O gráfico fornecido pelo Matlab é mostrado na figura abaixo. 
0 1 2 3 4 5 6 7
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
 
Figura 3.2: Gráfico de para . sen(x) 0 x 2≤ ≤ π
3.4 Indexação de Matrizes 
 Uma tarefa que aparece com freqüência em programas é a necessidade de 
utilizar apenas determinados elementos de uma matriz, e não a matriz como um todo. 
Para isso, realiza-se uma indexação matricial. Considere a matriz M definida abaixo: 
 15
>> M = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12] 
M = 
 1 2 3 4 
 5 6 7 8 
 9 10 11 12 
a) Indexação de apenas um elemento. Se apenas um elemento for desejado, deve-se 
informar a posição que tal elemento ocupa na matriz (linha e coluna). 
>> a = M(3,2) 
a = 
 10 
No Matlab, os elementos também são indexados seqüencialmente. Essa indexação segue 
por linha e depois por coluna. Assim, a matriz anterior é indexada da seguinte forma: 
 
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
elem. 1 elem. 4 elem. 7 elem. 10
elem. 2 elem. 5 elem. 8 elem. 11
elem. 3 elem. 6 elem. 9 elem. 12
1 2 3 4
M 5 6 7 8
9 10 11 12
  =     
. 
>> b = M(6) 
b = 
 10 
>> c = M(10) 
c = 
 4 
 
b) Indexação de mais de um elemento. Se for desejado indexar uma faixa de 
elementos de uma matriz, pode-se utilizar o símbolo “:“. Dessa forma, cria-se 
submatrizes. Por exemplo, considere que se deseja criar uma matriz . 
Nesse caso, a matriz Z deve receber os elementos da 2
[ ]Z 6 7 8=
a linha de M, começando da 
coluna 2 até a coluna 4. Veja o exemplo: 
>> Z = M(2,2:4) 
Z = 
 6 7 8 
 
 16
A mesma operação pode ser realizada com a ajuda de um “end”, que representa o final 
de um intervalo. Por exemplo: 
>> Z = M(2,2:end) 
Z = 
 6 7 8 
 
c) Indexação de uma linha ou coluna completa. Outra ferramenta útil consiste em 
utilizar “:” sem números. Nesse caso, “:” representa todos os números de uma linha ou 
coluna. Por exemplo, se for desejado criar uma matriz Y formada pela primeira coluna 
de M. Nesse caso, define-se: 
>> Y = M(:,1) 
Y = 
 1 
 5 
 9 
3.5 Matrizes Multidimensionais 
 O Matlab permite a criação de matrizes com mais de duas dimensões. A 
forma de criação é idêntica a de matrizes bidimensionais. 
Exemplo: Criação de uma matriz de dimensão . 2 2 2× ×
>> A = [1 2 ; 3 4] 
A = 
 1 2 
 3 4 
 
>> B = [5 6 ; 7 8] 
B = 
 5 6 
 7 8 
 
>> C(:,:,1) = A; 
>> C(:,:,2) = B 
 
C(:,:,1) = 
 1 2 
 3 4 
 
C(:,:,2) = 
 5 6 
 7 8 
 17
3.5 Funções Matriciais Básicas 
Tabela 3.3: Funções matriciais básicas 
função descrição Exemplo 
 
det (X) 
 
determinante da matriz quadrada X 
>> X = [1 2 ; 4 5]; 
>> det(X) 
ans = 
 -3 
 
inv (X) 
 
matriz inversa da matriz 
>> inv(X) 
ans = 
 -1.6667 0.6667 
 1.3333 -0.3333 
 
diag (X) 
 
retorna a diagonal principal de X 
>> diag(X) 
ans = 
 1 
 5 
 
 
diag (v) 
 
 
se v é um vetor, cria matriz diagonal 
utilizando elementos de v 
>>>> v = [1 2 3]; 
>> diag(v) 
ans = 
 1 0 0 
 0 2 0 
 0 0 3 
 
reshape(x,n,m) 
 
cria matriz de dimensão a partir 
da matriz x 
n m×
>> x = [1 2 3 4 5 6 7 8 9 0]; 
>> reshape(x,2,5) 
ans = 
 1 3 5 7 9 
 2 4 6 8 0 
3.6 Outros Tipos de Dados 
 Além de matrizes, o Matlab trabalha com outros três tipos de dados: 
• cadeias de caracteres (strings); 
• células (cell arrays); 
• estruturas (structus). 
a) Cadeias de caracteres (strings) 
 18
 Cadeias de caracteres são dados tipo texto, formados por cadeias de caracteres 
ASCII (American Standard Code for Information Interchange). Cada caractere ocupa 
dois bytes de memória. No Matlab, uma string é definida entre ‘ ‘. Veja o exemplo. 
>> texto1 = 'Curso' 
texto1 = 
Curso 
Através do comando “whos”pode-se verificar as informações acerca da variável texto1. 
Ela é um vetor de dimensão 1 , do tipo char array, que ocupa 10 bytes de memória. 5×
>> whos texto1 
 Name Size Bytes Class 
 texto1 1x5 10 char array 
Grand total is 5 elements using 10 bytes 
 Internamente, os caracteres são armazenados através dos respectivos códigos 
ASCII. Para obter a string em formato numérico, pode-se utilizar a função “double”: 
>> double(texto1) 
ans = 
 67 117 114 115 111 
A operação inversa que transforma um código ASCII em uma string é efetuada pela 
função “char”: 
>> a = [84 101 120 116 111]; 
>> char(a) 
ans = 
Texto 
 A indexação de uma string é idêntica a de uma matriz. Veja o exemplo. 
>> a = texto1(1:3) 
a = 
Cur 
 Da mesma forma, pode-se realizar a concatenação de strings: 
>> texto2 = ' de Matlab'; 
>> textototal = [texto1 texto2] 
textototal = 
Curso de Matlab 
 19
b) Células (cell arrays) 
 Uma célula é um tipo de variável que permite armazenar matrizes de 
naturezas diferentes (escalares, vetores, matrizes, strings) em uma única estrutura. Para 
criar uma célula, utiliza-se a função “cell”. Células utilizam {} ao invés de []. Veja o 
exemplo abaixo, de uma célula de dimensão . 2 2×
>> celula = cell(2) 
celula = 
 [] [] 
 [] [] 
>> celula{1,1} = eye(2); 
>> celula{1,2} = 'matriz identidade 2x2'; 
>> celula{2,1} = 2; 
>> celula{2,2} = [1 2 3] 
celula = 
 [2x2 double] [1x21 char ] 
 [ 2] [1x3 double] 
>> whos celula 
 Name Size Bytes Class 
 celula 2x2 474 cell array 
Grand total is 33 elements using 474 bytes 
 Costuma-se utilizar células em bancos de dados que mesclam elementos 
numéricos e alfanuméricos. Por exemplo, uma lista de alunos e suas respectivas 
matrículas. 
c) Estruturas (structs) 
 É um tipo de dado que permite o armazenamento de matrizes de naturezas 
diferentes (escalares, vetores, matrizes, strings) identificáveis por nomes de campos. 
Para criar uma estrutura, utiliza-se a função “struct”. Como exemplo, considere que se 
deseja criar uma estrutura para armazenar a Tabela 3.4. 
Tabela 3.4: Exemplo de tabela para ser utilizada em uma estrutura 
Aluno Matrícula Nota 
João 001 1,0 
Maria 002 10,0 
José 003 7,0 
 20
>> s = struct('Aluno',{'Joao'},'Matricula',{001},'Nota',{1.0}) 
s = 
 Aluno: 'Joao' 
 Matricula: 1 
 Nota: 1 
>> s(2).Aluno = 'Maria'; 
>> s(2).Matricula = 002; 
>> s(2).Nota = 10; 
>> s(3).Aluno = 'Jose'; 
>> s(3).Matricula = 003; 
>> s(3).Nota = 7; 
>> whos s 
 Name Size Bytes Class 
 s 1x3 998 struct array 
Grand total is 28 elements using 998 bytes 
Os conteúdos de uma estrutura são acessados da seguinte forma: 
>> s 
s = 
1x3 struct array with fields: 
 Aluno 
 Matricula 
 Nota 
>> s(1) 
ans = 
 Aluno: 'Joao' 
 Matricula: 1 
 Nota: 1 
>> s(2) 
ans = 
 Aluno: 'Maria' 
 Matricula: 2 
 Nota: 10 
 
 21
4. Programação no Matlab 
4.1 Editor de programas 
 Existe um ambiente próprio do Matlab para edição de programas. Para abri-lo, 
digita-se o comando “edit”. Tal editor apresenta algumas características interessantes: 
• linhas numeradas, o que é útil principalmente para a localização de erros de 
programação; 
• o caractere “%” indica comentário; 
• o caractere “...” indica que o comando continua na próxima linha. Tal recurso 
permite deixar o texto mais “organizado”; 
• a cor atribuída pelo editor a um texto indica a sua classe. O padrão de cores varia 
de acordo com a versão do Matlab. 
4.1 Tipos de arquivos Matlab 
 Um programa em Matlab possui a extensão “.m” e é chamado de m-file. 
Existem dois tipos de arquivos Matlab: script e função. 
a) Script 
 Um script é simplesmente uma seqüência de comandos Matlab. Qualquer 
seqüência de comandos pode ser implementada diretamente na janela de comando do 
Matlab. Entretanto, se for desejado alterar algum parâmetro ou simplesmente repetir a 
operação, os comandos devem ser digitados novamente. Tal situação não é prática. Para 
solucionar esse tipo de problema existe o script. Se a seqüência de comandos for salva 
em um script, basta digitar o seu nome na janela de comando para repetir o processo. 
 
Exemplo: script denominado scriptEq2Grau.m, que plota uma equação do segundo grau 
do tipo , com , b e : 2y ax bx c= + + 1a = 2= 3c = −
x = [-10:0.1:10]; 
a = 1; 
b = 2; 
c = -3; 
y = x.^ 2 + b*x + c; 
plot(x,y); 
 22
 Note que o script não apresenta parâmetros de entrada nem de saída. Ele 
apenas realiza as operações desejadas e utiliza variáveis do workspace. Isso significa 
que todas as variáveis de um script são salvas no workspace (digite comando whos). 
b) Função 
 Uma função também realiza uma seqüência de comandos. Diferentemente de 
um script, uma função possui parâmetros de entrada e pode retornar parâmetros de 
saída. Por exemplo, considere que se deseje criar um arquivo Matlab que calcule uma 
função do segundo grau para valores variáveis de a, b e c. Nesse caso, um script não 
serve; deve-se criar uma função. Veja o exemplo. 
Exemplo: Função denominada FuncaoEq2Grau.m. 
% Apresenta o gráfico de uma equação do segundo grau 
function y = FuncaoEq2Grau(a,b,c) 
x = [-10:0.1:10]; 
y = x.^ 2 + b*x + c; 
plot(x,y); 
 Para que a função tenha os mesmos parâmetros do script anterior, digita-se 
z = FuncaoEq2Grau(1,2,-3); 
 Note que a única variável criada no workspace (digite comando whos) é z. 
Todas as variáveis utilizadas por uma função são internas, o que significa que não são 
salvas no workspace (diferentemente do caso de um script0). Uma característica 
interessante é a possibilidade de criar um texto explicativo para uma função, que é 
apresentado ao se utilizar a função help do Matlab. Esse texto deve ser escrito como 
comentário (através de %) no início do m-file. 
4.2 Tipos de funções 
 O Matlab reconhece três tipos de função: 
• built-in functions: são funções internas do Matlab, cujo código não é acessível 
ao usuário (por exemplo, digite which cos); 
• Matlab m-files: funções escritas em arquivos m-file. O código é acessível ao 
usuário, podendo inclusive ser modificado (por exemplo, digite which roots); 
• User m-files: funções escritas em arquivos m-file pelo próprio usuário, como a 
FuncaoEq2Grau.m descrita anteriormente. 
 23
4.3 Operadores lógicos 
 O Matlab possui operadores utilizáveis em expressões lógicas (Booleanas), 
que são utilizadas em tomadas de decisões. Para o Matlab, considera-se que 
• 0 (zero) ou nil indica condição falsa; 
• 1 (um) ou diferente de zero indica condição verdadeira. 
 
 A Tabela 4.1 apresenta os símbolos adotados para os operadores lógicos. 
Tabela 4.1: Operadores lógicos 
Operador Verdadeiro se Exemplo 
= = ou eq A igual a B A = = B ou eq(A,B) 
~= ou ne A diferente de B A ~= B ou ne(A,B) 
< ou lt A menor do que B A < B ou lt(A,B) 
> ou gt A maior do que B A > B ou gt(A,B) 
<= ou le A menor ou igual a B A <= B ou le(A,B) 
>= ou ge A maior ou igual a B A >= B ou ge(A,B) 
~ ou not lógica not ~A ou not(A) 
& ou and lógica and 
 
>> A = 2; 
>> B = 4; 
>> A == B 
ans = 
 0 
 
>> A < B 
ans = 
 1 
 
>> A > B & A ~= B 
ans = 
 0 
 O Matlab também possui funções para teste de matrizes 
 24
Tabela 4.2: Funções matriciais 
Função verdadeiro se matriz M for 
isempty(M) vazia 
isequal(M,M2) igual a matriz M2 
isnumeric(M) numérica 
ischar(M) alfanumérica 
issparse(M) esparsa 
 Existemtambém as funções any e all. Veja o seu funcionamento no exemplo. 
>> A = [0 2 4 6 8]; 
>> isempty(A) 
ans = 
 0 
>> any(A) 
ans = 
 1 
>> all(A) 
ans = 
 0 
>> all(A>=0) 
ans = 
 1 
4.4 Controladores de fluxo 
 O Matlab possui estruturas para tomada de decisões, iguais às existentes em 
linguagens de programação estruturadas. As principais são as estruturas for, if e while. 
A tomada de decisão se baseia no resultado de uma expressão booleana. Se uma 
expressão retorna 0, o Matlab interpreta condição falsa. Se uma expressão retorna um 
valor diferente de zero, o Matlab considera como condição verdadeira. 
a) For 
for variável = <valor inicial> : <incremento> : <valor final> 
 comandos 
end 
 25
Exemplo: Criação de um vetor formado por 10 múltiplos de 3. 
for i = 1:10 
 v(i) = 3*i; 
end 
b) While 
 O laço while permite que uma seqüência de comandos seja repetida enquanto 
uma certa condição for verdadeira. Apresenta a seguinte estrutura: 
while <expressao> 
 comandos 
end 
 Por exemplo, considere que se deseja determinar o maior valor de n tal que 
. Pode-se utilizar o seguinte código. 100! 10n <
n = 1; 
while prod(1:n) < 1e100 
 n = n + 1; 
end 
c) If, elseif, else. 
 O laço if, elseif, else estabelece diversos caminhos para a fluência de um 
programa. A sua estrutura é mostrada abaixo. 
if <expressao1> 
 comandos 
elseif <expressao2> 
 comandos 
 . 
elseif <expressaon> 
 comandos 
else 
 comandos 
end 
 
Veja um exemplo de utilização da estrutura. O valor da variável b depende do valor da 
variável a, que varia entre 0 e 10. 
 
 26
a = round(10*rand(1)); % a eh uma variavel com valor entre 0 e 10 
if a > 5 
 b = 3*a; 
elseif a < 5 
 b = a/3; 
else 
 b = a; 
end 
4.5 Implementação do algoritmo de Gauss 
 O algoritmo de Gauss é útil para resolver um sistema de equações lineares de 
ordem , do tipo , com A singular ( ). O método possui duas etapas: n AX Y= det(A) 0≠
1 Triangularização: consiste em transformar A numa matriz triangular superior, 
mediante permutações e combinações lineares de linhas; 
2 Retrossubstituição: cálculo de X, solução de , a partir da solução do último 
componente de X, e então substituindo regressivamente nas equações anteriores. 
AX Y=
1a etapa: triangularização da matriz A 
1. Entrada { , , | , } n ija iy 1(1)i n= 1(1)j n=
2. Para 1(1) 1k n= −
 2.1. Para i k 1(1)= + n
n
k
nn
n
ix
kk
 2.1.1. m a /ik ik kka= −
 2.1.2. Para j k 1(1)= +
 2.1.2.1. a a *ij ij ik kjm a= +
 2.1.3. y y *i i ikm y= +
3. Saída { , , | , } n ija iy 1|i n= 1|j n=
2a etapa: Retrossubstituição 
1. Entrada {{ , , | i n , , são coefic. de uma matriz triang. sup.} n ija iy 1(1)= 1(1)j = n ija
2. /n nx y a=
3. Para 1( 1)1k n= − −
 3.1. x y k k←
 3.2. Para i k 1(1)= +
 3.2.1. x x *k k kia← −
 3.3. x x /k k a←
4. Saída { } | 1(1)ix i n=
 27
 O algoritmo implementado em Matlab pode ser o seguinte: 
 
% Triangularizacao 
% Passo 1. 
A=[3 2 0 1 ; 9 8 -3 4 ; -6 4 -8 0 ; 3 -8 3 -4]; 
Y=[3 ; 6 ; -16 ; 18]; 
n=length(A); 
 
for k=1:n-1 % Passo 2 
 for i = k+1:n % Passo 2.1 
 mik = -A(i,k)/A(k,k); % Passo 2.1.1 
 A(i,:) = A(i,:) + mik*A(k,:); % Passos 2.1.2 e 2.1.2.1. 
 Y(i) = Y(i) + mik*Y(k); % Passo 2.1.3 
 end 
end 
 
% Retrossubstituicao 
x(n)=Y(n)/A(n,n); % Passo 2 
for k = n-1:-1:1 % Passo 3 
 x(k)=Y(k); % Passo 3.1 
for i = k+1:n % Passo 3.2 
 x(k) = x(k) - A(k,i)*x(i); % Passo 3.2.1 
end 
x(k)=x(k)/A(k,k); % Passo 3.3 
end 
disp('Vetor x='); % Passo 4 
disp(x'); 
 28
5. Gráficos no Matlab 
 O Matlab possui sofisticados recursos para a visualização de dados na forma 
gráfica. Ele trabalha com objetos gráficos, tais como linhas e superfícies. As 
propriedades de tais objetos podem ser controladas através das propriedades dos 
objetos. Entretanto, o Matlab disponibiliza diversas funções que facilitam a 
configurações das propriedades de objetos. As principais funções com esse fim são 
vistas neste capítulo. 
5.1 Cor, linha e marcador de uma curva (clm) 
 Antes de apresentar as funções de plotagem, é interessante apresentar as 
propriedades de cor, tipo de linha e tipo de marcador de uma curva. A Tabela 5.1 
apresenta as diferentes possibilidades. 
Tabela 5.1: Cores, tipos de linha e marcadores 
Cor Tipo de linha Marcador 
y (amarela) - (sólida) . (ponto) 
m (magenta) : (pontilhada) o (círculo) 
c (azul-claro) -. (ponto-traço) x (marcador x) 
r (vermelha) -- (tracejada) + (cruz) 
g (verde) * (estrela) 
b (azul) s (quadrado) 
w (branca) d (losango) 
k (preta) h (hexagrama) 
 p (pentagrama) 
 v ou ^ (triângulo p/ baixo ou cima) 
 < ou > (triângulo p/ esquerda ou direita) 
5.2 Principais funções relacionadas com gráficos 
 A Tabela 5.2 apresenta algumas das principais funções relacionas com 
gráficos Matlab. 
 29
Tabela 5.2: Funções relacionadas com gráficos 
title título ylabel nome do eixo y 
text texto em local especificado grid desenha linhas de grade 
gtext texto usando mouse axis intervalo dos eixos 
xlabel nome do eixo x legend legendas no gráfico 
5.3 Funções utilizadas para plotagem 
 A Tabela 5.3 apresenta as principais funções utilizadas para gerar gráficos 2D. 
Tabela 5.3: Funções para plotagem 2D 
Função Descrição 
plot(x1,y1,clm1,...,xN,yN,clmN) eixos X e Y em escala linear 
semilogx(x1,y1,clm1,...,xN,yN,clmN) eixo X logarítmico e eixo Y linear 
semilogy(x1,y1,clm1,...,xN,yN,clmN) eixo X linear e eixo Y logarítmico 
loglogy(x1,y1,clm1,...,xN,yN,clmN) eixos X e Y logarítmicos 
plotyy(x1,y1,clm1,x2,y2,clm2) duas curvas com escalas em Y diferentes 
stem(x,y) plota seqüências discretas 
5.4 Propriedades de textos 
 Textos em gráficos possuem propriedades que podem ser alteradas, tais como 
tipo e tamanho da fonte. A Tabela 5.4 apresenta comandos que realizam essas tarefas. 
Tabela 5.4: Propriedades de textos em gráficos Matlab 
Propriedade Comando Exemplo 
Tipo de fonte \fontename \fontname{Arial} 
Tamanho da fonte \fontesize \fontsize{14} 
Texto em negrito \bf \bfTexto 
Texto em itálico \it \itTexto 
Subscrito _ X_n 
Sobrescrito ^ X^n 
Letras gregas '\nomeletra' '\pi' 
 
 30
5.5 Exemplos 
a) Plotar a função , para . ( )xy e sen x−= 0 10x< <
% Exemplo a 
clear 
close all 
x = 0:0.1:10; 
y = exp(-x).*sin(x); 
plot(x,y,'r'); % Plota curva em vermelho 
title('\fontsize{18}f(x)=e^{-x}*sen(x)'); % Titulo em fonte 18 
xlabel('Eixo X'); 
ylabel('Eixo Y'); 
axis([0 10 -0.1 0.4]); % escala de x varia entre 0 e 10; de y entre -0.1 e 0.4 
% insere texto em fonte times 16 
gtext('\fontname{timesnewroman}\fontsize{16}ponto de maximo local'); 
b) Plotar as funções e , para 0 , no mesmo 
gráfico. 
1( ) ( )
xf x e sen x−= 2 ( ) ( )f x sen x= 10x< <
% Exemplo b 
clear 
close all 
x = 0:0.1:10; 
y1 = exp(-x).*sin(x); 
y2 = exp(-x); 
y3 = sin(x); 
plot(x,y1,'r',x,y2,'b',x,y3,'k'); 
title('\fontsize{18}f(x)=e^x*sen(x)'); % Titulo em fonte 18 
legend('f_1(x)=e^{-x}*sen(x)','f_2(x)=e^{-x}','f_3(x)=sen(x)'); 
xlabel('Eixo X'); 
ylabel('Eixo Y'); 
axis([0 10 -1 1]); % escala de x varia entre 0 e 10 e a dey entre -1 e 1 
 
 
 31
c) Função semilogx e comando figure: Diagramas de Bode de . ( ) /(10 )H j j jω = ω + ω
% Exemplo c 
clear 
close all 
w = logspace(-2,3,1000); % w vetor logaritmicamente espacado entre 10^-1 e 10^2, 
com 1000 pontos 
H = j*w./(j*w+10); 
magH = 20*log10(abs(H)); % Magnitude em dB 
fasH = angle(H)*180/pi; % Fase em graus 
 
figure(1) % Grafico de magnitude 
semilogx(w,magH); % Eixo X em escala logaritmica 
title('Magnitude'); 
xlabel('\omega (rad/s)'); 
ylabel('dB'); 
grid 
 
figure(2) % Grafico de fase 
semilogx(w,fasH); % Eixo X em escala logaritmica 
title('Fase'); 
xlabel('\omega (rad/s)'); 
ylabel('graus'); 
grid 
d) Função subplot: Diagramas de Bode de na mesma figura. ( ) /(10 )H j j jω = ω + ω
% Exemplo d 
clear 
close all 
w = logspace(-2,3,1000); % w vetor logaritmicamente espacado entre 10^-1 e 10^2, 
com 1000 pontos 
H = j*w./(j*w+10); 
magH = 20*log10(abs(H)); % Magnitude em dB 
fasH = angle(H)*180/pi; % Fase em graus 
 
subplot(1,2,1) % Figura com 1 linha, 2 colunas, grafico 1 
 32
semilogx(w,magH); % Eixo X em escala logaritmica 
title('Magnitude'); 
xlabel('\omega (rad/s)'); 
ylabel('dB'); 
grid 
subplot(1,2,2) % Figura com 1 linha, 2 colunas, grafico 2 
semilogx(w,fasH); % Eixo X em escala logaritmica 
title('Fase'); 
xlabel('\omega (rad/s)'); 
ylabel('graus'); 
grid 
e) Função stem: plotar em função de k. ( ) * ( )ky k a u k=
% Exemplo e 
k = -10:10; 
% Criacao do degrau unitario u(k) 
for i = 1:length(k) 
 if k(i) >= 0 
 u(i) = 1; 
 else 
 u(i) = 0; 
 end 
end 
% alternativa ao for: 
% u = (k >= 0) 
% Criacao de y(k) = a^k*u(k) 
a = 0.5; 
y = (a).^k.*u; 
stem(k,y); 
Gráficos 3D 
 O Matlab possui diversas funções destinadas à criação de gráficos em 3D. A 
Figura 5.1 apresenta apenas algumas delas. Quem desejar se aprofundar no assunto deve 
ler a documentação do próprio Matlab. 
 33
Gráfico 3D
Curvas Superfícies
curvas em 3D
curvas de nível
plot3
contour
superfícies 3D
malhas 3D
surf
mesh
 
Figura 5.1: Tipos de gráficos e funções 3D. 
 
a) Exemplo de uma curva em 3D (função plot3) 
t = 0:pi/50:10*pi; 
x = sin(t); 
y = cos(t); 
z = t; 
plot3(x,y,z); 
xlabel('sin(t)'); ylabel('cos(t)'); zlabel('t'); 
 Se for desejado plotar uma função de duas variáveis é necessário 
gerar matrizes X e Y contendo linhas repetidas, que definem o domínio da função. A 
função Malab que define X e Y a partir de vetores x e y é a meshgrid. Feito isso, 
pode-se utilizar a função desejada para plotar a função z. Veja o exemplo abaixo, no 
qual se deseja obter as curvas de superfície (função surf) e de malha (função mesh) de 
( , )z f x y=
( )2 2
2 2
sen
( , )
x y
z f x y
x y
+
= = + 
clear 
close all 
x = -8:0.5:8; 
y = -8:0.5:8; 
[X,Y] = meshgrid(x,y); % Geracao de matrizes X e Y a partir de x e y 
r = sqrt(X.^2 + Y.^2); 
Z = sin(r)./r; 
figure(1) % Grafico de superficie 
surf(X,Y,Z); 
figure(2) % Grafico de malha 
mesh(X,Y,Z); 
 34
6. Funções relacionadas com arquivos de dados 
 O Matlab possui diversas funções para leitura e gravação de arquivos de 
dados (texto, imagem e som). Algumas das principais são apresentadas neste capítulo. 
6.1 Leitura e gravação de arquivos de dados 
a) Funções dlmread e dlmwrite 
 Para ler ou gravar um arquivo ASCII delimitado utiliza-se as funções dlmread 
e dlmwrite, respectivamente. O arquivo possui um caractere delimitador, que separa os 
dados uns dos outros. Veja os exemplos. 
 A função dlmread(‘NomeArquivo’,’delimitador’) lê um arquivo ASCII com 
determinado delimitador. Por exemplo, considere um arquivo dados.txt, cujo 
delimitador é um espaço em branco. O exemplo abaixo mostra como ler este arquivo e 
salvar o seu conteúdo em uma variável denominada “a”. 
>> type dados.txt 
1 2 3 4 
5 6 7 8 
9 10 11 12 
>> a = dlmread('dados.txt',' ') 
a = 
 1 2 3 4 
 5 6 7 8 
 9 10 11 12 
 A função dlmwrite(‘NomeArquivo’,matriz,’delimitador’) permite gravar os 
dados de uma matriz em um arquivo ASCII com determinado delimitador. O exemplo 
abaixo mostra salva a matriz M no arquivo gravar.txt, cujo delimitador é a “,”. 
>> M = [1 3 5 7;2 4 6 8] 
M = 
 1 3 5 7 
 2 4 6 8 
>> dlmwrite('gravar.txt',M,','); 
>> type gravar.txt 
1,3,5,7 
2,4,6,8 
 35
b) Funções load e save 
 As funções load e save servem para ler/gravar variáveis armazenadas em 
arquivos com extensão .mat, que é um formato binário proprietário do Matlab. A sintaxe 
é a seguinte: 
load(‘NomeArquivo’) 
save(‘NomeArquivo’,’var1’,’var2’,...,’varN’) 
save(‘NomeArquivo’,’var1’,’var2’,...,’varN’,’-ASCII’) 
 No comando save, se nenhuma variável for especificada, o Matlab salva todas 
as variáveis do worspace no arquivo especificado. A opção ‘-ASCII’ salva o arquivo no 
formato ASCII. Veja alguns exemplos. 
>> a = [1 2]; 
>> b = 3; 
>> texto = 'teste'; 
>> save('arquivo1','a','texto'); 
>> clear 
>> whos 
>> load('arquivo1') 
>> whos 
 Name Size Bytes Class 
 a 1x2 16 double array 
 texto 1x5 10 char array 
Grand total is 7 elements using 26 bytes 
 
 Existem diversas outras funções para carregar arquivos de dados. Elas podem 
ser acessadas pelo comando importdata (help importdata). 
6.2 Leitura e gravação de arquivos de imagem 
 Para ler ou gravar um arquivo de imagem, utiliza-se as funções imread e 
imwrite, respectivamente. A sintaxe é a seguinte: 
A = imread(‘NomeArquivo’) 
imwrite(Matriz,‘NomeArquivo’) 
 As extensões permitidas são: bmp, cur, gif, hdf, iço, jpg, jpeg, pcx, png, tif, 
tiff e xwd 
 36
6.3 Leitura e gravação de arquivos de imagem 
 Para ler arquivo de som, utilizam-se as funções auread (som NeXT/SUN) e 
wavread (som Microsoft wave). Para gravar um arquivo de som, utilizam-se as funções 
auwrite (som NeXT/SUN) e wavwrite (som Microsoft wave). 
 37
7. Polinômios 
a) Raízes de um polinômio: função roots 
 Dado um vetor p com n elementos, a função roots retorna as raízes do 
polinômio P definido por P . Veja o exemplo, 
onde se considera um polinômio P . 
1(1) (2) ( 1) ( )n np x p x p n x p n−= + + + − +"
5 4 26 15 3 4 1x x x x= − + + +
>> p = [6 -15 0 3 4 1]; 
>> roots(p) 
ans = 
 2.3531 
 0.9461 
 -0.2579 + 0.4447i 
 -0.2579 - 0.4447i 
 -0.2833 
b) Coeficiente de um polinômio a partir de suas raízes: função poly 
 Dado um vetor r contendo as raízes de um polinômio, a função poly retorna 
um vetor contendo os coeficientes do polinômio. Veja o exemplo, no qual se deseja um 
polinômio com raízes –1 e 2. O resultado é . 2P 2x x= − −
> >> r = [-1 2]; 
>> P = poly(r) 
P = 
 1 -1 -2 
c) Valor de um polinômio: fução polyval 
 A função polyval calcula o valor de um polinômio P(X) para cada valor de um 
vetor X. Por exemplo, considere que se deseja calcula o valor de P 2 para 
. Veja o exemplo. 
2x x= − −
3 x− < < 3
>> p = [1 -1 -2]; 
>> x = -3:0.1:3; 
>> resultado = polyval(p,x); 
>> plot(x,resultado); 
d) Ajuste de curvas por polinômio de grau n: fução polyfit 
 38
 Dados vetores x e y, a função polyfit retorna os coeficientes de um polinômio 
de grau n que melhor aproxima os pontos definidos por (x,y). Veja o exemplo, no qual a 
curva é aproximada por um polinômio de grau 3, dado por 
. 3 2P 0,0046 0,7995 3,5478 99,8667x x x= − + +
>> x = 1:10; 
>> y = [100 110 105 98 102 107103 100 99 103]; 
>> p = polyfit(x,y,3); 
>> p = polyfit(x,y,3) 
p = 
 0.0466 -0.7995 3.5478 99.8667 
>> aprox = polyval(p,x); 
>> plot(x,y,x,aprox,'r'); 
e) Multiplicação/divisão de polinômios: fuções conv/deconv 
 Dados dois vetores p1 e p2, contendo os coeficientes de dois polinômios, as 
funções conv e deconv retornam os coeficientes de um vetor dado pela multiplicação e 
divisão entre p1 e p2, respectivamente. Veja o exemplo. 
>> p1 = [2 1 3 4]; 
>> p2 = [1 -1 2]; 
>> p3 = conv(p1,p2) 
p3 = 
 2 -1 6 3 2 8 
>> p4 = deconv(p1,p2) 
p4 = 
 2 3 
 
 
 39
8. Bibliografia 
ƒ MATSUMOTO, E. Y. MATLAB 6 – Fundamentos de Programação. 1. ed. São 
Paulo: Editora Érica Ltda., 2001. 
ƒ Centro Brasileiro de Pesquisas Físicas. Matlab – Curso Introdutório. Disponível 
em: <http://mesonpi.cat.cbpf.br/e2002/cursos/NotasAula/Tutorial_matlab.pdf> 
Acesso em: 06 jul. 2005. 
ƒ Apostila do II Workshop Internacional de Ensino de Engenharia. Mini-curso Uso do 
Matlab no Ensino de Engenharia. 
 
 40

Outros materiais