Você está na página 1de 42

INTRODUÇÃO ao MATLAB

Carlos A. A. Vinhais (cav@isep.ipp.pt)


Cristiano S. de Abreu (csa@isep.ipp.pt)

Setembro 2002

DEFI - DEPARTAMENTO DE FÍSICA (http://www.defi.isep.ipp.pt )


ISEP - INSTITUTO SUPERIOR DE ENGENHARIA DO PORTO (http://www.isep.ipp.pt )

(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

7 Estruturas de controlo de fluxo 29


7.1 Estruturas if, elseif, else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2 switch e case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.3 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.4 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.5 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

[C. Vinhais, C. Abreu - DEFI, ISEP] 2


LISTA DE TABELAS INTRODUÇÃO ao MATLAB

8 Sinais e Análise de Sistemas 31


8.1 Polinómios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8.2 Análise de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.3 Análise de Sistemas Contínuos no tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.3.1 Representação de Funções de Transferência . . . . . . . . . . . . . . . . . . . . . 32
8.3.2 Simulações temporais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.4 Análise de Sistemas Discretos no tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.4.1 Convolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.4.2 Transformadas de Laplace e Transformadas Z . . . . . . . . . . . . . . . . . . . . 34

9 Interpolação e ajuste de curvas 34


9.1 Interpolação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
9.2 O comando spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.3 Ajuste de curvas pelo método dos mínimos quadrados . . . . . . . . . . . . . . . . . . . . 36
9.3.1 Regressão linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
9.3.2 O comando polyfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

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

[C. Vinhais, C. Abreu - DEFI, ISEP] 3


LISTA DE TABELAS INTRODUÇÃO ao MATLAB

16 Comandos para manipulação de Transformadas de Laplace e Transformadas Z. . . . . . . 35

[C. Vinhais, C. Abreu - DEFI, ISEP] 4


1 INTRODUÇÃO INTRODUÇÃO ao MATLAB

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.

1.1 MATLAB, para que serve ?


O MATLAB é uma linguagem de programação de alto-desempenho para computação técnica. Este in-
tegra computação, visualização e programação num ambiente amigável, onde os problemas e respectivas
soluções são formuladas recorrendo à familiar notação matemática. Usos típicos da ferramenta MATLAB
englobam, entre outras:

Matemática e computação

Desenvolvimento de algoritmos

Modelação, simulação e prototipagem

Análise de dados e visualização dos mesmos

Representação de gráficos Científicos e de Engenharia

Desenvolvimento de Aplicações, incluíndo GUI’s (Graphical User Interface)

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. . .

1.2 O interface MATLAB


Para fazer correr o MATLAB numa plataforma do tipo Win32 (MS Windows), clique duplamente no icon
do MATLAB. Em plataformas do tipo UNIX-like (Unix, Linux, etc. . . ), digite matlab na linha de comando
(shell) do system prompt. Para sair do MATLAB em qualquer altura, digite quit no MATLAB prompt.

1.2.1 A janela de comando


O modo mais simples de introduzir linhas de código no MATLAB, é através da linha de comando (MAT-
LAB prompt), existente na janela de comando. Isto é, digitando comandos e expressões após o MATLAB
prompt, o output dos resultados é observado nessa mesma janela.
Esta secção descreve alguns procedimentos, usados para alterar a formatação de output dos resultados
apresentados na janela de comando.

[C. Vinhais, C. Abreu - DEFI, ISEP] 5


1 INTRODUÇÃO INTRODUÇÃO ao MATLAB

1.2.2 O comando format


Este comando controla o formato númerico dos valores apresentados no MATLAB. Apenas a apresentação
visual dos números é afectada, e não a sua representação interna ou modo como o MATLAB calcula ou
grava os mesmos. No seguimento são mostrados os diferentes formatos, acompanhados do output produzi-
do a partir de um vector linha com diferentes componentes.

> > x = [2.3545e-8 5/4];


> > format short; x
x =
0.0000 1.2500
> > format short e; x
x =
2.3545e-08 1.2500e+00
> > format short g; x
x =
2.3545e-08 1.25
> > format long; x
x =
0.00000002354500 1.25000000000000
> > format long e; x
x =
2.354500000000000e-08 1.250000000000000e+00
> > format long g; x
x =
2.3545e-08 1.25
> > format bank; x
x =
0.00 1.25
> > format rat; x
x =
* 5/4
> > format hex; x
x =
3e59480014e7df73 3ff4000000000000

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.

1.2.3 Supressão do output


Se digitar uma expressão (input) no MATLAB prompt e primir a tecla <Return>, serão automaticamente
apresentados os resultados no écran. Contudo, se terminar a linha de input com “ ; ” (semicolon), O
MATLAB realiza os cálculos sem no entanto apresentar o resultado, como se vê no exemplo seguinte:

[C. Vinhais, C. Abreu - DEFI, ISEP] 6


1 INTRODUÇÃO INTRODUÇÃO ao MATLAB

> > format short


>> x = 2 + 3
x =
5
> > y = 1 + 7;
>>

Isto é particularmente útil quando pretender gerar matrizes de grandes dimensões, como por exemplo:
A = magic(50);

1.2.4 Linhas de código extensas


Se uma expressão não couber numa mesma linha, utilize “ ... ”, seguido das teclas <Return> ou <En-
ter>, para indicar que essa mesma expressão se prolonga na linha seguinte. A título de exemplo,

> > B = [0 1 -1 2 -2 3 -3 4 -4 5 -5 ...


6 -6 7 -7 8 -8 9 -9 10 -10];
>>

Espaços em branco à volta dos sinais “+”, “-”, “=”, são optionais. Estes, contudo, aumentam a legibil-
idade das expressões introduzidas no MATLAB prompt.

1.2.5 Edição da linha de comando


Diferentes setas e teclas de controlo existentes no teclado, permitem chamar novamente, editar e reutilizar
comandos introduzido anteriormente. Tal permite, por exemplo, corrigir código introduzido incorrecta-
mente por acidente, sem necessidade de voltar a digitar a globalidade das expressões.
Digitando alguns carácteres e logo de seguida usar a tecla  , permite-lhe encontrar uma linha previamente
introduzida. A lista de teclas de edição da linha de comando, varia de computador para computador. Deve
experimentar quais das teclas da Tabela 1, se encontram disponíveis no seu sistema.

Tabela 1: Lista de teclas de edição da linha de comando.


 ctrl - p Chamar a linha anterior

ctrl -n Chamar a linha seguinte

ctrl - b Recuar um carácter

ctrl - f Avançar um carácter

ctrl - ctrl - r Avançar uma palavra

ctrl - ctrl - l Recuar uma palavra
home ctrl - a Ir ao início da linha
end ctrl - e Ir ao fim da linha
esc ctrl - u Limpar a linha
del ctrl - d Apagar o carácter sobre o cursor
backspace ctrl - h Apagar o carácter antes do cursor
ctrl - k Apagar até ao fim da linha

[C. Vinhais, C. Abreu - DEFI, ISEP] 7


2 AJUDA DO MATLAB INTRODUÇÃO ao MATLAB

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

2.1 O comando help


O comando help representa a forma elementar de determinar a síntaxe e utilização de uma determinada
função do MATLAB. A informação é representada directamente na janela de comando. Por exemplo,

> > help realmax

REALMAX Largest positive floating point number.


x = realmax is the largest floating point number representable
on this computer. Anything larger overflows.

See also EPS, REALMIN.


>>

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

HELP topics:
matlab/general - General purpose commands.
matlab/ops - Operatores and special characters.
matalab/lang - Programming language constructs.
.
.
.

2.2 A janela de ajuda


A janela de ajuda encontra-se disponível nos PC’s por selecção da opção Help Window, sob o menu Help,
ou carregando no ícon com um ponto de interrogação. Esta é ainda acessível digitando helpwin na janela
de comando.
Pode também usar a janela de ajuda num assunto particular, digitando:

> > helpwin assunto

[C. Vinhais, C. Abreu - DEFI, ISEP] 8


3 O AMBIENTE MATLAB INTRODUÇÃO ao MATLAB

2.3 Help Desk do MATLAB


O Help Desk do MATLAB pode ser acedido em PCs seleccionando a opção Help Desk, sob o menu
Help, ou ainda digitando o comando helpdesk em todo o tipo de plataformas. Grande parte da documen-
tação encontra-se sob a forma de páginas HTML, sendo por isso acessível recorrendo a um Web Browser
(Netscape, Internet Explorer, etc. . . ).

Caso seja conhecido o nome de uma determinada função, pode ainda ser usado o comando:

> > doc função

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.

3.1 O Workspace do MATLAB


O Workspace do MATLAB é uma área de memória, acessível a partir da linha de comando. Existem
dois comandos: who e whos, para visualizar o conteúdo do workspace. O primeiro fornece uma descrição
suscinta, enquanto que o último fornece uma descrição do tamanho e classe das variáveis armazenadas no
workspace.
As variáveis armazenadas no workspace podem ser limpas com o uso do comando: clear.

3.2 Ficheiros do MATLAB


Existem diferentes tipos de ficheiros no MATLAB. Estes podem ser ficheiros que contêm scripts (pe-
quenos programas), isto é blocos de código com comandos do MATLAB, ficheiros onde são definidas
funções criadas pelo utilizador (user-defined functions), que actuam de modo semelhante às funções pré-
implementadas no MATLAB (built-in functions), e ficheiros contendo dados numéricos ou gráficos.

3.2.1 Ficheiros com extensão .m (M-file)


Os comandos introduzidos na linha de comando são interpretados pelo MATLAB, apenas no âmbito da pre-
sente sessão. Após fechar o programa, todas as expressões digitadas deixam de estar novamente disponíveis
para futuras sessões. Torna-se por isso necessário recorrer a outros meios de modo a evitar reentroduzir to-
do o código entretanto digitado, em sessões anteriores. Existem dois processos para reutilização de código
entre sessões: scripts e funções. Ambas fazem uso de M-files (assim chamadas devido a terem extensão
.m).
Os ficheiros M-files são criados recorrendo a um editor de texto, como por exemplo: emacs ou vim
(plataformas Unix e Linux), wordpad ou notepad (plataformas Windows). A grande vantagem das M-files,
reside no facto dos comandos ficarem gravados e poderem ser reutilizados / modificados, numa posterior
sessão.
Obs.: Deve evitar recorrer a processadores de texto, como o word, dado que os ficheiros de output (.doc,
.dot, .rtf, etc. . . ), apresentam formatações incompatíveis com o interpretador do MATLAB.

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:

[C. Vinhais, C. Abreu - DEFI, ISEP] 9


3 O AMBIENTE MATLAB INTRODUÇÃO ao MATLAB

> > defi

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:

function [output 1, output 2] = functionname(input1, input2)


%
%[output 1, output 2] = functionname(input1, input2)
%
% Alguns comentários sobre o objectivo da função
%
MATLAB command 1;
MATLAB command 2;
MATLAB command 3;
.
.
.

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:

> > [output 1, output 2] = functionname(input1, input2)

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

3.2.2 Ficheiros com extensão .mat (Mat-File)


Os Mat-files (assim chamadas devido a terem extensão .mat), são ficheiros do tipo binários (binaries),
compactados, usados para armazenar resultados numéricos. Este tipo de ficheiros pode ser empregue para
guardar resultados gerados numa sessão de MATLAB. Por exemplo, para guardar os valores associados às
variáveis var1 e var2 no ficheiro de nome Julho15_2002.mat , digite na linha de comando:

> > save Julho15_2002.mat var1 var2

Para guardar todas as variáveis do workspace, é utilizado o mesmo comando sem descriminação das var-
iáveis,

[C. Vinhais, C. Abreu - DEFI, ISEP] 10


4 VARIÁVEIS NO MATLAB INTRODUÇÃO ao MATLAB

> > save nomeficheiro.mat

Finalmente, para carregar uma Mat-file no MATLAB, previamente criada, deve digitar o comando:

> > load nomeficheiro (ou load nomeficheiro.mat)

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).

3.2.3 Ficheiros com extensão .ps (Postscript)


Gráficos gerados no MATLAB podem ser gravados num grande número de formatos, sendo contudo práti-
ca comum gravá-los em Postscript (.ps) ou Encapsulated Postscript (.eps). Tal deve-se, essencialmente,
à excelente qualidade de output e portabilidade entre plataformas diferentes, para posterior impressão e
integração em documentos .ps ou .pdf (Portable Document Format da Adobe).
Existem duas vias para proceder à gravação (hardcopy) de gráficos no MATLAB, seleccionando a opção
Print na barra de menu ou através da linha de comando:

> > print -dps nomeficheiro.ps

ou no formato .eps,

> > print -deps nomeficheiro.eps

3.2.4 Ficheiros Diary


É possível guardar um registo da sessão de MATLAB, recorrendo ao comando de inicialização:

> > diary nomeficheiro

Para terminar o registo e fechar o ficheiro do tipo diary, digite:

> > diary off

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:

[C. Vinhais, C. Abreu - DEFI, ISEP] 11


4 VARIÁVEIS NO MATLAB INTRODUÇÃO ao MATLAB

>> 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)

4.2 Variáveis pré-definidas


Algumas variáveis encontram-se já definidas pelo MATLAB. Por exemplo, a constante de Arquimedes
corresponde a:

> > pi
ans =
3.1416

4.3 Variáveis complexas


A entidade imaginária pode ser definida por i ou j:

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

Algumas operações importantes em variáveis complexas são definidas na Tabela 2:

Tabela 2: Operações em variáveis complexas.


real Parte real
imag Parte imaginária
abs módulo
angle fase (ângulo)
conj conjugado

[C. Vinhais, C. Abreu - DEFI, ISEP] 12


4 VARIÁVEIS NO MATLAB INTRODUÇÃO ao MATLAB

Por exemplo, com a variável (complexa) z acima definida, obtém-se:


> > z = 5 + 4i;
> > c = imag(z)
c =
4
> > c = abs(z)
c =
6.4031
> > c = angle(z)
c =
0.6747
> > conj(z)
ans =
5.0000 - 4.0000i

4.4 Vectores (linha ou coluna)


O MATLAB é baseado na álgebra vectorial e matricial. Os escalares são tratados como matrizes de taman-
ho 1  1 (1 linha por 1 coluna), enquanto que os vectores são matrizes de tamanho 1  n (vector linha) ou
n  1 (vector coluna).
Portanto, operações entre vectores e matrizes tornam-se tão simples quanto operações numa calculadora
comum.

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:

[C. Vinhais, C. Abreu - DEFI, ISEP] 13


4 VARIÁVEIS NO MATLAB INTRODUÇÃO ao MATLAB

> > v = [0 2];


> > w = [u v]
w =
1 9 3 5 0 2

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:

> > x = 0:6


x =
0 1 2 3 4 5 6

De notar que neste caso, os parênteses rectos não são necessários. O incremento pode ser negativo. De
facto,

> > x = 10:-2:2


x =
10 8 6 4 2

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,

> > x = linspace(0,10,5)


x =
0 2.5000 5.0000 7.5000 10.0000

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.

O comprimento de um vector pode ser verificado usando o comando length:

> > length(x)


ans =
5

Em vez do comando length, poder-se-ia usar size(x):

> > size(x)


ans =
1 5

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.

4.5 Matrizes (n linhas por m colunas)


4.5.1 Definição de matrizes por listagem explícita dos elementos
Para definir uma matriz listando os elementos que a constituem, é necessário atender a algumas convenções:

Separar os elementos de uma linha com espaços

Usar ponto e vírgula “;” para indicar o fim de cada linha

Envolver a lista completa dos elementos por parênteses rectos “ [ ] “

[C. Vinhais, C. Abreu - DEFI, ISEP] 14


4 VARIÁVEIS NO MATLAB INTRODUÇÃO ao MATLAB

Por exemplo, para definir uma matriz A de dimensões 3  3 (3 linhas por 3 colunas), simplesmente digite
na linha de comando:

> > A = [1 2 3 4; 5 6 7 8; 9 10 11 12]


A =
1 2 3 4
5 6 7 8
9 10 11 12

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,

> > size(A)


ans =
3 4

A resposta permite verificar que A é constituída por 3 linhas e 4 colunas.

4.5.2 Definição de matrizes usando funções pré-definidas


O MATLAB possui funções pré-definidas (built-in functions), que permitem criar matrizes “especiais” de
forma muito conveniente. Algumas destas funções encontram-se na Tabela 3.
Por exemplo, zeros(m,n) produz uma matriz de zeros, com m linhas e n colunas. Por outro lado,
zeros(n) produz uma matriz quadrada com igual número, n, de linhas e colunas.
Se A for uma matriz, zeros(size(A)) produz uma matriz de zeros, com as mesmas dimensões da matriz
A.

Tabela 3: Funções pré-definidas do MATLAB, para criar matrizes.


eye Matriz identidade
zeros Matriz de elementos nulos (zeros)
ones Matriz de elementos unitários (uns)
diag Gerar ou extraír a diagonal principal
rand Matriz de elementos aleatórios (compreendidos entre 0 e 1)
magic Matriz mágica

[C. Vinhais, C. Abreu - DEFI, ISEP] 15


4 VARIÁVEIS NO MATLAB INTRODUÇÃO ao MATLAB

São apresentados, no seguimento, alguns exemplos envolvendo as funções supracitadas.

> > M = eye(3) % Matriz identidade, de tamanho 3x3


M =
1 0 0
0 1 0
0 0 1
> > A = rand(2,3) % Matriz 2x3, de elementos aleatórios
A =
0.4565 0.8214 0.6154
0.0185 0.4447 0.7919
> > zeros(size(A))
ans =
0 0 0
0 0 0

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:

> > B = [A, zeros(3,2); zeros(2,3) eye(2)];

produz uma matriz 5  5.

4.5.3 Subscriptos (Subscripting) e Sub-matrizes


O elemento da linha i e da coluna j de uma matriz A é denotado por A(i,j). Por exemplo, A(3,2) corresponde
ao elemento da linha 3 e coluna 2 da matriz A. Considerando a matriz A, de tamanho 3  4, definida por:

> > A = [1 2 3 4; 5 6 7 8; 9 10 11 12]


A =
1 2 3 4
5 6 7 8
9 10 11 12
> > x = A(3,2)
x =
10

Toda a 2a linha de A pode ser armazenada no vector (linha) y, digitando:

> > y = A(2,:)


y =
5 6 7 8

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:

[C. Vinhais, C. Abreu - DEFI, ISEP] 16


5 ÁLGEBRA MATRICIAL INTRODUÇÃO ao MATLAB

> > sub = A(2:3,2:4)


sub =
6 7 8
10 11 12

Pode-se então usar subscriptos para definir ou alterar elementos (linhas e / ou colunas) de uma matriz.
Vejamos,

> > A(:,2) = 0


A =
1 0 3 4
5 0 7 8
9 0 11 12

iguala todos os elementos da coluna 2 de A a zero.

Como exemplo final, pretende-se atribuir ao vector x, a última linha de A. Para tal, é introduzido na linha
de comando,

> > x = A(size(A,1),:)


x =
9 0 11 12

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,

> > a = [1 2 3 4];


> > b = [5 6 7 8];
>> c = a + b
c =
6 8 10 12

(Obs.: Uma mensagem de erro ocorre se os tamanhos das matrizes não forem compatíveis para a operação
pretendida).

Tabela 4: Operadores aritméticos em matrizes.


+ Adição
- Subtracção
* Multiplicação
/ Divisão à direita
\ Divisão à esquerda
ˆ Operador expoente (potência)
’ Transposta (conjugada)

[C. Vinhais, C. Abreu - DEFI, ISEP] 17


5 ÁLGEBRA MATRICIAL INTRODUÇÃO ao MATLAB

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.

Tabela 5: Operadores aritméticos elemento a elemento.


.* Multiplicação (elemento a elemento)
./ Divisão à direita (elemento a elemento)
.\ Divisão à esquerda (elemento a elemento)
.ˆ Operador expoente (elemento a elemento)
.’ Transposta (não conjugada)

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,

> > t = 0:100;


> > x = cos(2*t);
> > y = t .* cos(4*t);

5.2 Funções matemáticas


O MATLAB possui um número de funções pré-definidas que operam em matrizes, elemento a elemento.
Na Tabela 6 são apresentadas algumas das funções de utilização mais corrente.

5.3 Funções em vectores


Outras funções do MATLAB operam essencialmente em vectores (linha ou coluna), mas actuam nas ma-
trizes m  n (m  2) coluna a coluna, ou seja, produzem um vector linha que contém os resultados da sua
aplicação a cada coluna. Algumas destas funções encontram-se descritas no quadro da Tabela 7.
Como exemplos de aplicação destas funções, temos:

[C. Vinhais, C. Abreu - DEFI, ISEP] 18


5 ÁLGEBRA MATRICIAL INTRODUÇÃO ao MATLAB

Tabela 6: Funções pré-definidas para operações sobre matrizes, elemento a elemento.


sin Seno
cos Coseno
tan Tangente
asin Arcseno
acos Arcoseno
atan Arctangente
exp Exponencial
log Logaritmo natural (neperiano)
log10 Logaritmo de base 10
sqrt Raíz quadrada
abs Valor absoluto (módulo)
sign Sinal
round Arredondamento para o inteiro mais próximo
floor Arredondamento por defeito
ceil Arredondamento por excesso
rem Resto da divisão inteira

> > v = [1 9 3 5 0 2];


> > sum(v)
ans =
20
> > mean(v)
ans =
3.3333
> > std(v)
ans =
3.2660
> > sort(v)
ans =
0 1 2 3 5 9

Tabela 7: Funções estatísticas do MATLAB para vectores.


max Valor máximo
min Valor mínimo
sort Ordenação de elementos
sum Soma de elementos (linha ou coluna)
prod Produto de elementos
median Mediana
mean Média aritmética
std Desvio padrão
cov Variância (Covariância no caso de matrizes)
any Qualquer (retorna 1 se verdadeiro, 0 se falso)
all Todos (retorna 1 se verdadeiro, 0 se falso)

[C. Vinhais, C. Abreu - DEFI, ISEP] 19


5 ÁLGEBRA MATRICIAL INTRODUÇÃO ao MATLAB

No caso de ser uma matriz vem,

> > A = [1 2 3;4 5 6]


A =
1 2 3
4 5 6

A soma dos elementos de A, ao longo das colunas, será então dada por,

> > sum(A)


ans =
5 7 9

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,

> > sum(A,2)


ans =
6
15
> > max(A)
ans =
4 5 6
> > max(max(A))
ans =
6

5.4 Funções em matrizes


As capacidades do MATLAB residem fundamentalmente nas suas funções matriciais, encontrando-se as
de maior utilidade descritas na Tabela 8.
Como exemplo de aplicação temos,

> > A = [1 3; 4 8];


> > B = inv(A);
> > A*B
ans =
1 0
0 1

Tabela 8: Principais funções matriciais do MATLAB.


eig Valores pŕoprios e vectores próprios
inv Matriz inversa
expm Matriz exponencial
sqrtm Matriz raíz quadrada
poly Polinómio característico
det Determinante da matriz
size Tamanho da matriz
norm Norma da matriz (norma1, norma 2, . . . )

[C. Vinhais, C. Abreu - DEFI, ISEP] 20


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

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.

6.1 Gráficos bidimensionais (2D)


6.1.1 Função plot
A função mais usada para criar gráficos bidimensionais (2D), é chamada pelo comando plot, que pode ter
múltiplos argumentos opcionais.
Este comando gera gráficos lineares de vectores e matrizes. Por exemplo,

> > plot(t,y)

permite representar o vector t no eixo xx em função do vector y no eixo yy.

O exemplo seguinte ilustra esta função usada para representar a função seno (Figura 1):

> > t = 0:pi/100:4*pi;


> > y = sin(t);
> > plot(t,y)

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

Figura 1: Representação da função seno: y(t) = sin(t).

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

[C. Vinhais, C. Abreu - DEFI, ISEP] 21


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

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

Figura 2: Representação de várias funções seno.

Existem opções para definir o tipo e cor da linha do gráfico, recorrendo à seguinte sintaxe,

> > plot(t,y,’opções’)

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

> > t = 0:pi/100:2*pi;


> > y = sin(t.^2);
> > plot(t,y,’--*r’)

6.1.2 Função stem


No caso de sinais temporais discretos, por exemplo, pode-se usar a função stem. Esta caracteriza-se por
representar sequências discretas de pontos, isto é, cada valor é representado com um pequeno círculo aberto
e um segmento, no ponto y[k]. A função stem pode ainda ser usada com a opção “ filled “, o que permite
preeencher os círculos (markers). Uma aplicação desta função pode ser observada na Figura 4,

> > k = eps:pi/10:4*pi;


> > y = sin(k)./k;
> > stem(k,y,’filled’)

6.1.3 Função plotyy


A função plotyy permite visualizar duas funções z1 e z2, com dois eixos yy distintos (um à esquerda e
outro à direita), como pode ser visto no exemplo da Figura 5,

[C. Vinhais, C. Abreu - DEFI, ISEP] 22


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

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

Figura 3: Representação gráfica da função chirp: y = sin(t.ˆ2).

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.

[C. Vinhais, C. Abreu - DEFI, ISEP] 23


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

>> t = 0:900; A = 1000; a = 0.005; b = 0.005;


>> z1 = A*exp(-a*t);
>> z2 = sin(b*t);
>> plotyy(t,z1,t,z2,’semilogy’,’plot’)
3
10 1

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

Figura 5: Representação gráfica com dois eixos yy.

Outros comandos para representação de gráficos 2D, encontram-se na Tabela 9.

Tabela 9: Comandos para representação de gráficos 2D.


loglog Eixos xx e yy com escala logarítmica
semilogx Eixo xx com escala logarítmica e yy linear
semilogy Eixo yy com escala logarítmica e xx linear
bar Gráfico de barras
errorbar Gráfico de barras de erros
hist Histograma
polar Gráfico de coordenadas polares

6.1.4 Comando subplot


Para visualização de vários gráficos numa só figura (janela), pode ser utilizado o comando subplot(m,n,p)
ou subplot(mnp). Este comando divide a janela numa matriz m  n, onde p corresponde à posição de um
determinado gráfico, nessa matriz. A título de exemplo, o código seguinte permite criar um conjunto de
quatro gráficos, representados na Figura 6.

[C. Vinhais, C. Abreu - DEFI, ISEP] 24


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

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

Figura 6: Utilização do comando subplot, na representação de múltiplos gráficos numa só janela.

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

6.2 Gráficos tridimensionais (3D)


6.2.1 Função plot3
O análogo tridimensional (3D) da função plot é plot3. Se x, y e z são três vectores com igual compri-
mento, plot3(x,y,z) gera uma curva 3D através dos pontos cujas coordenadas são os elementos de x, y,
and z. Esta função produz ainda uma projecção 2D da curva 3D no écran.
Por exemplo, o seguinte código permite-nos gerar uma hélice (Figura 8),

[C. Vinhais, C. Abreu - DEFI, ISEP] 25


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

Tabela 10: Comandos para manipulação de gráficos.


xlabel Legenda do eixo xx
ylabel Legenda do eixo yy
title Título do gráfico
axis Permite alterar os limites dos eixos xx e yy
grid Adicionar uma grelha no gráfico
gtext Permite posicionar texto com o rato
text Permite posicionar texto em coordenadas especificadas
figure Cria uma figura (janela) para gráfico
hold on Permite múltiplos gráficos sobrepostos nos mesmos eixos
hold off Desactiva o comando hold on

Gráfico das funções y1 e y2, em função de t


0.5

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)

