Escolar Documentos
Profissional Documentos
Cultura Documentos
COPPE
FUNDAMENTOS
DE
MATLAB
Mini-Curso de Matlab
ndice / Ementa
Prefcio............................................................................................................................. 3
1. O Que o Matlab?.................................................................................................... 4
2. Tipos de Variveis do Matlab................................................................................... 5
3. Escalares, Vetores, Matrizes e Strings...................................................................... 6
4. Indexao de Matrizes e Vetores. ............................................................................. 8
5. Operaes Algbricas Bsicas: Escalares, Matriciais e Elemento-a-Elemento...... 10
6. Operaes com Strings ........................................................................................... 12
7. Operaes Lgicas.................................................................................................. 14
8. Clusulas de Loops e Condicionais. ....................................................................... 16
9. Comandos de Entrada e Sada de Dados. ............................................................... 19
10. Salvando e Recuperando Variveis. ....................................................................... 21
11. Funes de Grficos 2D e 3D................................................................................. 22
12. Alguns Comandos teis. ........................................................................................ 26
13. Construo de Programas e Funes. ..................................................................... 27
14. Hierarquia de Variveis (Locais e Globais)............................................................ 30
15. Objetos e Suas Propriedades (get e set)........................................................... 31
16. Os Toolboxes do Matlab. ........................................................................................ 33
2
Prefcio
3
Mini-Curso de Matlab
1. O Que o Matlab?
4
Mini-Curso de Matlab
5
Mini-Curso de Matlab
6
Mini-Curso de Matlab
existem, tambm, strings sob a forma de matrizes. Deve-se notar que, neste caso, todas
as linhas (ou todas as colunas) da matriz de caracteres devem possuir o mesmo nmero
de elementos, incluindo espaos em branco.
At agora, vimos que o Matlab opera com matrizes (1x1), (1xn), (nx1) ou
(mxn). No obstante, existe uma matriz especial no Matlab, que definida como uma
matriz vazia, ou, em outras palavras, uma matriz 0x0 (por vezes, encontram-se matrizes
de tamanho nx0 ou 0xn, que tambm so reconhecidas como vazias).
Agora, veremos como montar matrizes no Matlab:
7
Mini-Curso de Matlab
8
Mini-Curso de Matlab
9
Mini-Curso de Matlab
que sero atribudos. Por exemplo: A(2,1:2)=[10 11]; alterar os dois primeiros
elementos da segunda linha da matriz A, que ficar com a seguinte composio: [1 2
3;10 11 6;7 8 9].
Obs.: antes da verso 5.X, qualquer operao de atribuio devia obedecer
correspondncia de dimenses, mesmo no caso em que um mesmo valor fosse atribudo
ao subconjunto de elementos. Deste modo o comando anlogo primeira atribuio
desta seo deveria ter a seguinte sintaxe: A(2,1:3)=12*ones(1,3);.
10
Mini-Curso de Matlab
Obs.: o Matlab possui um operador unrio especial para inverso de matrizes (ou
escalares) que o inv( ). Mais uma vez, chamamos a ateno ao fato de que seu
argumento deve ser uma matriz quadrada.
11
Mini-Curso de Matlab
elemento. Por serem funes, os argumentos de entrada devem ser postos entre
parnteses aps o nome da funo. Por exemplo:
sin(x) - seno;
cos(x) - cosseno;
tan(x) - tangente;
sinh(x) - seno-hiperblico;
cosh(x) - cosseno-hiperblico;
tanh(x) - tangente-hiperblica;
asin(x) - arco-seno;
acos(x) - arco-cosseno;
atan(x) - arco-tangente;
atan2(y,x) - arco-tangente de quatro quadrantes, onde os sinais da ordenada (y) e da
abscissa (x) so considerados para definir o quadrante onde se encontram; o
resultado se encontra no intervalo [-,];
asinh(x) - arco-seno-hiperblico;
acosh(x) - arco-cosseno-hiperblico;
atanh(x) - arco-tangente-hiperblica;
exp(x) - ex;
log(x) - logaritmo neperiano (logex);
log10(x) - logaritmo na base 10 (log10x);
12
Mini-Curso de Matlab
13
Mini-Curso de Matlab
7. Operaes Lgicas.
14
Mini-Curso de Matlab
Obs.: as funes acima possuem aplicabilidade bvia em vetores, ou seja, elas testam se
algum ou todos os elementos de um vetor so verdadeiros. J a seu emprego com
matrizes no to bvio: o que elas fazem testar coluna por coluna da matriz como se
fossem vetores independentes, e o resultado retornado sob a forma de um vetor linha
(cada elemento corresponde ao resultado da coluna correspondente). Desta forma, se
quisermos, por exemplo, testar se algum ou todos os elementos de uma matriz so
verdadeiros, o que devemos fazer , respectivamente, any(any(A)) ou all(all(A)), sendo
A a matriz.
Outras funes lgicas no menos importantes, mas de uso mais restrito, so
apresentadas abaixo. Para se obterem informaes sobre suas sintaxes, use a ajuda do
Matlab.
exist testa se uma varivel est definida no ambiente;
isnan retorna verdadeiro para elementos NaN;
isinf retorna verdadeiro para elementos infinitos;
finite retorna verdadeiro para elementos finitos;
isempty testa se uma matriz vazia (dimenso [0x0]);
isreal testa se uma matriz real;
issparse testa se uma matriz esparsa;
isstr testa se uma varivel uma string, ou seja, uma cadeia de caracteres;
isglobal testa se uma varivel global (a hierarquia das variveis, ou seja,
locais e globais, ser explicada mais adiante).
15
Mini-Curso de Matlab
if <expresso lgica>,
comando 1;
comando 2;
comando n;
else,
comando n+1;
comando n+m;
end
16
Mini-Curso de Matlab
Obs.: deve-se salientar (e a mesma observao vale para os demais comandos) que as
vrgulas aps os comandos if e else no so necessrias no caso de digitao em linhas
diferentes (como o caso do modelo acima), mas apenas em situaes em que toda a
estrutura digitada em uma mesma linha. Outra observao muito importante, e que
tambm vale para todas as clusulas, que deve-se, sempre, termin-las com o comando
end. Esta caracterstica muito til na identificao de estruturas dentro de outras.
for varivel=vetor,
comando 1;
comando 2;
comando n;
end
17
Mini-Curso de Matlab
Alguns comandos teis a serem utilizados com as clusulas vistas neste captulo
so:
break termina a execuo de um loop;
return retorna para a funo ou programa chamador;
error termina a execuo de uma funo ou de um programa, exibindo
uma mensagem de erro na tela e soando um alarme sonoro.
18
Mini-Curso de Matlab
Aqui, vamos abordar algumas funes que permitem que o Matlab se comunique
com o usurio ou com arquivos de disco. No que concerne comunicao com o
usurio, existem as funes abaixo:
disp(X) se X for uma cadeia de caracteres (string), o texto existente nesta
varivel apresentado na tela; se for uma varivel numrica, o seu contedo
exibido sem ser acompanhado do nome da varivel;
x=input(texto,s) apresenta a mensagem texto na janela de comando e
interrompe o andamento do programa at que o usurio entre com um valor,
que ser atribudo varivel x; se o argumento opcional s for utilizado, o
Matlab considerar que a informao a ser digitada pelo usurio uma string,
no precisando, portanto, vir entre aspas simples;
x=menu(Pergunta,Opo 1,,Opo n) abre uma janela de dilogo
com o texto Pergunta e n botes com rtulos Opo 1 a Opo n e
interrompe a execuo do programa at que um dos botes seja pressionado;
atribudo, ento, varivel x o valor numrico correspondente ao boto
selecionado (1 a n);
pause interrompe a execuo do programa at que o usurio pressione
uma tecla; se possuir um argumento numrico de entrada (pause(n)), o
programa sofrer uma pausa de n segundos e, ento, prosseguir
normalmente;
19
Mini-Curso de Matlab
Obs.: as funes fread e fwrite manipulam o arquivo a partir do valor corrente do seu
ponteiro e modificam este valor para o final do bloco lido ou escrito; portanto, se um
arquivo possuir um formato complexo, com vrios formatos de elementos, podem-se
seqenciar vrias funes fread ou fwrite, cada uma utilizando um determinado
formato.
20
Mini-Curso de Matlab
fseek(fid, 0, eof);
tamanho=ftell(fid); %Tamanho do arquivo em bytes
fseek(fid, 0, bof);
Obs.: o caracter de percentual (%) apresentado acima denota linha de comentrio; tudo
o que estiver sua direita at o final da linha ser negligenciado pelo Matlab (ver
captulo 10).
O Matlab possui duas funes (save e load), que permitem que o usurio
salve/recupere, facilmente, variveis no/do disco. Suas sintaxes so descritas abaixo:
save arquivo varivel_1 varivel_n salva em um arquivo chamado
arquivo.mat as variveis varivel_1 at varivel_n; se forem suprimidos os
nomes das variveis, todas as variveis existentes no ambiente sero salvas;
se o comando vier seguido pela clusula -ascii, o arquivo salvo em formato
texto, usando oito dgitos ASCII (neste caso, no atribuda ao arquivo a
extenso .mat); ver ajuda deste comando para maiores detalhes;
load arquivo carrega as variveis salvas em arquivo.mat; se o arquivo
estiver em formato ASCII, deve-se incluir sua extenso na linha de comando
(load arquivo.ext); caso o arquivo ASCII no possua extenso, o comando
deve ser seguido pela clusula -ascii; ver, tambm, ajuda deste comando para
maiores informaes.
21
Mini-Curso de Matlab
22
Mini-Curso de Matlab
Cor Marcador
y amarelo . ponto
m magenta o bola
c ciano x marca-x
r vermelho + marca de mais
g verde * estrela
b azul - linha contnua
w branco : pontilhado (traos curtos)
k preto -. trao-ponto (traos longos e curtos)
-- tracejado (traos longos)
23
Mini-Curso de Matlab
24
Mini-Curso de Matlab
Para grficos de malha, o comando hidden off faz com que as linhas que estariam
escondidas por trs do slido tornem-se visveis, como abaixo:
25
Mini-Curso de Matlab
fosse uma matriz de grficos. Este comando deve ser seguido de trs argumentos: o
primeiro refere-se ao nmero de linhas desta matriz; o segundo, ao nmero de
colunas; j o terceiro indica qual o setor desta matriz a ser ocupado pelo grfico. Este
setor ser considerado o grfico corrente e, conseqentemente, qualquer comando de
desenho subseqente ser efetuado neste setor. Por exemplo, se quisermos colocar em
uma mesma figura os trs grficos mostrados anteriormente, dividindo-a em quatro
setores (2 linhas por 2 colunas), devemos fazer a seguinte seqncia de comandos
(supondo que o vetor de tempo t e os vetores da esfera x, y, z j existem):
subplot(2,2,1)
plot(t,sin(t),r,t,cos(t), b:)
subplot(2,2,2)
plot(sin(t),cos(t),t,b)
subplot(2,2,3)
mesh(x,y,z)
Para maiores detalhes ver help graphics, help plotxy e help plotxyz.
26
Mini-Curso de Matlab
27
Mini-Curso de Matlab
% Programa.m
% Programa que abre os dados contidos em um arquivo, processa-os e apresenta
%os resultados em grfico.
%Autor - Data
abredado;
processa;
desenha;
%fim do programa
realiza estes trs procedimentos consecutivamente.
O caracter de percentual, tal como dito anteriormente, indica que todo o texto
contido sua direita at o final da linha ser negligenciado pelo Matlab e representa um
comentrio do autor do programa. As primeiras linhas comentadas consecutivamente de
um programa so utilizadas pelo Matlab com help do mesmo. Deste modo, se
digitarmos na linha de comando help programa, aparecer na tela o seguinte texto:
Programa.m
Programa que abre os dados contidos em um arquivo, processa-os e apresenta
os resultados em grfico.
recomendvel sempre construir programas bem comentados, por exemplo
indicando o que cada comando (ou os principais) deveria realizar. Outra aplicao til
do caracter de percentual na alterao transitria (testes) de programas, fazendo com
que determinados comando sejam ou no executados tirando ou deixando o caracter.
As funes do Matlab, ao contrrio dos scripts, no deixam as variveis
declaradas em seu escopo no ambiente aps seu trmino; suas variveis so locais e
apenas existem enquanto a funo estiver rodando. A comunicao de dados para e pela
funo se d atravs dos argumentos de entrada e sada, respectivamente. Desta forma,
as funes apresentam a vantagem de economizar espao em memria, apenas deixando
no ambiente as variveis necessrias (argumentos da funo). Outra vantagem das
funes que elas so interpretadas e compiladas apenas na primeira vez que so
chamadas em uma seo do Matlab, sendo mantidas em memria, o que torna a sua
28
Mini-Curso de Matlab
Um exemplo dado pela funo definida abaixo, cujo arquivo texto denomina-
se Funcao.m:
% Funcao.m
% Funo que realiza o produto, a diviso e a potenciao do primeiro argumento
%de entrada pelo segundo. Caso no haja o segundo argumento, considera este igual a 2
%devolvendo, portanto o dobro, a metade e o quadrado do argumento de entrada.
function [a,b,c]=funcao(x,y)
if nargin < 2, %Se no houver o segundo argumento de entrada,
y=2; %faz o mesmo igual a 2,
elseif length(y) > 1, %caso contrrio, se o mesmo no for um escalar,
y=y(1); %toma apenas seu primeiro elemento.
end;
a=x*y; % Faz o produto,
b=x/y; % a diviso,
c=x^y; % e a potenciao.
29
Mini-Curso de Matlab
30
Mini-Curso de Matlab
uma varivel local de funo ou da raiz), uma cpia da mesma estabelecida no espao
global. Assim que qualquer outro espao local declarar o mesmo nome de varivel como
global, este espao receber uma cpia da varivel existente no espao global. Deste
modo, sempre que a varivel for modificada, esta modificao ser percebida por todos
os espaos que compartilham esta varivel global. Se alguma outra funo possuir uma
varivel com este mesmo nome mas no declar-la como global, esta varivel no se
confundir com a varivel global.
31
Mini-Curso de Matlab
- Outro filho de uso visual em uma figura o menu, aparecendo como um texto na barra
de menus da figura. Se no for especificado, no momento de sua criao, o objeto pai,
ele ser colocado na barra de menus da figura corrente. Entretanto, este tipo de objeto
pode ser agrupado dentro outro menu, servindo como um submenu; neste caso, no
momento de sua criao, deve-se especificar o menu ao qual ele ser incorporado:
mn=uimenu; (para menus) ou
sbmn=uimenu(mn); (para submenus)
- Os objetos filhos de figuras mais teis em criao de ambientes visuais so,
indubitavelmente, os controles, que incluem: push buttons, radio buttons, check boxes,
editores de texto, textos fixos, sliders, quadros (estes possuem apenas aspecto esttico) e
menus tipo pop-up (verses 4.X), alm de toggle buttons e list boxes (verses 5.X).
Todos estes tipos de controles so criados pelo mesmo comando, devendo-se, para
especificar seu tipo, estabelecer sua propriedade style.
u=uicontrol;
- Como filhos de eixos, podem-se criar vrios tipos de objetos: linhas, superfcies,
patches, imagens e textos. Estes ltimos surgem, tambm, como algumas propriedades
de eixos (ttulo e rtulo dos eixos de coordenadas).
l=line; ou l=plot(x,y);
s=surface; ou s=surf(x,y,z); ou s=mesh(x,y,z);
p=patch;
im=image;
tx=text;
32
Mini-Curso de Matlab
33
Mini-Curso de Matlab
Processamento de Sinais;
Processamento de Imagens;
Controle;
Wavelets;
Redes Neuronais;
Lgica Fuzzy;
Estatstica;
Otimizao;
Identificao de Sistemas
Operaes Simblicas;
Simulink (pacote de simulao por diagrama de blocos).
34