Escolar Documentos
Profissional Documentos
Cultura Documentos
Setembro 2002
(Versão 1)
CONTEÚDO INTRODUÇÃO ao MATLAB
Conteúdo
1 Introdução 5
1.1 MATLAB, para que serve ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 O interface MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 A janela de comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.2 O comando format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.3 Supressão do output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.4 Linhas de código extensas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.5 Edição da linha de comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Ajuda do MATLAB 8
2.1 O comando help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 A janela de ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Help Desk do MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3 O ambiente MATLAB 9
3.1 O Workspace do MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Ficheiros do MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.1 Ficheiros com extensão .m (M-file) . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2.2 Ficheiros com extensão .mat (Mat-File) . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.3 Ficheiros com extensão .ps (Postscript) . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.4 Ficheiros Diary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 Variáveis no MATLAB 11
4.1 Escalares (Matrizes 1x1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.2 Variáveis pré-definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Variáveis complexas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4 Vectores (linha ou coluna) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5 Matrizes (n linhas por m colunas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5.1 Definição de matrizes por listagem explícita dos elementos . . . . . . . . . . . . . 14
4.5.2 Definição de matrizes usando funções pré-definidas . . . . . . . . . . . . . . . . . 15
4.5.3 Subscriptos (Subscripting) e Sub-matrizes . . . . . . . . . . . . . . . . . . . . . . 16
5 Álgebra matricial 17
5.1 Operações aritméticas em matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 Funções matemáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.3 Funções em vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.4 Funções em matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6 Gráficos no MATLAB 21
6.1 Gráficos bidimensionais (2D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.1 Função plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6.1.2 Função stem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.1.3 Função plotyy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.1.4 Comando subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.2 Gráficos tridimensionais (3D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6.2.1 Função plot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
10 Créditos 38
Lista de Figuras
1 Representação da função seno: y(t) = sin(t). . . . . . . . . . . . . . . . . . . . . . . 21
2 Representação de várias funções seno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Representação gráfica da função chirp: y = sin(t.ˆ2). . . . . . . . . . . . . . . . . . . 23
4 Representação da função discreta y[k] = sin(k)/k, por intermédio do comando stem. . 23
5 Representação gráfica com dois eixos yy. . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6 Utilização do comando subplot, na representação de múltiplos gráficos numa só janela. . 25
7 Representação gráfica das funções y1(t) e y2(t). . . . . . . . . . . . . . . . . . . . . . . . 26
8 Gráfico 3D de uma hélice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9 Exemplo de aplicação da função wind. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
10 Exemplo de aplicação da função meshc. . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
11 Exemplo de aplicação da função contour3. . . . . . . . . . . . . . . . . . . . . . . . . . 29
12 Representação da resposta de um sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . 34
13 Interpolação da função cos x , com o comando interp1. . . . . . . . . . . . . . . . . . . 35
14 Exemplo de aplicação do comando polyfit, no ajuste da curva de temperatura de um sólido. 37
Lista de Tabelas
1 Lista de teclas de edição da linha de comando. . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Operações em variáveis complexas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Funções pré-definidas do MATLAB, para criar matrizes. . . . . . . . . . . . . . . . . . . 15
4 Operadores aritméticos em matrizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5 Operadores aritméticos elemento a elemento. . . . . . . . . . . . . . . . . . . . . . . . . 18
6 Funções pré-definidas para operações sobre matrizes, elemento a elemento. . . . . . . . . 19
7 Funções estatísticas do MATLAB para vectores. . . . . . . . . . . . . . . . . . . . . . . . 19
8 Principais funções matriciais do MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . 20
9 Comandos para representação de gráficos 2D. . . . . . . . . . . . . . . . . . . . . . . . . 24
10 Comandos para manipulação de gráficos. . . . . . . . . . . . . . . . . . . . . . . . . . . 26
11 Operadores relacionais do MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
12 Operadores lógicos do MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
13 Principais comandos para manipulação de polinómios. . . . . . . . . . . . . . . . . . . . 31
14 Principais comandos para análise de Fourier. . . . . . . . . . . . . . . . . . . . . . . . . . 32
15 Principais comandos para representação de funções de transferência. . . . . . . . . . . . . 32
1 Introdução
O MATLAB é uma linguagem de programação e software de visualização de dados, revelando-se espe-
cialmente apto no processamento de sinal e análise de sistemas. Este tutorial pretende ser um documento
introdutório ao MATLAB, possibilitando aos alunos do curso de EIQI da disciplina de AGD I e AGD
II alicerçar conhecimentos básicos sobre esta ferramenta computacional. Para futuras leituras, existe um
grande número de livros disponíveis sobre o MATLAB, como por exemplo: Engineering Problem solving
with Matlab, D.M. Etter, Prentice-Hall (1997); Mastering MATLAB, Hanselman e Littlefield, Prentice-
Hall (1996). Encontra-se ainda disponível na internet o documento MATLAB Primer, Third Edition, K.
Sigmon, CRC Press (1994), onde são resumidos os principais comandos do MATLAB. Uma extensa in-
formação sobre o MATLAB, pode ainda ser encontrada no site web da Mathworks, Inc., através do URL:
http://www.mathworks.com.
O nome MATLAB deriva de Matrix Laboratory. Em ambientes universitários, este software representa
a ferramenta standard na aprendizagem de Matemática, Engenharia e Ciência em geral. Na industria o
MATLAB, é a ferramenta mais empregue nas actividades de I&D de linha avançada e análise de dados.
O MATLAB possui uma série de soluções para aplicações específicas, designadas por Toolboxes. De
grande importância para a grande maioria dos utilizadores, as Toolboxes permitem a aprendizagem e apli-
cação de tecnologias especializadas. As Toolboxes são uma colecção de funções do MATLAB (chamadas
M-files), constituíndo uma extensão do ambiente MATLAB na resolução de classes específicas de prob-
lemas. Áreas para as quais estão disponíveis Toolboxes incluem: processamento de sinal e de imagem,
aquisição de dados, sistemas de controlo, redes neuronais, lógica difusa, simulação, etc. . .
A resolução dos resultados apresentados pode variar de plataforma para plataforma, dependendo do bar-
ramento (16 bits, 32 bits, etc. . . ) e tipo de computador onde corre o MATLAB, isto é, da representação
interna de valores reais.
Para além dos comandos format apresentados anteriormente, format compact, suprime muitas das linhas
em branco que surgem no output da linha de comando. Tal permite condensar a informação apresentada na
janela de comando.
Isto é particularmente útil quando pretender gerar matrizes de grandes dimensões, como por exemplo:
A = magic(50);
Espaços em branco à volta dos sinais “+”, “-”, “=”, são optionais. Estes, contudo, aumentam a legibil-
idade das expressões introduzidas no MATLAB prompt.
2 Ajuda do MATLAB
Existem diferentes maneiras de aceder à informação de ajuda e documentação online do MATLAB:
O comando help
A janela de ajuda (help window)
Help Desk do MATLAB (Documentação em HTML), recorrendo a um Web Browser, como por
exemplo o Netscape
Documentação Online (Online reference pages), em formato PDF e acessível a partir do Help Desk
do MATLAB
Ligação web ao site de URL: http://www.mathworks.com
Nota: O MATLAB diferencia caracteres em minúsculas ou maíusculas (case sensitive). Logo, ao intro-
duzir funções deve fazê-lo usando os carácteres minúsculos correspondentes. A representação em maíus-
culas das funções no output do comando help, tem como único propósito destacar o nome da função do
restante texto.
Todas as funções do MATLAB encontram-se organizadas por grupos de assuntos. O comando help por si
só, apresenta uma listagem de todos os grupos (directory) bem com uma descrição suscinta:
HELP topics:
matlab/general - General purpose commands.
matlab/ops - Operatores and special characters.
matalab/lang - Programming language constructs.
.
.
.
Caso seja conhecido o nome de uma determinada função, pode ainda ser usado o comando:
para aceder à documentação da mesma (Este comando dá início a uma sessão com o Browser configu-
rado por defeito).
3 O ambiente MATLAB
O ambiente MATLAB (MATLAB environment), inclui um conjunto de variáveis criadas durante uma
sessão de MATLAB, bem como ficheiros armazenados no disco duro e/ou dados persistentes durante múlti-
plas sessões.
Scripts
Um ficheiro M-file do tipo script, consiste numa sequência de expressões normais do MATLAB. Se, por
exemplo, o ficheiro tiver o nome defi.m, então digitando na linha de comando do MATLAB:
fará com que sejam executadas as expressões existentes no ficheiro (Nota: observe a ausência da extensão
.m na linha de comando, o que daria origem a erro caso estivesse presente).
Um ficheiro M-file pode chamar outro ficheiro M-file, inclusivé chamar-se a si mesmo, recursivamente.
Obs.: As variáveis num script são de âmbito (scope) global, isto é vão modificar os valores das variáveis
com o mesmo nome, já existentes no workspace de uma determinada sessão.
Funções
As funções (functions) são o segundo tipo de ficheiros M-files, sendo gerados recorrendo a um editor de
texto como no caso dos scripts. No entanto, as funções apresentam a seguinte síntaxe genérica de con-
strução:
O nome da M-file para esta função é functionname.m, e é chamada a partir do MATLAB, ou a partir
de outra M-file pelo comando:
As variáveis definidas numa função são por defeito de âmbito local. No seguimento, um simples exemplo
ilustra o uso de uma função, que permite calcular a soma de dois números gerados aleatoriamente:
function x = teste(m, n)
% TESTE Soma de dois número m e n gerados ao acaso
% com a função do MATLAB rand
m = rand(1);
n = rand(1);
x = m + n
Para guardar todas as variáveis do workspace, é utilizado o mesmo comando sem descriminação das var-
iáveis,
Finalmente, para carregar uma Mat-file no MATLAB, previamente criada, deve digitar o comando:
O comando load, permite ainda ler ficheiros em formato binário contendo matrizes geradas em sessões
anteriores, ou ficheiros de texto (geralmente com extensão .txt) contendo dados numéricos. Os ficheiros
contendo dados devem estar organizados sob a forma tabular, separados por espaços em branco (delimita-
dores).
ou no formato .eps,
4 Variáveis no MATLAB
4.1 Escalares (Matrizes 1x1)
As variáveis podem ser vistas como matrizes de tamanho 1 1 (1 linha por 1 coluna), cujos valores podem
ser reais ou complexos (parte real + parte imaginária). A atribuição do valor à variável x é feita digitando
directamente a expressão, na linha de comando. Por exemplo, se x for igual a 2:
>> x = 2
x =
2
> > y = 3+4i
y =
3.0000 + 4.0000i
(Obs.: A resposta não será visualizada se um “;” for colocado no fim da expressão)
> > pi
ans =
3.1416
>> j
ans =
0 + 1.0000i
Pode-se atribuir um valor numérico a uma variável, usando uma fórmula que utilize operadores aritméticos
e / ou números ou variáveis previamente definidas. Por exemplo, se z é a soma de x com y, variáveis já
definidas, a expressão seguinte é válida (a variável z será guardada no ambiente de trabalho (workspace), e
só será visualizada digitando z):
> > x = 2;
> > y = 3+4i;
> > z = x+y;
>> z
z =
5.0000 + 4.0000i
Os vectores podem ser definidos digitando a lista explícita dos elementos que o constituem, sendo necessário
atender a algumas convenções:
Separar os elementos do vector com espaços (ou vírgulas)
Envolver a lista completa dos elementos por parênteses rectos “ [ ] ”.
Por exemplo, defina um vector u de 4 elementos de tamanho 1 4 (1 linha por 4 colunas), isto é, um vector
linha. De facto,
> > u = [1 9 3 5]
>> u
u =
1 9 3 5
Um vector coluna pode ser definido à custa do operador transposta (transpose), representado por um tilde
( ’ ). De facto, se se considerar a transposta do vector u (vector linha), obtém-se o vector coluna 4 1:
> > u’
ans =
1
9
3
5
Vectores previamente definidos podem ser usados na definição de novos vectores. A título de exemplo,
para acrescentar 2 elementos (0 e 2) ao vector u, acima definido, digite na linha de comando:
No MATLAB, vectores podem ser gerados usando o operador colon “ : “. Por exemplo, o vector x que
toma valores entre 0 e 6, com incremento 1 (valor assumido por defeito), pode ser obtido da seguinte forma:
De notar que neste caso, os parênteses rectos não são necessários. O incremento pode ser negativo. De
facto,
Uma alternativa consiste em usar a função linspace que gera um vector especificando o primeiro e último
número, bem como o número de elementos igualmente espaçados entre ambos. Por exemplo,
A função logspace tem um comportamento semelhante, exceptuando o facto de que os elementos encontram-
se espaçados logaritmicamente entre o primeiro e último.
A resposta associada à variável ans, diz-nos que o vector x tem dimensões 1 5, isto é, x é um vector
de 1 linha por 5 colunas.
Por exemplo, para definir uma matriz A de dimensões 3 3 (3 linhas por 3 colunas), simplesmente digite
na linha de comando:
Uma vez digitada a matriz, ela é automaticamente relembrada no workspace do MATLAB, e poderá ser
referida e, chamada novamente, simplesmente digitando A. O tamanho da matriz A será dado então por,
No caso de x ter sido definido como um vector, diag(x) é uma matriz, cujos os elementos da diago-
nal principal são os elementos de x, e todas as outras entradas nulas. Se A é uma matriz quadrada, então
diag(A) é um vector coluna constituído pelos elementos da diagonal principal de A. Qual será então o
resultado de diag(diag(A))?
As matrizes podem ser geradas por concatenação de blocos (matrizes). Por exemplo, se A é uma ma-
triz 3 3, então:
Repare a utilização do operador colon, “ : “, previamente introduzido e que neste caso significa “con-
siderar todas as colunas”.
Da mesma forma, a sub-matriz de A, sub, constituída pelos elementos das linhas 2 e 3, e colunas 2, 3 e 4,
será definida por:
Pode-se então usar subscriptos para definir ou alterar elementos (linhas e / ou colunas) de uma matriz.
Vejamos,
Como exemplo final, pretende-se atribuir ao vector x, a última linha de A. Para tal, é introduzido na linha
de comando,
De notar que o resultado de size(A,1) corresponde ao número de linhas de A, enquanto que size(A,2),
ao número de colunas da matriz.
5 Álgebra matricial
5.1 Operações aritméticas em matrizes
Os operadores aritméticos básicos em matrizes (e, claro, em escalares, que representam casos particulares
de matrizes), encontram-se na Tabela 4. No seguimento são mostrados alguns exemplos de aplicação destes
operadores,
(Obs.: Uma mensagem de erro ocorre se os tamanhos das matrizes não forem compatíveis para a operação
pretendida).
Relativamente à divisão de matrizes no MATLAB, temos que a solução de A*x = b é dada por x =
A\b, isto é pelo uso do operador “ \ “ (divisão à esquerda), enquanto que a solução de x*A = b é dada por
x = b/A (divisão à direita), na condição da matriz A ser invertível e todas as matrizes serem compatíveis.
A adição e subtracção envolvem operações aritméticas “elemento a elemento” (element-by-element), en-
quanto que a multiplicação e divisão de matrizes, não. No entanto, o MATLAB providencia operações
elemento a elemento escrevendo “.” antes do operador considerado, como pode ser visto na Tabela 5. O
exemplo seguinte ilustra a diferença entre a multiplicação de matrizes e a multiplicação elemento a ele-
mento,
>> A = [1 2; 3 4]
A =
1 2
3 4
>> B = A*A
B =
7 10
15 22
>> C = A.*A
C =
1 4
9 16
Como se pode ver, os resultados anteriores correspondem de facto às matrizes A^2 e A.^2, respectiva-
mente.
Como exemplo final, pretende-se construir o vector x cos 2t e o vector y t cos 4t , para os instantes
de tempo t 0
1
2
100 . Na linha de comando dever-se-á escrever,
A soma dos elementos de A, ao longo das colunas, será então dada por,
o que corresponde a um vector linha, enquanto que a soma de todos os elementos da matriz A, ao lon-
go das suas linhas, é feita da seguinte forma,
As funções MATLAB podem ter um ou mais argumentos de saída. Por exemplo, y = eig(A), ou
simplesmente eig(A) produz um vector contendo os valores próprios de uma matriz A, enquanto que [U
D] = eig(A) produz uma matriz U cujas colunas são os vectores próprios de A, e uma matriz diagonal D
com os valores próprios de A, na sua diagonal principal.
6 Gráficos no MATLAB
O MATLAB possui numerosas funções para criar gráficos bidimensionais e tridimensionais, de elevada
qualidade.
O exemplo seguinte ilustra esta função usada para representar a função seno (Figura 1):
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
0 2 4 6 8 10 12 14
Podemos representar no mesmo gráfico, recorrendo a apenas um só comando, pares de valores (t, y). O
MATLAB refere-se automaticamente a uma lista pré-definida de cores para descriminar cada conjunto de
dados. Por exemplo, três curvas em função de t podem ser representadas da seguinte forma (Figura 2):
>> t = 0:pi/100:4*pi;
>> y1 = sin(t);
>> y2 = sin(t-0.75);
>> y3 = sin(t-1.5);
>> plot(t,y1,t,y2,t,y3)
1
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
0 2 4 6 8 10 12 14
Existem opções para definir o tipo e cor da linha do gráfico, recorrendo à seguinte sintaxe,
Os pontos do gráfico em y podem ser representados por uma variedade de símbolos, tais como “ + “, “
. ”, “ * ”, “ o ”, ou “ x ”. Algumas das cores disponíveis são “ r “ (vermelho), “ b “ (azul), “ g “ (verde), “
y “ (amarelo), “ w “ (branco) e “ k “ (preto). O tipo de linhas poderá ser escolhido, como por exemplo: “ -
“ (linha sólida), “ -- “ (linha tracejada), “ -. “ (linha tracejada com pontos) e “ : “ (linha pontilhada).
Estas opções podem ser usadas em conjunto, como se mostra no exemplo seguinte (Figura 3):
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
0 1 2 3 4 5 6 7
0.8
0.6
0.4
0.2
−0.2
−0.4
0 2 4 6 8 10 12 14
Figura 4: Representação da função discreta y[k] = sin(k)/k, por intermédio do comando stem.
0.8
0.6
0.4
0.2
2
10 0
−0.2
−0.4
−0.6
−0.8
1
10 −1
0 100 200 300 400 500 600 700 800 900
>> k = 0:pi/10:4*pi;
>> y1 = sin(k);
>> y2 = sin(k)./k;
>> subplot (311), plot(k,y1,’-xb’)
>> subplot (312), stem(k,y1,’r’,’filled’)
>> subplot (325), plot(k,y2)
>> subplot (326), stem(k,y2)
0.5
−0.5
−1
0 2 4 6 8 10 12 14
0.5
−0.5
−1
0 2 4 6 8 10 12 14
1 1
0.5 0.5
0 0
−0.5 −0.5
0 5 10 15 0 5 10 15
O MATLAB possui um grande número de comandos, usados na visualização de gráficos com ano-
tações, títulos, legendas, . . .
Alguns destes comandos, de uso mais frequente, encontram-se descritas na Tabela 10. O exemplo seguinte
mostra algumas destas capacidades (Figura 7),
>> t = linspace(0,8,400);
>> y1 = t.*exp(-t);
>> y2 = t.*exp(-t).*cos(2*pi*t);
>> plot(t,y1,’-.r’)
>> hold on
>> plot(t,y2,’b’)
>> title(’Gráfico das funções y1 e y2, em função de t’)
>> xlabel(’Tempo (s)’)
>> ylabel(’Funções y1(t) e y2(t)’)
>> axis([-1 7 -0.5 0.5])
>> grid
0.4
0.3
0.2
Funções y1(t) e y2(t)
0.1
−0.1
−0.2
−0.3
−0.4
−0.5
−1 0 1 2 3 4 5 6 7
Tempo (s)
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
>> grid on
>> axis square
35
30
25
20
15
10
0
1
0.5 1
0.5
0
0
−0.5
−0.5
−1 −1
Outras funções do MATLAB permitem elaborar gráficos 2D/3D. Alguns exemplos representativos do
potencial do MATLAB, são apresentados a seguir (Figuras 9, 10, 11):
60
55
50
45
40
35
30
25
20
15
70 80 90 100 110 120 130 140
−5
−10
3
2
3
1 2
0 1
−1 0
−1
−2 −2
−3 −3
0.5
0.4
0.3
0.2
0.1
−0.1
−0.2
−0.3
−0.4
−0.5
2
−1
1.5 2
0.5 1
−0.5 0
−2 −1.5 −1
−2
if A estrutura if avalia uma expressão lógica e executa um conjunto de afirmações (statements) quando
esta é verdadeira. As expressões (keywords) optionais elseif e else, permitem a execução de
conjuntos de afirmações alternativas. O código a executar, abrangido pela estrutura if, é terminado
pela expressão end e não envolve o uso de parênteses curvos ou chavetas.
switch A estrutura switch executa grupos de afirmações baseada no valor de uma variável ou expressão.
As expressões case e otherwise delimitam os diferentes grupos. Apenas é executado o primeiro
caso a ocorrer. Esta estrutura deve sempre conter a expressão end como delimitador.
for Os ciclos for repetem um grupo de afirmações, durante um pré-determinado número de vezes. Esta
estrutura deve sempre conter a expressão end como delimitador.
while Os ciclos while repetem um grupo de afirmações, indefinidamente, enquanto for válida uma deter-
minada condição lógica. Esta estrutura deve sempre conter a expressão end como delimitador.
break A afirmação break permite sair antecipadamente de um ciclo for ou while.
No seguimento estas estruturas serão abordadas com maior profundidade, acompanhadas de exemplos.
if condição
bloco de afirmações
end
O bloco de afirmações apenas será executado, se se verificar a veracidade da condição, isto é sempre
que for avaliada como verdadeira. É ainda possível proceder a ramificações, como se ilustra no seguinte
exemplo:
“=” é empregue em afirmações de atribuição (assignment) de valores, enquanto que “==” é usado numa
relação.
Operações lógicas podem ainda ser ligadas ou quantificadas pelos operadores lógicos, descritos na Tabela
12. Quando aplicadas a escalares, as relação dos dois quadros anteriores resultam simplesmente no escalar
1 ou 0 dependendo se a relação for verdadeira ou falsa. Experimente digitar na linha de comando 2 < 4,
4 > 2, 5 == 7, e 9 == 9.
Quando aplicadas a matrizes com as mesmas dimensões, a relação resulta numa matriz de uns (1 = ver-
dadeiro) e zeros (0 = falso), isto é, estas operações são executadas elemento a elemento (element-by-
element). Experimente A = rand(4), B = triu(A), A == B. Se as matrizes não tiverem as mesmas di-
mensões, a relação resulta em erro.
7.3 for
O ciclo for repete um bloco de afirmações um número fixo, pré-determinado, de vezes. A estrutura é
delimitada com a expressão end.
7.4 while
O ciclo while repete um bloco de código indefinidamente, sob o controlo de uma condição lógica. O ciclo
é quebrado quando a condição deixar de ser válida (falsa). O corpo do ciclo é delimitado com a expressão
end.
Por exemplo, para um dado número a, o código que se segue irá calcular e apresentar o menor inteiro
não-negativo n tal que, 2n a :
> > n = 0;
> > while 2ˆn < a
n = n + 1;
end
>> n
> > ...
7.5 break
A expressão break permite sair antecipadamente de um ciclo for ou while. Nos casos de ciclos em escada
(nesting), break permite apenas sair do ciclo mais interno.
8.1 Polinómios
Os polinómios surgem com bastante frequência na teoria de sistemas. O MATLAB representa polinómios
sob a forma de vectores linha, em que as respectivas entradas são os coeficientes do polinómio considerado.
Por exemplo, o polinómio 2x3 3x2 5x 10 é representado no MATLAB digitando:
Na Tabela 13, é apresentada uma lista dos comandos mais importantes na manipulação de polinómios.
comando dftmtx utiliza uma sintaxe muito directa para o cálculo da Transformada Discreta de Fourier
(DFT). Após definir um vector x, a transformada DFT pode ser obtida por:
Para calcular a DFT inversa de uma matriz X, será necessário digitar o seguinte código na linha de co-
mando,
A Transformada Rápida de Fourier (FFT) de uma sequência de números, é calculada usando o coman-
do fft do seguinte modo,
B s
H s
A s
A resposta impulsional do sistema pode ser representada graficamente através do seguinte comando:
Outro comando, lsim, permite conhecer a resposta do sistema para uma função de entrada arbitrária.
Para tal, é necessário cria inicialmente um vector t que contenha valores do tempo em segundos, para os
quais se queira conhecer a resposta do sistema. Usualmente, isto é feito recorrendo ao operador colon “ : “,
onde a representa o instante inicial, b o incremento e c o instante final. Finalmente, definindo a entra-
da x em função de t, como por exemplo x t t, é possível representar a resposta digitando:
Como exemplo, o código seguinte permite representar gráficamente o resultado do comando step, isto
é a resposta em degrau de um sistema (ver Figura 12),
Para obter a resposta impulsional, basta apenas substituir o comando step por impulse, como se segue:
Finalmente, representar a função resposta a uma determinada entrada arbitrária x, é conseguida através
do seguinte código:
1.5
Resposta do sistema
1
0.5
−0.5
−1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
t (s)
0.5
Resposta do sistema
−0.5
−1
−1.5
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
t (s)
Este comando assume que os vectores a e b são criados no MATLAB, de maneira a que o primeiro el-
emento de ambos correspondem a n 0; condição necessária para que o primeiro elemento do vector de
saída y seja o elemento n 0.
O comando conv pode ainda ser usado na multiplicação de polinómios, onde os coeficientes dos respec-
tivos polinómios são introduzidos como elementos de vectores. Os elementos do vector, nm = conv(n,
m), serão então os coeficientes do polinómio resultante da multiplicação, n s m s .
Outro comando, deconv, representa o procedimento inverso da operação de convolução. Por outro la-
do, este comando permite ainda obter os coeficientes da divisão de polinómios, c s ab ss , como se segue:
através dos comandos: interp1 e interp2. O primeiro comando realiza uma interpolação a uma dimen-
são (1-D), enquanto que o segundo permite realizar uma interpolação bi-dimensional (2-D).
onde xi representa o vector contendo o(s) ponto(s) a ser(em) interpolado(s), yi o vector resultante da inter-
polação da função y nos pontos considerados, e ’method’ um dos métodos considerados: linear, primeiros
vizinhos, spline e cúbica (sendo o método linear considerado por defeito).
No seguimento, mostra-se um exemplo de aplicação da interpolação com o método linear e spline para
a função y cos x ; ver Figura 13.
0.8
0.6
0.4
0.2
−0.2
−0.4
−0.6
−0.8
−1
−8 −6 −4 −2 0 2 4 6 8
Obs.: pode obter informação mais completa sobre estes comandos, digitando na linha de comando:
em que o escalar temp representa a temperatura calculada no instante 7.2 segundos, e onde os vectores
linha x e y contêm valores do tempo e da temperatura correspondente, respectivamente.
Caso pretender ainda representar graficamente uma curva spline noutro intervalo de tempos, basta gerar
um novo vector newx, usando-o como terceiro argumento do comando spline, como se segue:
Para se ter uma ideia da qualidade do ajuste, é necessário calcular a distância, segundo o eixo vertical,
de cada ponto à recta estimada, e somar posteriormente os quadrados das mesmas com o comando sum,
como se segue:
O melhor recta ajustada, será aquela que minimiza o valor do escalar somadist.
Na Figura 14, encontram-se representadas as duas rectas ajustadas do exemplo supracitado, onde a rec-
ta mais provável é obtida pelo uso do comando polyfit.
25
y1 = 2.6x
20
Temperatura (Graus Celsius)
15
−5
0 1 2 3 4 5 6 7 8 9 10
Tempo (min)
Figura 14: Exemplo de aplicação do comando polyfit, no ajuste da curva de temperatura de um sólido.
10 Créditos
Algumas secções deste tutorial foram em parte baseadas em trabalhos anteriores, aos quais os presentes
autores prestam os seus agradecimentos:
39
ÍNDICE INTRODUÇÃO ao MATLAB
Variáveis, Sessões, 9
Vectores coluna, 13, 16
Vectores linha, 6, 13, 14
Vectores próprios, 21
Vectores, MATLAB, 13
Veracidade, Condição de, 29
Verdadeira, Relação, 30
view, Comando, 27
Vim, Editor, 9
Visualização, Múltiplos gráficos, 24
Web Browser, 8, 9
while, Estrutura, 29, 31
who, Comando, 9
whos, Comando, 9
Win32, Arquitectura, 5
Wordpad, Editor, 9
Workspace, MATLAB, 9, 10, 12
Z, Transformadas, 34
zeros, Comando, 15, 16
zp2tf, Comando, 32
zplane, Comando, 35