Figura 7: Representação gráfica das funções y1(t) e y2(t).

[C. Vinhais, C. Abreu - DEFI, ISEP] 26


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

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

Figura 8: Gráfico 3D de uma hélice.

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

>> load wind


>> zmax = max(z(:)); zmin = min(z(:));
>> streamslice(x,y,z,u,v,w,[],[],(zmax-zmin)/2)
>> [X,Y] = meshgrid(-3:.125:3);
>> Z = peaks(X,Y);
>> meshc(X,Y,Z);
>> axis([-3 3 -3 3 -10 5])
>> colormap gray
>> [X,Y] = meshgrid([-2:.25:2]);
>> Z = X.*exp(-X.^2-Y.^2);
>> contour3(X,Y,Z,30)
>> surface(X,Y,Z,’EdgeColor’,[.8 .8 .8],’FaceColor’,’none’)
>> grid off
>> view(-15,25)
>> colormap gray

[C. Vinhais, C. Abreu - DEFI, ISEP] 27


6 GRÁFICOS NO MATLAB INTRODUÇÃO ao MATLAB

60

55

50

45

40

35

30

25

20

15
70 80 90 100 110 120 130 140

Figura 9: Exemplo de aplicação da função wind.

−5

−10
3
2
3
1 2
0 1
−1 0
−1
−2 −2
−3 −3

