Escolar Documentos
Profissional Documentos
Cultura Documentos
Acetatos Matlab
Acetatos Matlab
Acetatos Matlab
Informática II
Engenharia Biomédica
MATLAB®
Como Surgiu?
§ Em inícios dos anos 80 Moler, em conjunto com outros dois professores, Jack
Little e Steve Bangert, resolvem desenvolver uma versão comercial da
ferramenta desenvolvida por Moler;
Iniciação ao MATLAB®
MATLAB®
O que é?
§ Ferramenta/linguagem de programação;
15 0.5
Rate of Return (%)
14
0
13
12 -0.5
11
10
-1
1
9 0.5 1
10 11 12 13 14 15 16
% Standard Deviation (Volatility) 0 0.5
0
-0.5 -0.5
-1 -1
Iniciação ao MATLAB®
MATLAB®
Utilização
§ Visualização de dados;
§ Cálculo numérico;
§ Cálculo simbólico;
§ etc…
Iniciação ao MATLAB®
MATLAB®
Ambiente de Trabalho
Comandos Básicos
Operadores & Operações
Indexação de Matrizes
Iniciação ao MATLAB®
MATLAB®
Ambiente de Trabalho
VARIÁVEIS DE
TRABALHO
DIRECTORIA DE
TRABALHO
JANELA DE COMANDOS
HISTORIAL DE
COMANDOS
EXECUTADOS
Iniciação ao MATLAB®
MATLAB®
O Editor
Iniciação ao MATLAB®
MATLAB®
Comandos Básicos
Comando Descrição
>> help fun Fornece informação acerca de fun na janela de comandos;
>> doc fun Abre a documentação de ajuda acerca de fun;
Devolve na janela de comandos todas as funções que incluam na sua
>> lookfor termo
descrição a palavra termo;
Permite alterar a directoria de trabalho a partir da linha de comandos; path
>> cd path
representa o caminho da nova pasta de trabalho;
>> pwd Devolve na linha de comandos a actual directoria de trabalho;
>> which fun Devolve na linha de comandos o caminho para a localização da função fun;
>> dir Devolve o conteúdo da actual directoria de trabalho;
Verifica a existência da variável var ou função fun; Devolve um valor entre 0
>> exist(‘var/fun’)
e 8 com significados distintos;
>> who Devolve uma lista das variáveis do espaço de trabalho;
Devolve uma lista das variáveis do espaço de trabalho com informação mais
>> whos
detalhada;
Devolve uma lista dos ficheiros específicos MATLAB existentes na actual
>> what
directoria de trabalho (.m, .mat, etc…);
Verifica se uma matriz está vazia ou não; Devolve “0” se não está vazio e “1”
>> isempty(‘var’)
se sim;
Iniciação ao MATLAB®
MATLAB®
Comandos Básicos
Comando Descrição
Comando para eliminar variáveis do espaço de trabalho. Pode tomar vários
>> clear arg
argumentos arg em função daquilo que se pretende eliminar;
Comando para limpar uma figura. Pode ser usado sem ou com argumento arg. arg
>> clf (arg)
representa a figura que se pretende limpar;
>> format arg Permite configurar o formato de saída. Pode ser usado com diversos argumentos;
Permite ir actualizando um gráfico sem perder o seu conteúdo actual; arg pode
>> hold arg
ser on, off. Usado sozinho alterna entre on e off;
Cria uma nova figura; Por exemplo se se pretende criar um gráfico novo; Pode ser
>> figure (h)
usado de diversas formas. h representa o handle para a figura;
>> edit fun Permite chamar o editor; Se não usada fun abre uma nova janela em branco;
>> ver Permite verificar as versões das toolboxes instaladas;
>> version Permite verificar a versão do MATLAB;
Permite criar um registo com todos os comandos usados na sessão. arg pode
>> diary arg
tomar os valores on ou off. Usado sozinho alterna entre cada um dos estados;
>> exit ou quit Sair do MATLAB®.
Iniciação ao MATLAB®
MATLAB®
Variáveis Especiais
Variável Descrição
Variável usada por defeito para guardar os resultados. O seu valor é alterado para o
ans
último resultado;
pi Valor de pi;
eps Menor valor incremental possível - 2.2204x10-16;
inf Infinito
NaN Not a number; Significa que não é um número;
i ou j Variável complexa;
end Representa o fim. Pode ser usado para indexar o último elemento;
realmin Menor valor real possível de ser usado;
realmax Maior valor real possível de ser usado;
Exemplos:
>> eps >> pi >> realmin
Iniciação ao MATLAB®
MATLAB®
Operadores Aritméticos
Operador Descrição
+ Soma; Exemplo:
- Subtracção; Tendo
x =
* Multiplicação;
/ Divisão; 1 3
4 2
^ Potência;
.* Multiplicação elemento a elemento; >> x^2
‘ Transposta;
>> x.^2
= Atribuição;
ans =
. Marcador decimal;
exp Exponencial; 1 9
16 4
log Logaritmo natural;
log10 Logaritmo base 10;
e Potência de base 10;
Iniciação ao MATLAB®
MATLAB®
Operadores Especiais
Operador Descrição
Usado para o ciclo for, na criação de matrizes e indexação de matrizes. Significa “até”
:
ou “todas” dependendo do contexto;
… Usado para continuar código na linha seguinte;
() Usado para indexação de matrizes ou passagem de argumentos a funções;
[] Especificar dados de saída, concatenação de dados ou construção de arrays;
{} Construir um cell array ou indexar um cell array;
Marcador decimal, pode ser usado nas operações elemento a elemento ou para
.
referenciar campos de uma estrutura;
Usado para separar por colunas elementos de um array, separar argumentos de
,
entrada de uma função ou separar comandos;
; Separar elementos por coluna; Evitar eco dos comandos introduzidos;
% Introduzir comentários no código;
Operador Descrição
> Maior;
>= Maior ou igual;
< Menor;
<= Menor ou igual;
~= Diferente;
== Igual (não confundir com o de atribuição);
§ Também podem ser usados como forma de proceder a uma indexação lógica;
Exemplos:
>> x=magic(5); >> x(id)=0
>> id=x>5
id = x =
1 1 0 1 1
1 0 1 1 1 0 0 1 0 0
0 1 1 1 1 0 5 0 0 0
1 1 1 1 0 4 0 0 0 0
1 1 1 0 1 0 0 0 0 3
0 0 0 2 0
Iniciação ao MATLAB®
MATLAB®
Operadores Lógicos
Operador Descrição
& “E” Lógico; Pode ser usado para operação E elemento a elemento;
&& “E” Lógico (Usado para combinar condições no ciclo If e While);
| “OU” Lógico; Pode ser usado para operação OU elemento a elemento;
|| “OU” Lógico (Usado para combinar condições no ciclo If e While);
~ Negação;
Exemplos:
>> x=[0 1 1 1 0 1]; >> ~x
>> y=[1 1 1 1 0 1];
>> x&y,x|y ans =
ans =
1 0 0 0 1 0
0 1 1 1 0 1
Iniciação ao MATLAB®
MATLAB®
Criação de Variáveis
Exemplos:
>> x=5 >> x=[1 2 3;4 5 6] >> x=ones(2,2,2)
x = x = x(:,:,1) =
5 1 2 3
4 5 6 1 1
1 1
>> y='a‘ >> x=(1:4)
y = x =
x(:,:,2) =
a
1 2 3 4
1 1
1 1
Iniciação ao MATLAB®
MATLAB®
Vectores & Matrizes
1 2 3 0 0
4 5 6 0 0
Iniciação ao MATLAB®
MATLAB®
Indexação de Matrizes
Exemplos:
Indexação Indexação Indexação
Linha-Coluna Linear Lógica
>> x(2,5) >> x(22) >> x(x==16)
ans =
x = ans = ans =
16 16
17 24 1 8 15 16
23 5 7 14 16 >> x(2,:) >> ind=x>10
4 6 13 20 22 ans =
10 12 19 21 3 ind =
11 18 25 2 9 23 5 7 14 16
1 1 0 0 1
>> x(1,1:end) 1 0 0 1 1
ans = 0 0 1 1 1
0 1 1 1 0
17 24 1 8 15 1 1 1 0 0
Iniciação ao MATLAB®
MATLAB®
Indexação de Matrizes
x = x =
17 24 1 8 15 17 24 1 8 15
23 5 7 14 16 23 5 7 14 16
4 6 13 20 22 4 6 13 20 22
10 12 19 21 3 10 12 19 21 3
11 18 25 2 9 11 18 25 2 9
l-c para Linear para
>> ind=sub2ind(size(x),2,3) >> [l,c]=ind2sub(size(x),12)
linear l-c
ind = l =
12 2
>> x(12)
c =
ans =
3
7
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
ans = 13 9
12 16
26 Potência
>> x.^2
>> x./y’
ans =
ans =
Divisão
1 9
0.5000 0.5000
16 4
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
3 5 >> x+y
Operações
6 4 Operações ??? Error using ==> plus
com
Inválidas Matrix dimensions must agree.
Escalares >> 2*x
>> x*y'
ans = ??? Error using ==> mtimes
Inner matrix dimensions must
2 6 agree.
8 4
>> x'*y
>> x/2 ??? Error using ==> mtimes
ans = Inner matrix dimensions must
agree.
0.5000 1.5000
2.0000 1.0000
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
23 24 25 21 22 >> min(x,[],2)
Máximo >> max(x,[],2)
Mínimo ans =
ans =
1
24 5
23 4
22 3
21 2
25
>> min(min(x))
>> max(max(x))
ans = ans =
25 1
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
ans = ans =
4 5 1 2 3 1
10 6 7 8 9 2
11 12 13 14 15 4
17 18 19 20 16 5
23 24 25 21 22 6
8
>> sort(x,2) 9
10
ans = 12
Ordenar Procura 13
1 8 15 17 24 14
5 7 14 16 23 15
4 6 13 20 22 16
3 10 12 19 21 17
2 9 11 18 25 18
19
>> sort(max(x)) 21
22
ans = 23
25
21 22 23 24 25
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
l = x =
1 1 2
2
4 …
y =
c =
4 5
1
1 >> z=[x y]
Concatenação
Procura 1 …
de Matrizes
z =
>> id=x>5 1 2 4 5
id =
>> z=[x;y]
1 1 0 1 1
1 0 1 1 1 z =
0 1 1 1 1
1 1 1 1 0 1 2
1 1 1 0 1 4 5
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
17 24 1 8 15 17 24 1 8 15
23 5 7 14 16 23 5 7 14 16
4 6 13 20 22 4 6 13 20 22
10 12 19 21 3 10 12 19 21 3
11 18 25 2 9 11 18 25 2 9
17 24 1 8 15
23 5 7 14 16
10 12 19 21 3
11 18 25 2 9
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
Função Exemplo
>> x(6:18)=[]
x =
17 23 4 10 11 21 2 15 16 22 3 9
Note-se, que ao eliminar elementos específicos de uma matriz que não constituam uma linha
ou coluna completa a matriz sofre um novo arranjo passando a ser um vector;
Eliminação >> x=magic(3)
de
Elementos x =
de uma
Matriz 8 1 6
3 5 7
4 9 2
x =
8 4 1 5 9 6 7 2
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
Função Exemplo
>> x=magic(5)
x =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> x(6:18)=[]
Reorganização
x =
17 23 4 10 11 21 2 15 16 22 3
9
ans =
17 10 2 22
23 11 15 3
4 21 16 9
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
x = x =
17 24 1 8 15 17 24 1 8 15
23 5 7 14 16 23 5 7 14 16
4 6 13 20 22 4 6 13 20 22
10 12 19 21 3 10 12 19 21 3
11 18 25 2 9 11 18 25 2 9
ans = ans =
Média Mediana
13 13 13 13 13 11 12 13 14 15
ans = ans =
13 15
13 14
13 13
13 12
13 11
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
x = x =
17 24 1 8 15 17 24 1 8 15
23 5 7 14 16 23 5 7 14 16
4 6 13 20 22 4 6 13 20 22
10 12 19 21 3 10 12 19 21 3
11 18 25 2 9 11 18 25 2 9
x = x =
17 24 1 8 15 17 24 1 8 15
23 5 7 14 16 23 5 7 14 16
4 6 13 20 22 4 6 13 20 22
10 12 19 21 3 10 12 19 21 3
11 18 25 2 9 11 18 25 2 9
65 65 65 65 65 6 -19 6 6 1
-19 1 6 6 6
>> sum(x,2) 6 6 6 1 -19
1 6 6 -19 6
ans =
>> diff(x,4,1)
65
65 ans =
65
65 -80 10 0 -10 80
65
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
§ A partir da matriz ‘x’ construir uma matriz ‘y’ com as duas primeiras colunas;
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes
Função Descrição
diag(…) Permite criar uma matriz diagonal com os elementos pretendidos;
flipdim(…) Troca os elementos do array segundo a dimensão seleccionada;
linspace(…) Permite criar uma matriz com os seus elementos linearmente separados;
Iniciação ao MATLAB®
MATLAB®
Exercício 1
2. A partir de ‘x’ obter uma matriz ‘y’ com os elementos das colunas 2 a 5;
Iniciação ao MATLAB®
MATLAB®
Exercício 1 - Resolução
Pt. Instruções
>> x=magic(5) >> x=(1:25)
x = x =
17 24 1 8 15 Columns 1 through 22
23 5 7 14 16
4 6 13 20 22 1 2 3 4 5 6 7 8…
10 12 19 21 3 …9 10 11 12 13 14 15 16…
11 18 25 2 9 …17 18 19 20 21 22
Columns 23 through 25
1 23 24 25
>> x=reshape(x,5,5)
x =
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
Iniciação ao MATLAB®
MATLAB®
Exercício 1 - Resolução
Pt. Instruções
>> y=x(:,2:5) >> y=x(1:5,2:5)
y = y =
6 11 16 21 6 11 16 21
2 7 12 17 22 7 12 17 22
8 13 18 23 8 13 18 23
9 14 19 24 9 14 19 24
10 15 20 25 10 15 20 25
1 6 16 21
2 7 17 22
3 8 18 23
4 9 19 24
5 10 20 25
Iniciação ao MATLAB®
MATLAB®
Exercício 1 - Resolução
Pt. Instruções
>> A=x.^2
A =
maior = ind_maior =
25 25
5
>> menor=min(min(x)) >> ind_menor=find(x==1)
menor = ind_menor =
1 1
>> sum(sum(A))
6 ans =
5525
?
Iniciação ao MATLAB®
MATLAB®
Exercício 1 - Resolução
Pt. Instruções
>> linha=sum(x,2) >> col=sum(x,1)
linha = col =
7 55 15 40 65 90 115
60
65
70
75
>> x=magic(5) >> linha=sum(x,2)
x = linha =
17 24 1 8 15 65
23 5 7 14 16 65
4 6 13 20 22 65
7 10 12 19 21 3 65
11 18 25 2 9 65
>> col=sum(x,1)
col =
65 65 65 65 65
Iniciação ao MATLAB®
MATLAB®
ESTRUTURAS
DE DADOS
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Dados Exemplos
>> pessoa.nome='Paulo'
nome: 'Paulo'
>> pessoa.idade=23
pessoa =
Todos os campos ficam associados
Estruturas
nome: 'Paulo'
idade: 23
>> pessoa.ano=1980
pessoa =
nome: 'Paulo'
idade: 23
ano: 1980
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Dados Exemplos
>> pessoa(2).nome='Manuel‘
pessoa =
>> pessoa(2).idade=12
pessoa =
>> pessoa(2).ano=1997
pessoa =
Dados Exemplos
>> pessoa(1)
ans =
nome: 'Paulo'
idade: 23
ano: 1980
>> pessoa(2)
Estruturas
ans =
nome: 'Manuel'
idade: 12
ano: 1997
>> pessoa(3)
??? Index exceeds matrix dimensions.
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Dados Exemplos
>> pessoa=struct('nome','Paulo','idade',23,'ano',1980)
pessoa =
nome: 'Paulo'
idade: 23
ano: 1980
>> pessoa(2)=struct('nome','Manuel','idade',12,'ano',1997)
pessoa =
>> pessoa(2)
ans =
nome: 'Manuel'
idade: 12
ano: 1997
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Dados Exemplos
>> x={[1 2] [3;6] 'teste'}
x =
>> x{1}
ans =
1 2
Cell array
>> x(2,:)={[3 4] [6;7] 'asdwr'}
x =
>> x{2,1}
ans =
3 4
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Dados Exemplos
>> x=cell(2,3)
x =
[] [] []
[] [] []
>> x{1}=[2 3]
x =
Cell array
[1x2 double] [] []
[] [] []
>> x{2}=[2;3]
x = Dimensão diferente;
[1x2 double] [] []
[2x1 double] [] []
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Dados Exemplos
>> x=cell(2,3)
x =
[] [] []
[] [] []
>> x{1,1}=[2 3 4]
x =
Cell array
[1x3 double] [] []
[] [] []
>> x{2,1}='Teste'
x = Tipos diferentes;
[1x3 double] [] []
'Teste' [] []
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> c(1,:)={{‘Macieira'} {'Pereira'}}
c =
'Arvore' 'Quantidade'
>> f=cell2struct(c,header,1)
f =
Função Descrição
>> f(1)
ans =
Arvore: {‘Macieira'}
Quantidade: {[100]}
>> f(2)
ans =
cell2struct(…)
Arvore: {'Pereira'}
Quantidade: {[200]}
>> f(2).Arvore
ans =
'Pereira‘
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> pessoa -> estrutura pessoa do exemplo estruturas
pessoa =
>> d=struct2cell(pessoa)
d(:,:,1) =
struct2cell(…)
'Paulo'
[ 23]
[ 1980]
d(:,:,2) =
'Manuel'
[ 12]
[ 1997]
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> nome={‘Joao’;’Paulo’;’Jorge’}
nome =
'Joao'
'Paulo'
'Jorge’
>> idade=[18;21;20]
idade =
table(...)
18
21
20
>> numero=[18123;21213;20456]
numero =
18123
21213
20456
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> T=table(nome,numero,idade)
T =
'Joao' 18123 18
'Paulo' 21213 21
'Jorge' 20456 20
table(...)
>> T=table({'Joao';'Paulo';'Jorge'},[18123;21213;20456],
[18;21;20],'VariableNames',{'Nome','Numero','Idade'})
T =
'Joao' 18123 18
'Paulo' 21213 21
'Jorge' 20456 20
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> T=table([18123;21213;20456],[18;21;20],'VariableNames',
{'Numero','Idade'}, 'RowNames',{'Joao'; 'Paulo'; 'Jorge'})
T =
Numero Idade
______ _____
Joao 18123 18
Paulo 21213 21
Jorge 20456 20
table(...)
>> T=table([18123;21213;20456],[18;21;20],'VariableNames',
{'Numero','Idade'}, 'RowNames',nome)
T =
Numero Idade
______ _____
Joao 18123 18
Paulo 21213 21
Jorge 20456 20
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> T = readtable('patients.dat');
>> size(T)
readtable(.) ans =
writetable(.)
100 10
>> T(1:3,1:5)
ans =
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> T.Properties.VariableNames
ans =
Columns 1 through 9
Column 10
'SelfAssessedHeal...’
ans =
Description: ''
VariableDescriptions: {}
VariableUnits: {}
DimensionNames: {'Row' 'Variable'}
UserData: []
RowNames: {}
VariableNames: {1x10 cell}
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> T.Gender(1:3)
ans =
'Male'
'Male'
'Female’
>> T.Properties.RowNames=T.LastName
T =
>> T.LasName=[];
T =
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
T =
ans =
124 93
109 77
125 83
117 75
122 80
121 70
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> G=categorical(T.Gender)
G =
Male
Male
Female
Female
Female …
Categorias
>> any(G=='Male')
ans =
>> summary(G)!
Female 53 !
Male 47 !
!
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> T.Age(G=='Male')
ans =
38
43
40
28
25
>> hist(T.Age(G=='Female'))
Categorias
!
! 8
! 7
! 6
! 5
! 4
! 3
! 2
!
1
!
! 0
25 30 35 40 45 50
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> categories(G)
ans =
'Female'
'Male’
>> GF=removecats(G,'Male')
GF =
Categorias <undefined>
<undefined>
Female
Female …
>> isundefined(GF)!
!
ans =!
!
1!
1!
0 …!
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
>> A = categorical({'M';'L';'S';'S’},...
{'S','M','L'},{'small','medium','large'},'Ordinal',true)
A =
medium
large
small
small
A =
medium
xlarge
small
small
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
rmfield(…) Permite remover um campo de uma estrutura;
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas
Função Descrição
table2cell(…) Converte uma tabela para um cell array;
Iniciação ao MATLAB®
MATLAB®
Exercício 2
1. “raca”;
2. “cor”;
3. “peso”;
4. “idade”;
1. “Pastor alemão”;
2. “Preto”;
3. “25”
4. “5”
Iniciação ao MATLAB®
MATLAB®
Exercício 2
Iniciação ao MATLAB®
MATLAB®
Exercício 2
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
>> cao.raca=[] >> cao=struct('raca',[],'cor',[],'peso',[],'idade',[])
cao = cao =
raca: [] raca: []
cor: []
>> cao.cor=[] peso: []
idade: []
cao =
raca: []
cor: []
>> cao.peso=[]
1 cao =
raca: []
cor: []
peso: []
>> cao.idade=[]
cao =
raca: []
cor: []
peso: []
idade: []
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
>> cao.raca='Pastor Alemão‘ >> cao=struct('raca','Pastor
cao = Alemão','cor','Preto','peso',25,'idade',5)
raca: 'Pastor Alemão'
cor: [] cao =
peso: []
idade: [] raca: 'Pastor Alemão'
cor: 'Preto'
>> cao.cor='Preto‘ peso: 25
cao = idade: 5
raca: 'Pastor Alemão'
cor: 'Preto'
peso: [] >> cao=setfield(cao,'raca','Pastor Alemão')
idade: []
2 cao =
>> cao.peso=25
cao = raca: 'Pastor Alemão'
raca: 'Pastor Alemão' cor: 'Preto'
cor: 'Preto' peso: 25
peso: 25 idade: 5
idade: []
>> cao.idade=5
cao =
raca: 'Pastor Alemão'
cor: 'Preto'
peso: 25
idade: 5
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
>> cao(2).raca='Galgo',cao(2).cor=… >> cao(2)=struct('raca','Galgo','cor‘,…
'Castanho‘,cao(2).peso='20',cao(2).idade=6 'Castanho','peso',20,'idade',6)
cao = cao =
1x2 struct array with fields: 1x2 struct array with fields:
3 raca raca
cor cor
peso peso
idade idade
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
>> cao(2).peso >> getfield(cao,{1,2},'peso')
5 ans = ans =
20 20
>> cao.peso
ans =
25
ans =
45
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
>> celula=cell(2,3) >> celula{1,1}=magic(3)
celula =
celula = [3x3 double] [] []
[] [] []
[] [] []
[] [] [] >> celula{2,1}='Teste‘
celula =
[3x3 double] [] []
>> celula{1}=magic(3) 'Teste' [] []
>> celula{2,3}='Cão‘
celula =
[3x3 double] [ 25] [2x2 double]
'Teste' [2x2 double] 'Cão'
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
8 >> T=readtable('patients.dat');
>> L=categorical(T.Location)
L =
9 County General Hospital
VA Hospital
St. Mary's Medical Center
VA Hospital
>> summary(L)
County General Hospital 39
10 St. Mary's Medical Center 24
VA Hospital 37
>> T.Height=[];
12
>> T.Weight=[];
>> sum(T.Age<40) >> T1=T(T.Age<40,:)
56 9
Iniciação ao MATLAB®
MATLAB®
Exercício 2 - Resolução
Pt. Instruções
>> G=categorical(T1.Gender) >> G=categorical(T1.Gender)
G = G =
Male Male
Female Female
Female … Female …
14
31
Iniciação ao MATLAB®
MATLAB®
IMPORTAÇÃO
&
EXPORTAÇÃO DE
DADOS
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
§ Para testar vamos criar um ficheiro em “excel” com alguns dados (podem
incluir cabeçalhos);
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Import Wizard
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Import Wizard
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Import Wizard
Dados numéricos
Cabeçalhos
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Import Wizard
Variáveis importadas
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Import Wizard
Ficheiro de Texto
1 2
3 4 Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas
Função Descrição
>> x=importdata('Teste.xlsx')
x =
data: [1x1 struct]
textdata: [1x1 struct]
colheaders: [1x1 struct]
>> x.data
ans =
Função Descrição
>> x=importdata('Teste.txt')
x =
>> x.data
ans =
importdata(‘…’)
1.0000 2.1000 3.0000
2.0000 2.1000 2.0000
3.0000 2.3000 2.0000
4.0000 2.4000 2.0000
5.0000 2.1000 3.0000
6.0000 2.1000 4.0000
7.0000 2.5000 2.0000
8.0000 2.8000 3.0000
9.0000 2.4000 4.0000
10.0000 2.1000 5.0000
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas
Função Descrição
>> load dados.mat
>> [A B C]
ans =
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Export Wizard
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas
Função Descrição
>> [A B C]
ans =
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas Para Operações
Com Ficheiros
Função Descrição
As funções “fwrite” e “fprintf ” são funções de escrita em ficheiros. Como
tal obrigam à criação do ficheiro antes de se iniciar uma escrita.
3
fopen(…)
fprintf(…) >> fprintf(fid,'%f %f %f\n',[A B C]); Escrita no ficheiro “fid”
fwrite(…) das variáveis A, B e C. São
fclose(…) >> fclose(fid) Fecho do ficheiro; escritas como sendo do tipo
float (%f).
ans =
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas Para Operações
Com Ficheiros
Função Descrição
>> load Teste2.txt
>> Teste2
Teste2 =
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas Para Operações
Com Ficheiros
Função Descrição
As funções “fscanf” e “fread” são funções de leitura de ficheiros. Também
obrigam à abertura do ficheiro antes de se iniciar uma leitura.
>> fid=fopen('Teste2.txt','r');
>> A1=fscanf(fid,'%f‘,[10,3])
A1 =
1.0000 2.1000 3.0000
2.0000 2.1000 2.0000
3.0000 2.3000 2.0000
fopen(…)
4.0000 2.4000 2.0000
fscanf(…)
5.0000 2.1000 3.0000
fread(…)
6.0000 2.1000 4.0000
fclose(…)
7.0000 2.5000 2.0000
8.0000 2.8000 3.0000
9.0000 2.4000 4.0000
10.0000 2.1000 5.0000
>> fclose(fid);
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas Para Operações
Com Ficheiros
Função Descrição
As funções “xlswrite” e “xlsread ” são funções específicas de escrita e
leitura, respectivamente, de ficheiros .xls ou .xlsx.
>> [Dados,Texto]=xlsread(‘Teste.xlsx’)
Dados =
1 3 5
2 4 6
3 5 7
4 6 8
5 7 9
xlsread(…)
6 8 10
xlswrite(…)
7 9 11
8 10 12
9 11 13
10 12 14
>> xlswrite('Teste.xlsx',A,'Folha1','A1:C10‘)
Função Descrição
As funções “csvwrite” e “csvread ” são funções específicas de escrita e
leitura, respectivamente, de ficheiros csv (Comma Separated Value).
>> csvwrite('Teste.csv',A)
>> X=csvread('Teste.csv')
X =
1 3 5
2 4 6
csvread(…) 3 5 7
csvwrite(…) 4 6 8
5 7 9
6 8 10
7 9 11
8 10 12
9 11 13
10 12 14
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas Para Operações
Com Ficheiros
Função Descrição
As funções “dlmwrite” e “dlmread ” são funções específicas de escrita e
leitura, respectivamente, de ficheiros ASCII delimitados por um dado caracter.
>> dlmwrite('File.txt',A,'delimiter',';','precision','%.6f')
7. Com a ajuda do “Import Wizard” importe os dados do ficheiro .xls que criou;
Iniciação ao MATLAB®
MATLAB®
Exercício 3 - Resolução
Pt. Instruções
>> A=(1:10)’;
>> B=(3:12)';
>> C=(5:14)';
>> [A B C]
ans =
1 3 5
1 2 4 6
3 5 7
4 6 8
5 7 9
6 8 10
7 9 11
8 10 12
9 11 13
10 12 14
3 >> clear A B
>> whos
Name Size Bytes Class Attributes
4 >> load Ab.mat A 10x1 80 double
B 10x1 80 double
C 10x1 80 double
Iniciação ao MATLAB®
MATLAB®
Exercício 3 - Resolução
Pt. Instruções
5 Feito em Excel…
1 3 5 >> A.data
2 4 6 ans =
3 5 7
4 6 8 Folha1: [10x3 double]
7 5 7 9
6 8 10 >> A.data.Folha1
7 9 11 ans =
8 10 12 1 3 5
9 11 13 2 4 6
3 5 7
10 12 14 4 6 8
5 7 9
>> colheaders 6 8 10
7 9 11
colheaders = 8 10 12
9 11 13
'A' 'B' 'C' 10 12 14
Iniciação ao MATLAB®
MATLAB®
SCRIPTS & FUNÇÕES
O EDITOR - Avançado
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Scripts
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Scripts
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Scripts
Antes da execução
do script.
Executa
Após a execução do
script.
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Execução Scripts
M-lint
C
e
l Incrementa/decrementa o
l valor próximo do cursor e
executa a célula com o
M novo valor.
o
d
e
Introduzimos todos os comandos que
pretendemos executar.
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
§ Possui sempre um termo reservado que indica que se trata de uma função
(“function”);
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Função Descrição
>> myfun=@(x,y) x.^2+y
myfun =
@(x,y)x.^2+y
>> x=magic(2);
>> y=magic(2);
>> myfun(x,y)
Anonymous
function
ans =
“@”
2 12
20 6
>> myfun(3,5)
ans =
14
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
x=a+b;
y=2*a+c;
Parâmetros
de Saída
Código a Executar
Nome da Função
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Função Descrição
Permite saber o número de argumentos de entrada com que a função foi
chamada ou saber quantos são os argumentos de entrada de uma função;
ans =
nargin(…)
function [x,y]=myfun(a,b,c)
na=nargin();
if na==2
x=a+b;
y=2*a+c;
else x=a-b;
end
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Função Descrição
Permite saber o número de argumentos de saída com que a função foi
chamada ou saber quantos são os argumentos de saída declarados no
protótipo da função;
ans =
nargout(…)
function [x,y]=myfun(a,b,c)
na=nargout();
if na==1
x=a+b;
else x=a-b;
y=2*a+c;
end
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Função Descrição
Permite testar se o número de argumentos de entrada estão de acordo com
a(s) forma(s) como a função pode ser chamada. Devolve uma estrutura
contendo o erro ocorrido. Caso não haja erro a estrutura de saída é vazia;
function [x,y]=myfun(a,b,c)
narg=nargin();
error(nargchk(2,3,narg));
if narg==2
nargchk(…)
x=a+b;
y=2*a+b;
else x=a-b;y=[];
end
>> myfun(2)
??? Error using ==> myfun at 8
Not enough input arguments.
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Função Descrição
Permite testar se o número de argumentos de saída estão de acordo com a(s)
forma(s) como a função pode retornar os seus parâmetros. Devolve uma
estrutura contendo o erro ocorrido. Caso não haja erro a estrutura de saída
é vazia;
function [x,y]=myfun(a,b,c)
narg=nargout();
nargi=nargin();
error(nargoutchk(1,2,narg));
nargoutchk(…)
if nargi==2
x=a+b;
y=2*a+c;
else x=a-b;y=[];
end
>> [x,y,z]=myfun(2,3,4)
??? Error using ==> myfun
Too many output arguments.
Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções
Função Descrição
Permite indicar à função parâmetros adicionais de entrada. Isto significa
que a função pode ser executada com um tamanho variável de argumentos
de entrada. O argumento “varargin” tem que ser sempre o último argumento
declarado no protótipo da função.
varargin
function myplot(x,varargin)
plot(x,varargin{:})
Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
M-lint
Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
M-lint
Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
Profiler
Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
Profiler
Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
Profiler
Iniciação ao MATLAB®
MATLAB®
Exercício 4
Nota: Use o modo de célula (cell mode) para construir cada um dos passos
pedidos.
Iniciação ao MATLAB®
MATLAB®
Exercício 4
2. Construa uma função com o nome “myfun” que para uma matriz de entrada
de dimensão desconhecida devolve:
Iniciação ao MATLAB®
MATLAB®
Exercício 4 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 4 - Resolução
Iniciação ao MATLAB®
MATLAB®
ESTRUTURAS
DE
PROGRAMAÇÃO
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Permite executar código mediante a verificação de uma dada condição de
teste e criar código distinto para o caso em que a condição é verdadeira ou
falsa. O “if” deve ser sempre terminado com “end”.
if x>=2
y=2*x;
else y=4*x;
end
if …
Também podemos criar if’s aninhados:
if x>2
y=2*x;
elseif x==2
y=x;
else y=4*x;
end
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Permite executar código um número de vezes pré-determinado. O ciclo “for”
é sempre terminado com “end”.
for i=1:25
x(i)=4*i;
end
x=zeros(25,25);
for i=1:25
for j=1:25
x(i,j)=4*i;
end
end
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Permite executar código enquanto determinada condição se verificar. O ciclo
“while” é sempre terminado com “end”.
while erro<10e-3
x=2*y;
erro=x-y;
end
while …
Também podemos fazer associação de condições. A associação de condições
(geralmente com o && (e) ou o || (ou) também é válida para o “if”).
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Permite executar código distinto para casos distintos. É sempre terminado
com “end”.
a=input('Introduza um número=');
switch a
case 1
x=2;
switch … case 2
x=4;
otherwise
x=[];
end
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Permite terminar a execução de um ciclo for ou while. El alguns casos é
conveniente terminar a execução do nosso código mesmo que o número de
iterações do ciclo for ou a condição de verificação do while se verifique.
for j=1:25
x=2*j;
if x==10
break
break … end
end
while erro>eps
x=2*y;
if x==10
break
end
end
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Usado nos ciclos for ou while. Permite passar a execução do código para a
iteração seguinte.
x=0;
for j=1:25
if x>10
continue
end
x=2*j;
continue …
end
x=0;
while erro>eps
if x>10
continue
end
x=2*y;
end
Iniciação ao MATLAB®
MATLAB®
Estruturas de Programação
Estrutura Descrição
Usado numa função permite retornar a execução do código à função de
chamada. Imagine uma função myfun() que internamente faz uma chamada a
outra função myfun1(). Se em myfun1() a execução do código passa pela
instrução return, myfun1() é terminada (não é executado mais nenhum
código desta função) e o controlo da execução do código é passado a
myfun(), sendo executadas as instruções que surjam a seguir ao ponto de
chamada de myfun1().
function [x,y]=myfun(a)
return …
x=myfun1(a);
y=3*a;
function [x]=myfun1(c)
if c>=20
return
else x=2*c;
end
Iniciação ao MATLAB®
MATLAB®
Exercício 5
1. Construa uma função com o nome “pesquisa” que para uma matriz de
entrada, com dimensão desconhecida, verifica a repetição dos seus
elementos. Deve devolver o valor e o número de vezes que o elemento é
repetido. Caso não existam elementos repetidos deve devolver vazio.
2. Construa uma função que, para uma determinada matriz de entrada, devolva
uma matriz de dimensão idêntica com o resultado do factorial de cada um
dos seus elementos;
Iniciação ao MATLAB®
MATLAB®
Exercício 5 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 5 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 5 - Resolução
Iniciação ao MATLAB®
MATLAB®
FUNÇÕES
DE
VISUALIZAÇÃO
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Permite visualizar um gráfico 2-D. Pode ser usado de diversas formas,
dependendo daquilo que pretendemos visualizar.
1
0.4
>> plot(t,x) 0.2
>> grid 0
-0.2
-0.4
-0.6
plot… -1
>> plot(t,x,t,y) -4 -3 -2 -1 0 1 2 3 4
0.8
0.2
>> plot(t,y,’g’) 0
-0.2
-0.4
-0.6
-1
-4 -3 -2 -1 0 1 2 3 4
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Para colocar texto referente ao eixo das abcissas:
>> xlabel(‘Tempo’)
>> ylabel(‘sin(t)’)
text… 0.6
0.2
sin(t)
0 sin(π/2)
>> text(pi/2,sin(pi/2),‘sin(\pi/2)’) Colocada com o rato
-0.2
-0.4
Texto com o rato: -0.6
-0.8
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Para obter coordenadas do gráfico. O argumento de entrada corresponde ao
número de coordenadas que pretendemos obter do gráfico.
>> [x,y]=ginput(1)
x =
0.7650
y =
0.6930
0.9
0.8
0.6
0.4
>> plot(x,y) 0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Permite obter e alterar as propriedades de um objecto gráfico.
>> h=plot(t,x)
1
0.8
h =
0.6
0.4
171.0087
0.2
0
>> set(h)
-0.2
ans =
-0.4
DisplayName: {}
-0.6
set… Color: {}
-0.8
LineStyle: {5x1 cell}
-1
LineWidth: {} -4 -3 -2 -1 0 1 2 3 4
Função Descrição
1
>> set(h,’LineWidth’,5)
0.8
0.4
0.2
>> get(h,'LineWidth')
0
-0.2
ans =
-0.4
-0.6
5 -0.8
set… -1
get… Para obter o handle da figura activa: -4 -3 -2 -1 0 1 2 3 4
gcf…
gca… >> f=gcf();
>> set(f)
Alphamap
CloseRequestFcn: string -or- function handle -or-
cell array
Color
Colormap
CurrentAxes
CurrentCharacter
CurrentObject …
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Para obter o handle dos eixos coordenados:
>> g=gca()
ans =
>> set(g)
set… ActivePositionProperty:[ position | {outerposition} ]
get… ALim
gcf… ALimMode: [ {auto} | manual1 ]
gca… AmbientLightColor 0.8
Box: [ on | {off} ] 0.6
CameraPosition … 0.4
0.2
>> set(gca,’LineWidth’,2)
0
-0.2
>> get(gca,’LineWidth’)
-0.4
ans = -0.6
-0.8
2 -1
-4 -3 -2 -1 0 1 2 3 4
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Permite visualizar vários gráficos 2-D na mesma figura segundo uma
organização por nós definida.
>> t=(-pi:0.01:pi); 1 1
cos(t)
sin(t)
0 0
>> z=x+y;
>> subplot(2,2,1) -0.5 -0.5
>> plot(t,x) -1 -1
>> grid -4 -2 0
Tempo
2 4 -4 -2 0
Tempo
2 4
>> subplot(2,2,2)
subplot… 2
>> plot(t,y)
>> grid 1
sin(t)+cos(t)
>> subplot(2,2,[3 4]) 0
>> plot(t,z)
-1
>> grid
>> xlabel(‘Tempo’) -2
-4 -3 -2 -1 0 1 2 3 4
>> ylabel(‘sin(t)+cos(t)’) Tempo
>> subplot(2,2,1)
>> xlabel(‘Tempo’),ylabel(‘sin(t)’);
>> subplot(2,2,2)
>> xlabel(‘Tempo’),ylabel(‘sin(t)’);
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Permite visualizar gráficos 3-D (linha). Utiliza uma notação idêntica à
função plot().
>> t = 0:pi/50:10*pi;
40
>> plot3(sin(t),cos(t),t)
30
>> grid on
20
t
>> axis square
10
plot3…
>> xlabel('sin(t)')
0
>> ylabel('cos(t)') 1
0.5 1
0.5
>> zlabel('t') 0
0
-0.5
-0.5
-1 -1
cos(t) sin(t)
Tal como nos exemplos anteriores podemos usar a função set() e get() para
alterar e obter os valores das propriedades do objecto. O gráfico também
pode ser editado a partir do “plot tools”.
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Permite visualizar gráficos de barras vistos horizontal ou verticalmente.
>> x = -2.9:0.2:2.9; 1 3
>> bar(x,exp(-x.*x),'b')
1
0.6
0
0.2
-2
>> subplot(2,2,2) 0
-3 -2 -1 0 1 2 3
-3
0 0.2 0.4 0.6 0.8 1
2
bar3… 0.5
0
>> bar3(x,exp(-x.*x),'r') -4
-2 -4
>> grid 0 0
2 0.5
4 1
>> subplot(2,2,4)
>> bar3h(x,exp(-x.*x),'g')
>> grid
Função Descrição
Permite colocar dois eixos de ordenadas distintos no mesmo gráfico.
Retorna os handles de
>> x = 0:0.01:20; cada eixo (AX) e cada
>> y1 = 200*exp(-0.05*x).*sin(x); plot (H1 e H2)
>> y2 = 0.8*exp(-0.5*x).*sin(10*x);
>> [AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
>> grid
>> set(get(AX(1),'Ylabel'),'String','Lento')
>> set(get(AX(2),'Ylabel'),'String','Rápido')
>> xlabel(‘x’) 200 0.8
plotyy…
150 0.6
100 0.4
50 0.2
Rápido
Lento
0 0
-50 -0.2
-100 -0.4
-150 -0.6
-200 -0.8
0 2 4 6 8 10 12 14 16 18 20
x
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de gráficos 2-D com área preenchida.
>> x = 0:0.01:
>> Y = [1, 5, 3;3, 2, 7;1, 5, 3;2, 6, 1];
>> h=area(Y) Handles para cada
h = área.
171.0333 173.0314 175.0304
Stacked Area Plot
12
>> grid on
area…
>> colormap(summer) 10
>> set(gca,'Layer','top')
8
>> title('Stacked Area Plot‘)
6
área.
2
0
1 1.5 2 2.5 3 3.5 4
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de gráficos em coordenadas polares.
>> t = 0:.01:2*pi;
>> polar(t,sin(2*t).*cos(2*t),'--r')
90
0.5
120 60
0.4
0.3
150 30
0.2
polar… 0.1
180 0
210 330
240 300
270
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de setas a partir da origem.
>> Z = eig(randn(20,20));
>> compass(Z)
90
5
120 60
4
3
150 30
2
compass… 1
180 0
210 330
240 300
270
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção do histograma.
>> x = -4:0.1:4;
>> y = randn(10000,1);
>> hist(y,x)
>> grid 450
400
350
hist… 300
250
200
150
100
50
0
-5 -4 -3 -2 -1 0 1 2 3 4 5
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de superfícies.
0
surf…
-5
-10
2
3
2
0 1
0
-2 -1
-2
-3
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de superfícies com contorno.
surfc… 0
-5
-10
2
3
2
0 1
0
-2 -1
-2
-3
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de superfícies em estrutura.
meshgrid…
mesh… 0
meshc…
-5
-10
2
3
2
0 1
0
-2 -1
-2
-3
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização
Função Descrição
Construção de animações. A função “getframe” guarda um snapshot do
conteúdo dos eixos coordenados. A função “movie” permite animar um
conjunto de frames durante um determinado número de vezes.
Z = peaks; surf(Z);
axis tight
set(gca,'nextplot','replacechildren');
getframe…
% Regista as frames do filme
movie…
for j = 1:20
movie2avi…
surf(sin(2*pi*j/20)*Z,Z)
F(j) = getframe;
end
% Reproduz a compilação de frames
movie(F,10)
% Número de repetições pretendida
F=[F F F];
% Converte para ficheiro .avi
movie2avi(F,’Filme.avi’);
Iniciação ao MATLAB®
MATLAB®
Exercício 6
Iniciação ao MATLAB®
MATLAB®
Exercício 6
Nota: Deve garantir que nas abcissas apareçam os tipos de árvores e não valores
numéricos;
Iniciação ao MATLAB®
MATLAB®
Exercício 6 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 6 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 6 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 6 - Resolução
Resultado final:
4 8
x 10 x 10
15 6
2
10 4
1
5 2
0 0 0
A B C D E F G H I J A B C D E F G H I J
Êrvore Êrvore
20
15
10
0
A B C D E F G H I J
Êrvore
Iniciação ao MATLAB®
MATLAB®
TOOLBOX
SIMBÓLICA
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
§ Cálculo de limites;
§ Operações matriciais;
§ Séries;
§ Transformadas;
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Para definir um objecto simbólico podemos usar ou o comando “syms” ou a
função “sym()”.
>> syms x y z
>> a=sym(2);
>> 5/3
ans =
syms … 1.6667
sym(…)
>> sym(5/3)
ans =
5/3
>> f=2*x^2+3*y+5*z
f =
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
>> sym(2/5) + sym(1/3)
ans =
11/15
>> syms x;
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Para criar matrizes de variáveis simbólicas:
>> syms a b c;
>> A = [a b c; c a b; b c a]
A =
[ a, b, c]
[ c, a, b]
[ b, c, a]
syms …
>> sum(A(1,:))
sym(…)
ans =
a + b + c
>> f=2*A(1)^2+3*A(2)
f =
2*a^2 + 3*c
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Para criar matrizes de números simbólicos:
A =
ans =
[ 1, 1/2, 3/10]
[ 33/100, 1/4, 1/2]
[ 33/100, 1/4, 1/2]
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Permite saber as variáveis simbólicas que estão a ser usadas numa
expressão:
>> syms a b n t x z;
>> f = x^n;
>> g = sin(a*t + b);
>> symvar(f)
ans =
symvar()
[ n, x]
>> symvar(g)
ans =
[ a, b, t]
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Simplificação de expressões simbólicas:
>> syms x
>> f = x^3 - 6*x^2 + 11*x – 6;
>> pretty(f)
3 2
x - 6 x + 11 x - 6
simple(…)
simplify(…)
>> f = (x-1)*(x-2)*(x-3);
collect(…)
>> collect(f)
expand(…)
factor(…)
ans =
horner(…)
pretty(…)
x^3 - 6*x^2 + 11*x - 6
ans =
2*x + 2*y
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Simplificação de expressões simbólicas:
>> factor(f)
simple(…)
ans =
simplify(…)
collect(…)
(x - 3)*(x - 1)*(x - 2)
expand(…)
factor(…)
>> f = x^3 - 6*x^2 + 11*x - 6;
horner(…)
pretty(…)
>> horner(f)
ans =
x*(x*(x - 6) + 11) – 6
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Simplificação de expressões simbólicas:
>> syms x;
>> n = (1:9)';
>> p = x.^n + 1;
>> f = factor(p);
simple(…) >> [p, f]
simplify(…)
collect(…) ans =
expand(…)
factor(…) [ x + 1, x + 1]
horner(…) [ x^2 + 1, x^2 + 1]
pretty(…) [ x^3 + 1, (x + 1)*(x^2 - x + 1)]
[ x^4 + 1, x^4 + 1]
[ x^5 + 1, (x + 1)*(x^4 - x^3 + x^2 - x + 1)]
[ x^6 + 1, (x^2 + 1)*(x^4 - x^2 + 1)]
[ x^7 + 1, (x + 1)*(x^6 - x^5 + x^4 - x^3 + x^2 - x + 1)]
[ x^8 + 1, x^8 + 1]
[ x^9 + 1, (x + 1)*(x^2 - x + 1)*(x^6 - x^3 + 1)]
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Substituição de variáveis ou valores simbólicos numa matriz ou expressão:
y =
C4/exp(a*t)
>> a=3;C4=10;
>> subs(y)
ans =
subs(…)
10/exp(3*t)
>> f
f =
cos(x) + i*sin(x)
>> subs(f,x,z)
ans =
cos(z) + i*sin(z)
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Gráficos de expressões simbólicas:
-(t2 - 1)/cosh(t)
>> syms t 1
0.4
>> ezplot(M); 0.2
>> hold on; 0
-0.6
-0.8
ezplot(…) -6 -4 -2 0
t
2 4 6
0.6
-1
-6 -4 -2 0 2 4 6
t
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Gráficos de expressões simbólicas: z = x2 + y2
>> syms x y; 80
z
>> title('z = x^2 + y^2'); 20
z
2
0
40
20 40
0 20
0
-20 -20
y -40 -40
x
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Diferenciação simbólica de expressões:
>> syms t
>> f = sin(t)^2;
>> diff(f)
ans =
2*cos(t)*sin(t)
>> syms x y
>> f=2*x^2+3*y^2
diff(…) f =
2*x^2 + 3*y^2
>> diff(f)
ans =
4*x
>> diff(f,y)
ans =
6*y
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Diferenciação simbólica de expressões:
>> syms x y;
>> f = sin(x)^2 + cos(y)^2;
>> diff(f, y, 2)
ans =
2*sin(y)^2 - 2*cos(y)^2
>> syms x y;
diff(…) >> f = sin(x)^2 + cos(y)^2;
>> diff(diff(f, y), y)
ans =
2*sin(y)^2 - 2*cos(y)^2
>> diff(diff(f,y),x)
ans =
0
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Integração simbólica de expressões:
>> syms x;
>> f=2*cos(x)
f =
2*cos(x)
>> int(f)
int(…)
ans =
2*sin(x)
>> syms x y n;
>> f = x^n + y^n;
>> int(f) -> A integração é feita em relação a x ou à letra + prox.
ans =
x*y^n + (x*x^n)/(n + 1)
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Integração simbólica de expressões:
>> syms x y n;
>> f = x^n + y^n;
>> int(f, y) -> Especifica a variável de integração.
ans =
x^n*y + (y*y^n)/(n + 1)
Integração Definida:
int(…)
>> syms x;
>> f=2*sin(x)
f =
2*sin(x)
>> int(f,-pi,pi)
ans =
0
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Cálculo do limite:
>> syms x;
>> f=2*exp(-x)
f =
2/exp(x)
>> limit(f,x,inf)
limit(…)
ans =
>> syms x;
limit(x/abs(x), x, 0, 'left') -> zero -
ans =
-1
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Resolução de equações ou sistemas de equações:
>> syms x;
>> solve(x^3 - 6*x^2 + 11*x - 6)
ans =
1
2
3
solve(…)
>> syms x;
>> solve('x^3 - 6*x^2 + 11*x - 5 = 1')
ans =
1
2
3
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Resolução de equações ou sistemas de equações:
>> f=2*x+4*y
f =
2*x + 4*y
>> solve(f)
solve(…)
ans =
(-2)*y
>> solve(f,y)
ans =
-x/2
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Resolução de equações ou sistemas de equações:
>> syms x y z;
>> [x, y, z] = solve('4*x-z=0', 'x+1-y = 2', 'z = x^2 + y^2')
x =
7^(1/2)/2 + 3/2
3/2 - 7^(1/2)/2
y =
z =
2*7^(1/2) + 6
6 - 2*7^(1/2)
>> double(x)
ans =
2.8229
0.1771
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Resolução de equações diferenciais:
ans =
C6/exp(a*t)
ans =
b*exp(a*t)
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Resolução de equações diferenciais com condição inicial e condições
fronteira:
exp(a*i*t)/2 + 1/(2*exp(a*i*t))
>> z.x
ans =
C16*cos(t) + C15*sin(t)
>> z.y
ans =
C15*cos(t) - C16*sin(t)
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Transformada de Fourier e Laplace:
>> syms x;
>> f = exp(-x^2);
>> fourier(f)
ans =
pi^(1/2)/exp(w^2/4)
fourier(…)
laplace(…) >> syms x u;
>> f = x*exp(-abs(x));
>> fourier(f,u) -> Usa u em vez do tradicinal w
ans =
-(4*i*u)/(u^2 + 1)^2
Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica
Função Descrição
Transformada de inversa de Fourier e Laplace:
>> syms w t;
>> f = 2*exp(-abs(w)) – 1;
>> simplify(ifourier(f,t))
ans =
>> f = 1/s^2;
>> ilaplace(f)
ans =
Iniciação ao MATLAB®
MATLAB®
Exercício 7
f=2x2+a
Iniciação ao MATLAB®
MATLAB®
Exercício 7 - Resolução
2 x 2 + 10
80
70
60
50
40
30
20
10
-6 -4 -2 0 2 4 6
x
Iniciação ao MATLAB®
MATLAB®
GUIDE
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
§As propriedades dos objectos podem ser obtidas e alteradas também através
de código. Para tal devemos usar as funções get() e set();
Iniciação ao MATLAB®
MATLAB®
Guide
§ Quando guardar ou correr a figura são criados, por defeito, dois ficheiros, .m
e .fig. O primeiro contém o código do interface desenvolvido. O segundo pode
ser usado para alterar o aspecto visual da aplicação através do GUIDE.
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
Quando o pushbutton1 for
pressionado irá desenhar um sin
no objecto axis definido e de
seguida coloca a grelha, quando
pressionado o pushbutton2
desenha o cos.
Iniciação ao MATLAB®
MATLAB®
Guide
§ Vamos adicionar uma caixa de texto ao nosso GUI. Agora pretendemos que
quando desenhado o sin na caixa surja o texto “Função sin(x)” e caso seja o cos
o texto seja “Função cos(x)”;
Iniciação ao MATLAB®
MATLAB®
Guide
handles.edit1 representa o
identificador da caixa de texto
que pretendemos alterar. Para
alterar o seu conteúdo
modificamos o campo String.
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
Iniciação ao MATLAB®
MATLAB®
Guide
§ Também podemos desenvolver um GUI sem recorrer ao GUIDE. Para tal basta
usar a função uicontrol(). Esta função permite criar os objectos pretendidos
numa figura. O processo é simplificado se se usar o GUIDE.
Iniciação ao MATLAB®
MATLAB®
Exercício 8
Iniciação ao MATLAB®
MATLAB®
Exercício 8 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 8 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 8 - Resolução
Iniciação ao MATLAB®
MATLAB®
Exercício 8 - Resolução
Iniciação ao MATLAB®
MATLAB®
Sugestões
5. Um tutorial de iniciação:
w w w. m a t h w o r k s . c o m / a c a d e m i a / s t u d e n t _ c e n t e r / t u t o r i a l s /
mltutorial_launchpad.html#
Iniciação ao MATLAB®
MATLAB®
Espero que tenham gostado
FIM
Iniciação ao MATLAB®
MATLAB®