Escolar Documentos
Profissional Documentos
Cultura Documentos
1 Introdução 5
2.1 Matrizes 7
2.4 Exemplos 9
3 Programação em Matlab 11
3.1 Expressões 11
3.5 Exemplo 16
4 Ficheiros 17
5 Visualização de Dados 19
6 Bibliografia 25
3
1 Introdução
De acordo com os seus autores, o Matlab (de MATrix LABoratory) é uma linguagem de alto
desempenho para computação técnica, sendo vocacionado para aplicações tão diversas como
programação, desenvolvimento de algoritmos, aquisição de dados, modelização, simulação,
prototipagem, análise de dados, e desenvolvimento de interfaces gráficas, entre outras.
O presente manual pretende servir apenas de breve introdução a esta ferramenta, estando
disponível na internet uma completíssima bibliografia (www.mathworks.com) para quem deseje
ou necessite de tirar partido das inúmeras possibilidades que oferece o Matlab.
Existem, principalmente a partir da sua versão 6, várias formas de aceder a certos comandos ou
funções do Matlab, seja através de ícones, seja através de menus. Deixa-se contudo ao leitor a
tarefa de explorar este aspecto.
Este comando mostra todas as variáveis criadas pelo utilizador, pelo que no início de uma sessão
não retornará nada, uma vez que nenhuma foi ainda criada. Note-se que os caracteres >>
indicam o início da linha de comando (prompt), não constituindo parte do comando em si. Por
esta razão, e visando evitar equívocos, deste ponto em diante esses caracteres serão omitidos.
O Matlab apresenta uma série de comandos, operadores e funções primitivas, organizadas por
categorias, assim como rotinas específicas de diversas áreas da engenharia, organizadas em
bibliotecas (toolboxes). Estas categorias e bibliotecas são designadas por tópicos primários. O
comando
help
5
ops operadores e caracteres especiais
Outras bibliotecas abrangem campos tão variados como aquisição e processamento de imagem,
bio-informática, telecomunicações, finanças, lógica difusa, matemática simbólica, identificação
de sistemas e realidade virtual.
O comando
help item
fornece informação específica acerca de item. Se este for um tópico primário, então visualizar-
-se-ão os conteúdos do tópico, se for um comando, então será mostrada informação detalhada
sobre este.
O operador percentagem, %, permite inserir comentários após comandos do Matlab. Tudo o que
esteja à direita desse operador será ignorado.
6
2 Tipos de dados em Matlab
2.1 Matrizes
Em Matlab os dados são armazenados essencialmente como matrizes. Desta forma, pode-se
pensar em alguns casos particulares, nomeadamente as matrizes 1x1 – escalares – ou as
formadas só por uma linha ou uma coluna – vectores. Alguns exemplos de matrizes são:
4 3 1
Matriz A, 2x3: A
5 7 0
Existem várias formas de especificar matrizes, para que se possa, posteriormente, manipulá-las.
Pode-se introduzir todos os valores dos seus membros, lê-las a partir de ficheiros, ou criá-las
através de funções, sejam estas do Matlab sejam definidas pelo utilizador.
O ponto e vírgula no final da instrução impede que o Matlab mostre os dados introduzidos.
Caso não se coloque, seria visualizado o seguinte:
A =
4 3 1
5 7 0
O Matlab tem definidas algumas funções que criam matrizes elementares (tópico elmat,
matrizes elementares e manipulação de matrizes).
zeros: cria uma matriz em que todos os elementos são nulos. As possíveis formas são
ones: cria uma matriz em que todos os elementos são a unidade. Admite as mesmas formas
da função zeros.
7
eye: matriz identidade
Para aceder ao elemento da linha i, coluna j, basta simplesmente introduzir o comando A(i,j).
Assim, com A(1,2)e A(2,3) obter-se-ia, respectivamente, 3 e 0.
Caso se queira aceder a um elemento fora das dimensões da matriz, o resultado será uma
mensagem de erro. Por outro lado, se se definir um novo elemento, numa posição que exceda as
dimensões da matriz, então esta será redimensionada, por forma a incluir esse novo elemento,
sendo as novas posições preenchidas com 0. Por exemplo, fazendo A(3,5)=5, resulta em:
A =
4 3 1 0 0
5 7 0 0 0
0 0 0 0 5
2.1.3 O Operador :
O operador : (dois pontos) tem uma função muito abrangente em Matlab. Por exemplo, a
instrução
d = 1:10
Para se obter um espaçamento não unitário entre elementos, por exemplo 0,1, desde 1 até 2,
deve-se fazer:
d = 1:0.1:2
obtendo-se
1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00
Note-se que as casas decimais são separadas por um ponto. O operador : também pode ser
utilizado para aceder a porções de uma matriz. Se se quisesse obter a primeira linha da matriz A,
após a redefinição do ponto anterior, far-se-ia:
A(1,:)
obtendo-se
4 3 1 0 0
Para se obter a porção entre a segunda e quarta colunas, na segunda linha, o comando seria:
8
A(2,2:4)
e o resultado
7 0 0
pi : 3.14159265358979
i : unidade imaginária, 1
j : o mesmo que i
O Matlab cria automaticamente a variável ans (de ANSwer), que guarda o valor da última
expressão calculada, quando este não tiver sido atribuído a nenhuma outra variável.
2.4 Exemplos
teta=0:pi/4:2*pi
5+9j ou 5+9i
-6*ones(5,6)
9
3 Programação em Matlab
A programação em Matlab é simultaneamente simples e poderosa. Abrange diversos aspectos
(Simulink, Graphical User Interfaces), mas aqui será apenas referida a programação através da linha
de comando.
3.1 Expressões
3.1.1 Variáveis
As variáveis em Matlab não necessitam de ser explicitamente declaradas, pois, como se viu
anteriormente, são geralmente do tipo matriz (de reais e/ou complexos). O seu nome forma-se
com uma letra, seguida de um qualquer número de letras, dígitos ou travessão inferior
(underscore). É feita a distinção entre maiúsculas e minúsculas.
3.1.2 Números
Os números podem ser introduzidos como inteiros (apenas dígitos), como negativos (com um
sinal de “menos” a precedê-los), como decimais (com um ponto a separar a parte inteira da parte
fraccionária), como complexos (seguidos de i ou j), ou em notação científica (em que as
potências de 10 se indicam com a letra e). Assim, pode-se ter, por exemplo:
2546 -465.003 4.643 87i 343.54j 1.5e-5
Os operadores aritméticos, definidos com as precedências habituais, são a soma (+), a subtracção
(-), a multiplicação (*), a divisão (/), e a potenciação (^).
Transposta
A transposta da matriz A obtém-se pelo operador apóstrofe. Assim, para a matriz anteriormente
definida, o comando
A'
3 7 0
1 0 0
0 0 0
0 0 5
11
Inversa
A inversa é dada pela função inv. Se H for uma matriz quadrada (note-se que não se podem
inverter matrizes não quadradas) de determinante não nulo, então
inv(H)
fornece a matriz que multiplicada à esquerda ou à direita por H resulta na matriz identidade.
Note-se que a divisão de duas matrizes quadradas da mesma dimensão, por exemplo H/G,
corresponde à expressão H*inv(G).
Determinante
Dimensão
Operadores
Os operadores que podem ser aplicados a matrizes incluem, além da adição, subtracção,
multiplicação e divisão, a multiplicação elemento a elemento (.*), a divisão elemento a elemento
(./), e a potenciação elemento a elemento (.^). Por exemplo, a multiplicação elemento a
elemento significa que o resultado de
Z=X.*Y
O Matlab apresenta diversos comandos para controlar a sequência dos programas, como por
exemplo os ciclos for ou o teste de condições if.
3.3.1 Ciclos
Os ciclos permitem repetir instruções um número pré-determinado de vezes, ou até que uma
condição se verifique.
12
Ciclo for
Este ciclo consiste em atribuir um valor inicial a uma variável, executar instruções especificadas,
e incrementar a variável, ou de 1, por defeito, ou de um passo determinado. Isto repete-se até
que seja atingido ou ultrapassado um valor final permitido. O ciclo termina com a instrução
end., e a sua sintaxe é:
{instruções}
end
Como referido, caso o passo não seja especificado, terá, por defeito, valor unitário.
Por exemplo, para preencher um vector p de dez elementos com uma sequência de potências de
2 (não esquecer que a posição genérica i do vector p se acede através de p(i)), poder-se-ia
fazer:
for i = 1 : 10,
p(i) = 2^(i-1);
end
Para construir um vector de 100 elementos representando dois períodos de uma sinusóide, ter-
se-ia, por exemplo:
wt = 0 : 4*pi/99 : 4*pi % cria um vector de 100 pontos
% equidistantes, de 0 a 4*pi
for i = 1 : 100,
end
Note-se que este exemplo pretende ser apenas meramente ilustrativo do funcionamento do ciclo
for, já que o vector s poderia ter sido criado, de forma mais compacta, através de:
s = sin(wt)
Comandos Relacionados
Outros comandos relacionados com ciclos, que se deixa a cargo do leitor a tarefa de descortinar
o seu funcionamento, são os comandos while, continue, e break.
13
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
Teste if
O teste if avalia uma expressão e executa um grupo de instruções se essa for verdadeira. As
instruções a executar se a expressão tiver valor lógico falso podem opcionalmente ser definidas
através do comando else. O comando end termina o teste, cuja sintaxe é:
if expressão
{instruções_se_expressão_verdadeira}
else
{instruções_se_expressão_falsa}
end
Por exemplo, para o vector s anteriormente definido, se se quisesse definir a sinusóide só nos
semi-ciclos positivos, e nos negativos forçá-la a zero (sinusóide simplesmente rectificada), a sua
definição passaria a ser, por exemplo:
for i=1:100,
s(i)=a;
s(i)=0;
end
end
14
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
Comandos Relacionados
switch
O Matlab tem definidas várias funções elementares no tópico elfun (de ELementary FUNctions),
de que a seguir se referem alguns exemplos.
Funções Trigonométricas
Exponenciais e Logaritmos
Outras Funções
15
real(X) parte real dos elementos da matriz de complexos X
3.5 Exemplo
t
y 3 t e
Estas funções, como terá oportunidade de verificar noutras disciplinas do curso, estão
intimamente ligadas com a resposta de circuitos eléctricos com uma resistência, uma bobina e
um condensador (circuitos RLC).
t=0:0.1/999:0.1 % cria vector de tempo, com 1000 elementos
for i=1:1000,
y1(i)=exp(-t(i)/tau)*cos(w*t(i));
y2(i)=exp(-t(i)/tau);
y3(i)=-exp(-t(i)/tau);
end
y2
y1
y3
16
4 Ficheiros
A utilização e gestão de ficheiros em Matlab apresenta aspectos muito importantes. A
programação através da linha de comandos pode-se tornar exasperante, pois um simples engano
num carácter pode tornar inúteis os comandos anteriormente introduzidos, se se estiver, por
exemplo, a meio de um ciclo. Este problema é ultrapassado se os comandos forem gravados
num ficheiro, e este corrido a partir do Matlab. Por outro lado, os valores de determinadas
variáveis de interesse, ou de todo o espaço de trabalho, podem ser guardadas e utilizadas
posteriormente.
O editor do Matlab permite não só a criação de ficheiros com código de programação, mas
também correr os programas e fazer a sua depuração (debug).
Um ficheiro de Matlab é criado através do comando edit. Este comando, por si só, abre um
editor, onde se pode escrever um programa, para posterior utilização. O comando
edit nome
abre o ficheiro nome.m para ser editado. Para correr um programa gravado num ficheiro, basta
introduzir na linha de comando o seu nome, neste caso:
nome
Note-se que é necessário que a directoria de trabalho coincida com aquela onde está o ficheiro
(ou que esta esteja indicada na path). Na Figura 4-1 apresenta-se o editor do Matlab aberto para
um ficheiro existente.
17
4.1.1 Gestão de Directorias
Se a directoria incluir caracteres especiais (espaços, acentos, etc.), então deverá ser usada a
seguinte forma, por exemplo para a pasta ‘Os meus documentos’:
cd(‘\windows\Os meus documentos’)
Para listar os ficheiros da directoria de trabalho, utiliza-se o comando dir. Por exemplo, o
comando
dir *.m
As variáveis do ambiente de trabalho podem ser gravadas através da função save (e lidas
posteriormente com load). Existem assim as seguintes opções:
Como foi referido acima, a recuperação de variáveis a partir de ficheiros faz-se com a função
load:
18
5 Visualização de Dados
Um dos pontos fortes do Matlab é a facilidade de visualização gráfica de dados, tanto em duas
como em três dimensões. Estes gráficos são visualizados numa janela independente, designada
figura (figure), como a representada na Figura 5-1, correspondendo ao exemplo da Secção 3.5.
Como se pode observar, existem vários ícones e menus, que permitem aceder a diversas opções
sobre o aspecto e escalas do gráfico, ou mesmo gravá-lo sob diferentes formatos.
O comando que permite visualizar gráficos a duas dimensões, com escalas lineares, é o comando
plot. Este apresenta diferentes possibilidades:
O comando plot permite ainda especificar a cor de cada curva desenhada, mas esta tarefa pode
ser acedida directamente a partir da janela do gráfico, pelo que não será por ora explanada.
Para se visualizar em simultâneo vários gráficos na mesma janela, utiliza-se o comando subplot.
Este divide a janela numa matriz NxM, ao mesmo tempo que acede à posição em que se
pretende desenhar o respectivo gráfico. Voltando ao exemplo da Secção 3.5, suponha-se que se
19
pretendia desenhar, separadamente, os gráficos dos sinais y1, y2 e y3, e um gráfico conjunto desses
mesmos sinais. Antes de mais, a sintaxe do comando subplot é:
Note-se que o comando subplot deve preceder um plot, que efectivamente desenhará os
gráficos. Continuando com o exemplo, os comandos seriam:
subplot(2,2,1) % selecciona a primeira posição da matriz 2x2
plot(t,y2)
plot(t,y3)
plot(t,y1,t,y2,t,y3)
As propriedades dos gráficos (espessura e cor das linhas, título, texto, escalas, fontes e dimensão
do texto, tipo de eixos, etc.) podem ser alteradas, quer através de comandos, quer
interactivamente. Só esta última forma será aqui sumariamente descrita.
Para se poder alterar as propriedades do gráfico, deve-se primeiro entrar em modo de edição
(edit mode). Isso é feito activando o ícone respectivo, representado na Figura 5-3. Após esta
operação, basta clicar duas vezes na curva (estilo, espessura, cor) ou nos eixos (título, legenda
dos eixos, limites, tipo de gráfico). Podem ainda ser inseridos texto, setas e segmentos, através
dos ícones respectivos, também representados na Figura 5-3.
Se Z(i,j) for uma matriz em que cada elemento corresponde à altura de uma superfície sobre
uma grelha (i,j), então os comandos seguintes permitirão visualizar essa superfície:
mesh(z)
surf(z)
20
Figura 5-2: Comando subplot
Inserir segmentos
Modo de edição
Inserir setas
Inserir texto
Figura 5-3: Alteração das propriedades de uma figura
que cria as matrizes X e Y, correspondentes aos vectores domínio dx e dy, adequadas a serem
utilizadas pelas funções mesh e surf. Se os domínios forem iguais, pode-se utilizar a forma mais
compacta
[X,Y] = MESHGRID(d)
A utilização destas funções será mais facilmente descrita através de um exemplo. Assim, admita-
se que se pretendia visualizar a função
z sincx , y
sin x 2 y 2
x 2 y2
com domínios entre -10 e 10, tanto em x como em y. Uma forma possível de o fazer seria:
21
d=-10:.5:10; % definicao do dominio, isto e, um vector de -10 a
% mensagem de aviso.
22
Figura 5-5: Exemplo da função surf
23
6 Bibliografia
Adicionalmente à sumária introdução ao Matlab apresentada neste manual, encontra-se, como já
referido, uma extensa bibliografia em www.mathworks.com, no formato pdf, da qual se
destacam:
25