Figura 10: Exemplo de aplicação da função meshc.

[C. Vinhais, C. Abreu - DEFI, ISEP] 28


7 ESTRUTURAS DE CONTROLO DE FLUXO INTRODUÇÃO ao MATLAB

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

Figura 11: Exemplo de aplicação da função contour3.

7 Estruturas de controlo de fluxo


O MATLAB contem cinco estruturas de controlo de fluxo do código, funcionando em moldes semelhantes
a outras linguagens de programação:

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.

7.1 Estruturas if, elseif, else


A forma geral de uma estrutura condicional if é a seguinte:

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:

[C. Vinhais, C. Abreu - DEFI, ISEP] 29


7 ESTRUTURAS DE CONTROLO DE FLUXO INTRODUÇÃO ao MATLAB

> > if x < 1


var1 = 0;
elseif x == 5
var1 = 1;
else
var1 = 2;
end

É importante compreender como os operadores relacionais e as estruturas de controlo de fluxo, trabal-


ham em conjunto. Os operadores relacionais do MATLAB estão representados na Tabela 11. De notar que

Tabela 11: Operadores relacionais do MATLAB.


< menor do que
> maior do que
<= menor do que ou igual
>= maior do que ou igual
== igual
 desigual

“=” é 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

Tabela 12: Operadores lógicos do MATLAB.


& e
| ou
 não

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.2 switch e case


A estrutura switch executa blocos de afirmações, baseado no valor de uma variável ou expressão. A ex-
pressão case e otherwise delimita os blocos. Apenas a primeira ocorrência é executada, devendo sempre
existir um end para cada switch. No seguimento é ilustrado o uso desta estrutura

> > switch (rem(n,2) == 0)


case 0, disp(’n é par’)
case 1, disp(’n é ímpar’)
otherwise, error(’Sem solução’)
end

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.

[C. Vinhais, C. Abreu - DEFI, ISEP] 30


8 SINAIS E ANÁLISE DE SISTEMAS INTRODUÇÃO ao MATLAB

Como exemplo, temos o seguinte código que produz n-vectores linha,

> > x = []; n = 4;


> > for i = 1:n
x = [x, iˆ2]
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 Sinais e Análise de Sistemas


Neste capítulo vão ser apresentados os principais comandos relacionados com a teoria de sinais e análise de
sistemas. Todos os comandos apresentados, possuem ainda um vasto leque de opções permitindo extender
o seu domínio de aplicabilidade.

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:

> > g = [2 -3 5 -10]

Na Tabela 13, é apresentada uma lista dos comandos mais importantes na manipulação de polinómios.

Tabela 13: Principais comandos para manipulação de polinómios.


roots(p) Cálculo das raízes de um polinómio
polyval(p,x) Estudo do polinómio p nos pontos definidos no vector x
conv(p1,p2) Convolução e multiplicação polinomial
deconv(p1,p2) Desconvolução e divisão polinomial
poly(r) Conversão de um vector de raízes r num polinómio

[C. Vinhais, C. Abreu - DEFI, ISEP] 31


8 SINAIS E ANÁLISE DE SISTEMAS INTRODUÇÃO ao MATLAB

8.2 Análise de Fourier


Os principais comandos relacionadas com análise de Fourier, encontram-se descritas na Tabela 14: O

Tabela 14: Principais comandos para análise de Fourier.


dftmtx Transformada Discreta de Fourier(DFT)
fft Transformada Rápida de Fourier (FFT)
ifft Transformada Rápida de Fourier Inversa
fftshift Troca de quadrante na FFT

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:

> > X = dftmtx(x)

Para calcular a DFT inversa de uma matriz X, será necessário digitar o seguinte código na linha de co-
mando,

> > x = conj(dftmtx(X))/X

A Transformada Rápida de Fourier (FFT) de uma sequência de números, é calculada usando o coman-
do fft do seguinte modo,

> > X = fft(x)

em que a sequência x[n] é armazenada no vector x.

O comando ifft permite calcular a transformada FFT inversa,

> > x = ifft(X)

8.3 Análise de Sistemas Contínuos no tempo


8.3.1 Representação de Funções de Transferência
Os principais comandos relacionadas com funções de transferência, encontram-se descritas na Tabela 15.

Tabela 15: Principais comandos para representação de funções de transferência.


tf2zp Conversão da funções de transferência para zero-pole
zp2tf Conversão de zero-pole para a função de transferência
feedback Ligação feedback de dois sistemas
parallel Ligação em paralelo de dois sistemas
series Ligação em série de dois sistemas

As funções de transferência são definidos no MATLAB armazenando os coeficientes do numerador e


denominador, sob a forma de vectores. Isto é, dada uma função de transferência contínua no tempo:

B  s
H  s 
A  s

onde B  s   bM sM  bM  1 sM  1     b0 e A  s   sN  aN  1 sN  1     a0 . Os coeficientes de B  s  e


A  s  são armazenados nos vectores: num = [bM bM  1 ... b0 ]e den = [1 aN  1 ... a0 ].

[C. Vinhais, C. Abreu - DEFI, ISEP] 32


8 SINAIS E ANÁLISE DE SISTEMAS INTRODUÇÃO ao MATLAB

8.3.2 Simulações temporais


A solução analítica para encontrar a resposta temporal de um sistema, requere o cálculo da Transforma-
da Inversa de Laplace da função de saída Y  s  . O MATLAB permite fazê-lo com auxílio do comando
residue. Após armazenar os coeficientes do numerador e denominador de Y  s  nos vectores num e den,
respectivamente, digitando na linha de comando,

> > [r, p, k] = residue(num, den)

permite obter os resíduos em r, os polos em p, e o ganho em k.

Um processo numérico implementado no MATLAB, permite encontrar a resposta de um sistema a uma


função de entrada particular. Tal é conseguido, armazenando previamente os coeficientes do numerador e
denominador da função de transferência nos vectores num e den, digitando:

> > step(num, den)

A resposta impulsional do sistema pode ser representada graficamente através do seguinte comando:

> > impulse(num, den)

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 “ : “,

> > t = a:b:c;

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:

> > lsim(num, den, x, t)

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),

>> num = [2 3]; den = [1 4 0 5];


>> t = 0:5/300:5;
>> y = step(num, den, t);
>> plot(t, y)
>> xlabel(’t (s)’)
>> ylabel(’Step Response’)
>> title(’Representação da resposta de um sistema’)

Para obter a resposta impulsional, basta apenas substituir o comando step por impulse, como se segue:

> > y = impulse(num, den, t);

Finalmente, representar a função resposta a uma determinada entrada arbitrária x, é conseguida através
do seguinte código:

> > y = lsim(num, den, x, t);


> > plot(t, y)

[C. Vinhais, C. Abreu - DEFI, ISEP] 33


9 INTERPOLAÇÃO E AJUSTE DE CURVAS INTRODUÇÃO ao MATLAB

Representação da resposta em degrau de um sistema


2

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)

Representação da resposta impulsional de um sistema


1

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)

Figura 12: Representação da resposta de um sistema.

8.4 Análise de Sistemas Discretos no tempo


8.4.1 Convolução
De modo a realizar convoluções de dois vectores, a  n b  n , basta definir os respectivos vectores a e b, e
usar o comando:

> > y = conv(a, b)

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:

> > c = deconv(a, b)

8.4.2 Transformadas de Laplace e Transformadas Z


As transformadas de Laplace são uma importante ferramenta no estudo de sistemas contínuos, enquanto
que as transformadas Z o são no estudo de sistemas discretos. Importantes comandos relacionados com
estas transformadas, encontram-se descritos na Tabela 16:

9 Interpolação e ajuste de curvas


9.1 Interpolação
Uma das técnicas mais empregues para estimar o comportamento de uma determinada função entre dois
pontos considerados, é a interpolação. A interpolação de uma dada função, pode ser feita no MATLAB

[C. Vinhais, C. Abreu - DEFI, ISEP] 34


9 INTERPOLAÇÃO E AJUSTE DE CURVAS INTRODUÇÃO ao MATLAB

Tabela 16: Comandos para manipulação de Transformadas de Laplace e Transformadas Z.


residue(n, d) Cálculo de resíduos da razão entre polinómios n(s)/d(s)
lsim(SYS, u) Representação da resposta no tempo de SYS em função do vector u
step(SYS) Representação da resposta degrau (step) do sistema SYS
pzmap(n, d) Representação num diagrama polos-zeros do sistema SYS
residuez(n, d) Cálculo de resíduos da razão entre polinómios n(z)/d(z), escrita como funções de z  1

rlocus(SYS) Cálculo / Representação da localização das raízes de SYS


impulse(SYS) Representação da resposta impulsional de SYS
zplane(z, p) Representação do diagrama polos-zeros a partir de vectores de polos e zeros, p e z

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).

Uma interpolação 1-D de uma função y  f  x  , faz-se digitando na linha de comando:

> > yi = interp1(x, y, xi, ’method’)

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.

> > x = -2*pi:2*pi; y = cos(x); xi = -2*pi:.25:2*pi;


> > yi = interp1(x, y, xi, ’linear’); plott(xi, yi, ’r’); hold on; grid on
> > yi = interp1(x, y, xi, ’spline’); plot(x, y, ’ok’, xi, yi)

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

Figura 13: Interpolação da função cos  x  , com o comando interp1.

Como exemplo de interpolação bi-dimensional, temos:

> > [x, y, z] = peaks(15); [xi, yi] = meshgrid(-5:.2:5,-5:.2:5);


> > zi = interp2(x, y, z, xi, yi); mesh(xi, yi, zi)

[C. Vinhais, C. Abreu - DEFI, ISEP] 35


9 INTERPOLAÇÃO E AJUSTE DE CURVAS INTRODUÇÃO ao MATLAB

Obs.: pode obter informação mais completa sobre estes comandos, digitando na linha de comando:

> > help comando

9.2 O comando spline


Uma spline cúbica é uma curva suave ajustada ao conjunto de pontos considerados. A curva spline, entre
cada par de pontos, é determinada por um polinómio do 3o grau, isto é cúbico. Esta técnica permite então
obter uma curva suave, ao invés da interpolação linear, onde os pontos são unidos com segmentos de recta.
A título de exemplo suponhamos que pretendemos determinar a temperatura de um sólido num determina-
do instante, conhecendo previamente a evolução da sua temperatura no tempo. Isto é,

> > x = [0:10]; y = [0:2:10, 13, 15, 18, 23, 27];


> > temp = spline(x, y, 7.2)

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:

> > newx = [0:.1:10]; newy = spline(x, y, newx);


> > plot(x, y, ’k’, newx, newy, ’r’, x, y, ’o’);
> > grid;

9.3 Ajuste de curvas pelo método dos mínimos quadrados


O método dos mínimos quadrados permite fazer um ajuste de curvas, para um conjunto de pontos adquiri-
dos, por exemplo, numa experiência. Ao tentar traçar uma recta pelo conjunto de pontos representados
num sistema de eixos, apenas um par de pontos irão fazer parte da recta. O método analítico dos mínimos
quadrados, permite então achar a melhor recta que se ajuste ao conjunto de pontos, podendo acontecer que
nenhum dos pontos pertença à mesma.
De notar que este método é muito distinto da interpolação, estudada na secção anterior, dado que na inter-
polação a curva ajustada passa por todos os pontos.

9.3.1 Regressão linear


Este método consiste no ajuste de uma recta (ajuste linear), ao conjunto de pontos considerados. Como re-
sultado deste processo, é obtido a equação da recta y  a  bx; calculada através do somatório dos mínimos
quadrados das distâncias entre a recta e os pontos.
No exemplo seguinte, é feita uma regressão linear ao conjunto de pontos da temperatura do sólido do ex-
emplo anterior.

> > x = [0:10]; y = [0:2:10, 13, 15, 18, 23, 27];


> > y1 = 2.5*x;
> > plot(x, y1, x, y, ’o’)

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:

> > somadist = sum((y-y1).ˆ2);

O melhor recta ajustada, será aquela que minimiza o valor do escalar somadist.

[C. Vinhais, C. Abreu - DEFI, ISEP] 36


9 INTERPOLAÇÃO E AJUSTE DE CURVAS INTRODUÇÃO ao MATLAB

9.3.2 O comando polyfit


Este comando permite calcular analíticamente os coeficientes do polinómio a ajustar ao conjunto de pontos.
O comando polyfit possui a seguinte síntaxe: polyfit(x, y, N), onde N representa o grau do polinómio.
Usando o caso da evolução da temperatura de um sólido no tempo, temos o seguinte exemplo de aplicação
da fun ção polyfit (1o grau):

> > x = [0:10]; y = [0:2:10, 13, 15, 18, 23, 27];


> > coef = polyfit(x,y,1);
> > b = coef(1), a = coef(2)
b =
2.5818
a =
-1.4545
> > ybest = a + b*x;
> > somabest = sum((y-ybest).ˆ2)
somabest =
19.4909
> > y1 = 2.6*x;
> > somadist = sum((y-y1).ˆ2)
somadist =
45.8000
> > plot(x, ybest, x, y1, ’r’, x, y, ’o’); grid on
> > title(’Curva de variação da temperatura de um sólido’)
> > xlabel(’Tempo (min)’); ylabel(’Temperatura (Graus Celsius)’)
> > gtext({’Recta mais provável’,’y = -1.4545 + 2.5818x’})
> > gtext({’y1 = 2.6x’})

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.

Curva de variação da temperatura de um sólido


30

25

y1 = 2.6x

20
Temperatura (Graus Celsius)

15

Recta mais provável


y = −1.4545 + 2.5818x
10

−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.

[C. Vinhais, C. Abreu - DEFI, ISEP] 37


10 CRÉDITOS INTRODUÇÃO ao MATLAB

10 Créditos
Algumas secções deste tutorial foram em parte baseadas em trabalhos anteriores, aos quais os presentes
autores prestam os seus agradecimentos:

- Introduction to MATLAB, Thomas F. Weiss, September 9, 1999

- MATLAB Primer, Third Edition, K. Sigmon, 1993

- Getting started with MATLAB, Version 5, MathWorks, Inc, September 1998

[C. Vinhais, C. Abreu - DEFI, ISEP] 38


Índice
Álgebra Matricial, MATLAB, 17 Dados, Aquisição de, 5
Álgebra, Vectorial e Matricial, 13 deconv, Comando, 31, 34
Âmbito global (Global scope), Variáveis, 10 Delimitadores, Tabelas, 11
Âmbito local (Local scope), Variáveis, 10 det, Função, 20
DFT, 32
abs, Comando, 12, 13, 19 dftmtx, Comando, 32
acos, Função, 19 diag, Comando, 15, 16
adição (+), Operador, 7, 17 Diagonal principal, Matrizes, 16
Ajuste, Qualidade do, 36 diary, Comando, 11
Aleatoriamente, Números gerados, 10 Difusa, Lógica, 5
all, Comando, 19 Discretos, Sinais temporais, 22
Análise de Fourier, 32 disp, Comando, 30
Análise de Sistemas, 31 divisão (./) element-by-element, Operador, 18
angle, Comando, 12, 13 divisão (.\) element-by-element, Operador, 18
Anotações, Gráficos, 25 divisão à direita (/), Operador, 17, 18
ans, Variável, 14 divisão à esquerda (\), Operador, 17, 18
any, Comando, 19 Divisão, Matrizes, 18
Argumentos, Funções do MATLAB, 21 doc, Comando, 9
Arquimedes, Constante de, 12
asin, Função, 19 eig, Função, 20, 21
atan, Função, 19 element-by-element, Operadores, 18
atribuição (=), Operador, 7 Elementos, Matrizes, 16
axis, Comando, 25, 27 Elementos, Vectores, 13
elipsis (...), Operador, 7
bar, Comando, 24 else, Keyword, 29, 30
Binários (binaries), Ficheiros, 10 elseif, Keyword, 29, 30
break, Keyword, 29, 31 Emacs, Editor, 9
Built-in functions, MATLAB, 9, 15 Encapsulated Postscript (.eps), Ficheiros, 11
end, Keyword, 29, 30
Cúbica, Interpolação, 35 Entrada, Função de, 33
case, Keyword, 29, 30 error, Comando, 30
ceil, Função, 19 errorbar, Comando, 24
Ciclos, MATLAB, 29 Escalares, 11
clear, Comando, 9 Escalares, MATLAB, 13
Coeficientes de polinómios, Cálculo analítico, 37 Escalares, Operações lógicas, 30
Coeficientes, Polinómios, 31 estrela (*), Operador, 17
colon (:), Operador, 14, 16, 33 estrela (.*) element-by-element, Operador, 18
colormap, Comando, 27 Estrutura condicional, 29
Concatenação, Matrizes, 16 Execução, Condicional, 29
conj, Comando, 12, 13, 32 exp, Função, 19, 25
contour3, Comando, 27 expm, Função, 20
Controlo de fluxo, Estruturas, 29, 30 expoente (.ˆ)element-by-element, Operador, 18
Controlo, Sistemas de, 5 expoente (ˆ), Operador, 17
conv, Comando, 31, 34 eye, Comando, 15, 16
Convenções, Matrizes, 14
Convenções, Vectores, 13 Falsa, Relação, 30
Convolução, Vectores, 34 feedback, Comando, 32
Cores, Gráficos, 21, 22 Feedback, Ligação, 32
cos, Função, 18, 19, 35 FFT, 32
cov, Comando, 19 fft, Comando, 32
Curvas, Ajuste de, 36 fftshift, Comando, 32

39
ÍNDICE INTRODUÇÃO ao MATLAB

figure, Comando, 26 Laplace, Transformadas de, 34


floor, Função, 19 Legendas, Gráficos, 25
for, Estrutura, 29–31 length, Comando, 14
format compact, Comando, 6 Linear, Ajuste, 36
format, Comando, 6 Linear, Interpolação, 35, 36
Formatos, Gravação, 11 Linha de Comando, 5, 9
Funções, MATLAB, 9, 10 linspace, Comando, 14, 25
Linux, 5, 9
Ganho, Trnasformada de Laplace, 33 load, Comando, 11, 27
Gráficos 2D, 21, 24 log, Função, 19
Gráficos 3D, 25 log10, Função, 19
Gráficos lineares, 21 loglog, Comando, 24
Gráficos, MATLAB, 11, 21 logspace, Comando, 14
Gravação, 11 lsim, Comando, 33, 35
grid, Comando, 25, 27, 36
gtext, Comando, 26, 37 M-files, Ficheiros, 5, 9, 10
Mínimos quadrados, Método, 36
Hélice, Gráfico, 25 magic, Comando, 7, 15
Help Desk, 8, 9 MAT-files, Ficheiros, 10
help, Comando, 8, 36 Matemática, Notação, 5
helpdesk, Comando, 9 MATLAB prompt, 5
helpwin, Comando, 8 MATLAB, Ambiente, 9
hist, Comando, 24 matlab, Comando da Shell, 5
hold off , Comando, 26 Matriz diagonal, 21
hold on , Comando, 26 Matrizes, Construção, 15
hold, Comando, 25 Matrizes, MATLAB, 11, 14
Matrizes, Operações lógicas, 30
if, Estrutura, 29, 30
Matrizes, Tamanho de, 15
ifft, Comando, 32
max, Comando, 19, 20
imag, Comando, 12, 13
mean, Comando, 19
Imaginária, Entidade, 12
median, Comando, 19
Impressão, 11
mesh, Comando, 35
impulse, Comando, 33, 35
meshc, Comando, 27
Incremento, Construção de vectores, 14
meshgrid, Comando, 27, 35
Incremento, Linear, 14
min, Comando, 19
Incremento, Logarítmico, 14
Multiplicação (element-by-element), Matrizes, 18
Incremento, Simulações temporais, 33
Multiplicação, Matrizes, 18
Instante final, Simulações temporais, 33
Instante inicial, Simulações temporais, 33 Nesting, Ciclos, 31
interp1, Comando, 35 Neuronais, Redes, 5
interp2, Comando, 35 norm, Função, 20
Interpolação 1D, 35 Notepad, Editor, 9
Interpolação 2D, 35
Interpolação, MATLAB, 34 ones, Comando, 15
inv, Comando, 20 Online reference pages, 8
inv, Função, 20 Operadores aritméticos, 12, 17
Inversa, DFT, 32 Operadores lógicos, 30
Inversa, FFT, 32 Operadores relacionais, 30
Invertível, Matriz, 18 otherwise, Keyword, 29, 30
output, Ficheiros de, 9
Janela de Ajuda (Help Window), 8 output, Formatação do, 5
Janela de Comando, 5, 8 output, Qualidade de, 11
Lógica, Condição, 29 parallel, Comando, 32
Laplace, Transformada Inversa, 33

[C. Vinhais, C. Abreu - DEFI, ISEP] 40


ÍNDICE INTRODUÇÃO ao MATLAB

peaks, Comando, 27, 35 Simulações temporais, 33


pi, Comando, 12, 22 sin, Função, 19, 21, 22
plot, Comando, 21, 22, 25, 33, 35–37 Sinal, Processamento de, 5
plot3, Comando, 25, 27 Sistema, Resposta do, 33
plotyy, Comando, 22 Sistemas Contínuos, 32, 34
polar, Comando, 24 Sistemas Discretos, 34
Polinómios, Coeficientes, 34 Sistemas, Análise de, 5
Polinómios, Divisão, 34 Sistemas, Resposta em degrau, 33, 35
Polinómios, MATLAB, 31 Sistemas, Resposta impulsional, 33, 35
Polinómios, Multiplicação, 34 Sistemas, Resposta temporal de, 33
Polos, Transformada de Laplace, 33 size, Comando, 14–17, 20
Polos-zeros, Diagramas, 35 sort, Comando, 19
poly, Comando, 20, 31 spline, Comando, 36
polyfit, Comando, 37 Spline, Interpolação, 35, 36
polyval, Comando, 31 sqrt, Função, 19
Pontos, Ajuste de curvas, 36 sqrtm, Função, 20
Pontos, Interpolação, 35 std, Comando, 19
Portabilidade, 11 stem, Comando, 22, 25
Postscript (.ps), Ficheiros, 11 step, Comando, 33, 35
Primeiros Vizinhos, Interpolação, 35 streamslice, Comando, 27
print, Comando, 11 Suave, Curva, 36
Processadores de texto, 9 Sub-matrizes, MATLAB, 16
prod, Comando, 19 subplot, Comando, 24, 25
Programação, Linguagem, 5 Subscriptos, Matrizes, 17
Projecção 2D, Gráficos, 25 subtração (-), Operador, 7, 17
sum, Comando, 19, 20, 36, 37
Quadrada, Matriz, 15, 16 surface, Comando, 27
quit, Comando, 5 switch, Estrutura, 29, 30
Raízes, Localização, 35 Título, Gráficos, 25
rand, Comando, 10, 15, 16, 30 tan, Função, 19
real, Comando, 12 Teclas de controlo, 7
Recursividade, M-files, 10 Teoria de sinais, 31
Regressão linear, 36 text, Comando, 26
rem, Comando, 19, 30 Texto, Ficheiros, 11
Resíduos, Transformada de Laplace, 33 tf2zp, Comando, 32
residue, Comando, 33, 35 tilde (’), Operador, 13, 17
residuez, Comando, 35 tilde (.’) element-by-element, Operador, 18
rlocus, Comando, 35 Tipos de linhas, Gráficos, 22
roots, Comando, 31 title, Comando, 25, 33
round, Função, 19 Toolboxes, 5
Transferência, Funções de, 32, 33
Síntaxe, Funções, 10 Transformada Discreta de Fourier (DFT), 32
Saída, Função de, 33 Transformada Rápida de Fourier (FFT), 32
save, Comando, 10 Transposto, Vector, 13
Scripts, Ficheiros, 9, 10 triu, Comando, 30
semicolon (;), Operador, 6, 12
semilogx, Comando, 24 Unix, 9
semilogy, Argumento, 24 User-defined functions, MATLAB, 9
semilogy, Comando, 24
series, Comando, 32 Valores próprios, Vectores, 21
Sessão, MATLAB, 9, 10 Variáveis complexas, 12, 13
Sessões de MATLAB, Registo, 11 Variáveis, MATLAB, 11
sign, Função, 19 Variáveis, Salvaguarda, 10

[C. Vinhais, C. Abreu - DEFI, ISEP] 41


Í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

xlabel, Comando, 25, 33

ylabel, Comando, 25, 33

Z, Transformadas, 34
zeros, Comando, 15, 16
zp2tf, Comando, 32
zplane, Comando, 35

[C. Vinhais, C. Abreu - DEFI, ISEP] 42

Você também pode gostar