Acetatos Matlab

Você também pode gostar

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 204

INICIAÇÃO AO MATLAB®

Informática II

Engenharia Biomédica
MATLAB®
Como Surgiu?

§ Desenvolvido por Cleve Moler em finais dos anos 70 (Professor da


Universidade do Novo México);

§ Desenhado para utilização académica, permitia aos alunos utilizarem


bibliotecas de cálculo numérico e de álgebra linear sem necessidade de
utilizarem FORTRAN;

§ 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;

§ Reescrevem a aplicação e criam uma empresa denominada The MathWorks;

§ A partir daí a aplicação sofreu diversas alterações e melhoramentos e tornou-


se popular entre cientistas e engenheiros;

Iniciação ao MATLAB®
MATLAB®
O que é?

§ Ferramenta interactiva para manipulação de matrizes;

§ Ferramenta de tratamento e visualização de dados;

§ Ferramenta/linguagem de programação;

§ Interacção com outras linguagens de programação (ex. C);

§ Permite o desenvolvimento de interfaces gráficos (GUIDE);


z (1/3)
Horizontal Slices

Mutual Fund Portfolio


17
1
16

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

§ Tratamento estatístico de dados;

§ Visualização de dados;

§ Processamento de sinal (de diversa natureza);

§ Modelação e controlo de sistemas;

§ Cálculo numérico;

§ Cálculo simbólico;

§ Aquisição de dados (operação com hardware específico);

§ 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;

>> clc Comando para limpar a janela de comandos;

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

ans = ans = ans =

2.2204e-016 3.1416 2.2251e-308

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

./ Divisão elemento a elemento; ans =


.^ Potenciação elemento a elemento;
13 9
\ Divisão à esquerda; 12 16

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

%{ %} Introduzir um bloco de comentários;

! Endereçar o comando ao sistema operativo;

‘’ Introduzir array de caracteres;


@ Construir um handle de uma função;
Iniciação ao MATLAB®
MATLAB®
Operadores Relacionais

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

ans = Ver também as funções implementadas ‘and()’,


‘or()’, ‘not()’, etc…
1 1 1 1 0 1

Iniciação ao MATLAB®
MATLAB®
Criação de Variáveis

§ Podem ser do tipo numérico, texto ou associação de tipos. Podem ser


escalares, vectores, matrizes, texto, etc…;

§ Não existe necessidade de pré-definir o tipo de variável;

§ É, no entanto, conveniente definir o tamanho da variável (por questões de


performance), quando possível;

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

Descrição Comando Descrição Comando


>> x=[1 2 3] >> x=ones(2,3)
x =
Inicialização
Vector linha x =
(1’s) 1 1 1
1 2 3 1 1 1
>> x=[1;2;3] >> x=zeros(2,3)
Inicialização x =
Vector x = (0’s)
coluna 0 0 0
1 0 0 0
2
>> x=[]
3
Inicialização x =
>> x=[1 2 3;4 5 6] (vazio)
[]
x =
>> x=zeros(2,2,2)
x(:,:,1) =
1 2 3
4 5 6
Matriz 0 0
>> x=[1,2,3;4,5,6] Dimensão 0 0
superior
x = x(:,:,2) =

1 2 3 0 0
4 5 6 0 0

Iniciação ao MATLAB®
MATLAB®
Indexação de Matrizes

§ Indexação dos elementos pode ser feita de 3 formas:

§ Indicação da(s) linha(s) e coluna(s);


§ Indexação linear;
§ Indexação lógica;

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

§ Passagem de indexação linear para linha-coluna e vice-versa

Operação Exemplo Operação Exemplo


>> x=magic(5) >> x=magic(5)

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

§ Ter em atenção que as operações com matrizes obedecem a regras


específicas;

Operação Exemplo Operação Exemplo


>> x=[2 3] >> x+y’
x = ans =
Soma
2 3 6 9
>> x-y’
>> y=[4;6]
ans =
y = Subtracção
Multiplicação 4
-2 -3
6 >> x=magic(2);
>> x^2
>> x*y ans =

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

Operação Exemplo Operação Exemplo


>> x >> x=[2 3]
x =
x =
2 3
1 3
4 2 >> y=[4;6]
y =
>> x+2
4
ans = 6

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

Função Exemplo Função Exemplo


x = Para a mesma matriz x do
exemplo da função max
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3 >> min(x)
11 18 25 2 9
ans =
>> max(x)
ans = 4 5 1 2 3

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

Função Exemplo Função Exemplo


>> sort(x) >> find(x>5)

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

Função Exemplo Função Exemplo


>> [l,c]=find(x>5) >> x=[1 2],y=[4 5]

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

Função Exemplo Função Exemplo


>> x=magic(5) >> x=magic(5)
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(:,2)=[] –>Elimina 2ª coluna Eliminação >> x(2,3)=[]


Eliminação x = de ??? Subscripted assignment
de Elementos dimension mismatch.
Elementos 17 1 8 15 de uma
de uma 23 7 14 16 Matriz >> x(1:5,2)=[]
4 13 20 22 ??? Subscripted assignment
Matriz (Operações
10 19 21 3 dimension mismatch.
11 25 2 9
Inválidas)
>> x(1:end,4)=[]
>> x(3,:)=[] ->Elimina 3ª linha ??? Subscripted assignment
x = dimension mismatch.

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(2)=[] -> Elimina o 2º elemento da matriz

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

>> reshape(x,3,4) -> Organiza o vector ‘x’ numa matriz 3x4

ans =

17 10 2 22
23 11 15 3
4 21 16 9

Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes

Função Exemplo Função Exemplo


>> x=magic(5) >> length(x)
ans =
x =
5
17 24 1 8 15
Dimensão
23 5 7 14 16 >> x=(1:6)
4 6 13 20 22 de uma x =
10 12 19 21 3 Matriz 1 2 3 4 5 6
11 18 25 2 9  
  >> length(x)
>> [l,c]=size(x)   ans =
Dimensão
 
de uma l = 6
 
Matriz
5   >> x=magic(5)
c =   x =
  17 24 1 8 15
5   23 5 7 14 16
4 6 13 20 22
Nº de
10 12 19 21 3
>> size(x) Elementos 11 18 25 2 9

ans = >> numel(x)


ans =
5 5 25

Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes

Função Exemplo Função Exemplo


>> x=magic(5) >> x=magic(5)

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

>> mean(x) >> median(x)

ans = ans =
Média Mediana
13 13 13 13 13 11 12 13 14 15

>> mean(x,2) >> median(x,2)

ans = ans =

13 15
13 14
13 13
13 12
13 11

Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes

Função Exemplo Função Exemplo


>> x=magic(5) >> x=magic(5)

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

>> mode(x) >> std(x)

ans = Desvio ans =


Moda
Padrão
4 5 1 2 3 7.2457 8.0623 9.4868…
…8.0623 7.2457
>> mode(x,2)
>> std(x,0,2)
ans =
ans =
1
5 8.8034
4 7.2457
3 8.0623
2 7.2457
8.8034
Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes

Função Exemplo Função Exemplo


>> x=magic(5) >> x=magic(5)

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

>> sum(x) >> diff(x)

Soma ans = Diferença ans =

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

§ Vejamos a manipulação de variáveis através do workspace:

§ A partir da matriz ‘x’ construir uma matriz ‘y’ com as duas primeiras colunas;

§ Verificar alguns dos comandos referidos através do editor de variáveis;

Iniciação ao MATLAB®
MATLAB®
Operações com Matrizes

§ Outras funções de manipulação de matrizes mais comuns:

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;

fliplr(…) Troca os elementos do array da esquerda para a direita;

flipud(…) Troca os elementos do array de cima para baixo;

repmat(…) Replica os elementos de uma matriz;

sortrows(…) Ordena as linhas por ordem ascendente;

cat(…) Concatenação de matrizes;

tril(…) Triangular inferior de uma matriz;

triu(…) Triangular superior de uma matriz;

linspace(…) Permite criar uma matriz com os seus elementos linearmente separados;

eye(…) Permite inicializar uma matriz como matriz identidade;

Iniciação ao MATLAB®
MATLAB®
Exercício 1

1. Construir uma matriz ‘x’, 5x5, com os números de 1 a 25;

2. A partir de ‘x’ obter uma matriz ‘y’ com os elementos das colunas 2 a 5;

3. Construir uma matriz ‘z’, a partir de ‘x’ por eliminação da 3ª coluna;

4. Construir uma matriz ‘A’ resultado do quadrado de cada elemento de ‘x’;

5. Obter o maior e o menor elemento de ‘x’, assim como os respectivos índices


na matriz;

6. Calcular o resultado da soma de todos os elementos de ‘A’;

7. Calcular a soma dos elementos de cada coluna e dos elementos de cada


linha da matriz ‘x’.

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

>> z=x >> z=[x(:,1:2) x(:,4:5)]


z =
z =
1 6 11 16 21
2 7 12 17 22 1 6 16 21
3 8 13 18 23 2 7 17 22
4 9 14 19 24 3 8 18 23
5 10 15 20 25 4 9 19 24
3 5 10 20 25
>> z(:,3)=[]
z =

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 =

4 1 36 121 256 441


4
9
49
64
144
169
289
324
484
529
?
16 81 196 361 576
25 100 225 400 625
>> maior=max(max(x)) >> ind_maior=find(x==25)

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'

pessoa = Estrutura Campo da estrutura

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 =

1x2 struct array with fields:


nome
idade
ano

>> pessoa(2).idade=12
pessoa =

Estruturas 1x2 struct array with fields:


nome
idade
ano

>> pessoa(2).ano=1997
pessoa =

1x2 struct array with fields:


nome
idade
ano
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas

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 =

Estruturas 1x2 struct array with fields:


nome
idade
ano

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

[1x2 double] [2x1 double] 'teste'

>> x{1}

ans =

1 2
Cell array
>> x(2,:)={[3 4] [6;7] 'asdwr'}
x =

[1x2 double] [2x1 double] 'teste'


[1x2 double] [2x1 double] 'asdwr‘

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

{1x1 cell} {1x1 cell}

>> c(2,:)={{100} {200}}


c =

{1x1 cell} {1x1 cell}


{1x1 cell} {1x1 cell}
cell2struct(…)
>> header={'Arvore' 'Quantidade'}
header =

'Arvore' 'Quantidade'

>> f=cell2struct(c,header,1)
f =

2x1 struct array with fields:


Arvore
Quantidade
Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas

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 =

1x2 struct array with fields:


nome
idade
ano

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

nome numero idade


_______ ______ _____

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

Nome 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=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');

A função aceita ficheiros do tipo .txt, .dat, .csv, .xls e


xlsx.

>> writetable(T,’Tabela.txt’) -> Outras formas possíveis

>> size(T)

readtable(.) ans =
writetable(.)
100 10

>> T(1:3,1:5)

ans =

LastName Gender Age Location Height


__________ ________ ___ ___________________________ ______

'Smith' 'Male' 38 'County General Hospital' 71


'Johnson' 'Male' 43 'VA Hospital' 69

Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas

Função Descrição
>> T.Properties.VariableNames

ans =

Columns 1 through 9

'LastName' 'Gender' 'Age' 'Location' 'Height' 'Weight'


'Smoker' 'Systolic' 'Diastolic'

Column 10

'SelfAssessedHeal...’

Tabelas >> T.Properties

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 =

Tabelas LastName Gender Age Location Height Weight Smoker


____________ ________ ___ ___________________________ ______ ______ ______

Smith 'Smith' 'Male' 38 'County General Hospital' 71 176 1


Johnson 'Johnson' 'Male' 43 'VA Hospital' 69 163 0
Williams 'Williams' 'Female' 38 'St. Mary's Medical Center' 64 131 0

>> T.LasName=[];
T =

Gender Age Location Height Weight Smoker Systolic Diastolic


________ ___ ___________________________ ______ ______ ______ ________ _________

Smith 'Male' 38 'County General Hospital' 71 176 1 124 93


Johnson 'Male' 43 'VA Hospital' 69 163 0 109 77
Williams 'Female' 38 'St. Mary's Medical Center' 64 131 0 125 83

Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas

Função Descrição

T =

Gender Age Location Height Weight Smoker Systolic Diastolic


________ ___ ___________________________ ______ ______ ______ ________ _________

Smith 'Male' 38 'County General Hospital' 71 176 1 124 93


Johnson 'Male' 43 'VA Hospital' 69 163 0 109 77
Williams 'Female' 38 'St. Mary's Medical Center' 64 131 0 125 83

>> T.Pressao=[T.Systolic T.Diastolic];

Tabelas >> T.Pressao

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

Categorias >> A = addcats(A,'xlarge','After','large');

>> A(2) = 'xlarge'

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;

getfield(…) Obter um campo específico de uma estrutura;

setfield(…) Permite especificar o valor de um campo de uma estrutura;

orderfields(…) Ordena a estrutura pelos campos ou valores;

fieldnames(…) Permite obter os campos de uma estrutura;

num2cell(…) Conversão de array numérico para célula;


cell2mat(…)
Converte um array de células para uma matriz e vice-versa;
mat2cell(…)
cellplot(…) Apresenta graficamente um cell array;

cellstr(…) Cria um cell array de strings a partir de arrays de caracteres;

array2table(…) Converte um array homogeneo numa tabela;

table2array(…) Converte uma tabela para um array;

cell2table(…) Converte um cell array numa tabela;

Iniciação ao MATLAB®
MATLAB®
Estruturas, “Cell Arrays” & Tabelas

Função Descrição
table2cell(…) Converte uma tabela para um cell array;

struct2table(…) Converte uma estrutura numa tabela;

table2struct(…) Converte uma tabela numa estrutura;

istable(…) Permite saber se a entrada é uma tabela;

height(…) Permite obter o número de linhas da tabela;

width(…) Permite obter o número de variáveis da tabela;

Outras Consultar a documentação relativa a cada tipo;

Iniciação ao MATLAB®
MATLAB®
Exercício 2

1. Construa uma estrutura de dados “cao” com os campos:

1. “raca”;
2. “cor”;
3. “peso”;
4. “idade”;

2. Coloque os seguintes valores nos respectivos campos:

1. “Pastor alemão”;
2. “Preto”;
3. “25”
4. “5”

3. Adicione um novo registo com os valores em cada campo que entender;

Iniciação ao MATLAB®
MATLAB®
Exercício 2

4. Altere o campo “raca” do primeiro registo para “Boxer”;

5. Obtenha o peso do cão do segundo registo;

6. Obtenha o resultado da soma dos pesos de todos os animais;

7. Construa um cell array 2x3 com os seguintes elementos:

1. Posição 1 – Matriz 3x3 com os números de 1 a 9;


2. Posição 2 – String ‘Teste’;
3. Posição 3 – Valor 25;
4. Posição 4 – Matriz 2x2 com os valores que entender;
5. Posição 5 – Repetir o elemento anterior;
6. Posição 6 – String ‘Cão’.

Iniciação ao MATLAB®
MATLAB®
Exercício 2

8. Importe os dados do ficheiro “patients.dat” usando a função de leitura de


tabelas;

9. Transforme a variável Location para uma categoria;

10. Obtenha o número de elementos de cada categoria da variável Location;

11. Agrupe numa variável simples os elementos da tabela Height e Weight;

12. Elimine da Tabela as variáveis Height e Weight;

13. Contabilize o número de pacientes com menos de 40 anos;

14. Desses quantos são do sexo feminino.

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

>> cao(1).raca='Boxer‘ >> cao=setfield(cao,{1,1},'raca','Boxer')


cao = cao =
1x2 struct array with fields: 1x2 struct array with fields:
raca raca
cor cor
peso peso
idade idade
4
>> cao(1) >> cao(1)
ans = ans =
raca: 'Boxer' raca: 'Boxer'
cor: 'Preto' cor: 'Preto'
peso: 25 peso: 25
idade: 5 idade: 5

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

Note-se que ao referenciar-se o campo “peso” da


ans = estrutura “cao” são retornados todos os valores do
6 array em variáveis separadas. Daí a necessidade de
20 se criar um array com todos os elementos por forma a
poder aplicar a função soma.
>> sum([cao.peso])

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 = >> celula{1,2}=25


celula =
[3x3 double] [] [] [3x3 double] [25] []
[] [] [] 'Teste' [] []
7
>> celula{2}='Teste' >> celula{2,2}=[1 2;3 4]
celula =
celula = [3x3 double] [ 25] []
'Teste' [2x2 double] []
[3x3 double] [] [] >> celula{1,3}=celula{2,2}
'Teste' [] [] celula =
[3x3 double] [ 25] [2x2 double]
… 'Teste' [2x2 double] []

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

11 >> T.HW=[T.Height T.Weight];

>> T.Height=[];
12
>> T.Weight=[];
>> sum(T.Age<40) >> T1=T(T.Age<40,:)

ans = >> size(T1)


13
56 ans =

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

>> summary(G) >> sum(G=='Female')


Female 31
Male 25 ans =

31

Iniciação ao MATLAB®
MATLAB®
IMPORTAÇÃO
&
EXPORTAÇÃO DE
DADOS
Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados

§ A importação de dados pode ser feita de duas formas:

§ Recorrendo ao Import Wizard;

§ Recorrendo a funções específicas;

§ Para testar vamos criar um ficheiro em “excel” com alguns dados (podem
incluir cabeçalhos);

§ Agora vamos testar o Import Wizard:

§ Menu File -> Import Data;

§ Workspace – opção Import Data;

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

Tipos de ficheiros possíveis de


serem importados

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 =

Folha1: [10x3 double]


importdata(‘…’) >> x.data.Folha1
ans =

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
>> x=importdata('Teste.txt')

x =

data: [10x3 double]


textdata: {'A' 'B' 'C'}
colheaders: {'A' 'B' 'C'}

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

1.0000 2.1000 3.0000


2.0000 2.1000 2.0000
3.0000 2.3000 2.0000
load file 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

Dados.mat foi construído com a função save …

Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Export Wizard

As variáveis existentes no workspace podem


ser guardadas num ficheiro quer a partir do
próprio workspace quer a partir da opção
“Save Workspace As…” do menu “File”.
Por defeito as variáveis são guardadas num
ficheiro .mat (um dos formatos nativos
MATLAB®).

Iniciação ao MATLAB®
MATLAB®
Importação & Exportação de Dados
Funções Específicas

Função Descrição
>> [A B C]

ans =

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
save file 7.0000 2.5000 2.0000
8.0000 2.8000 3.0000
9.0000 2.4000 4.0000
10.0000 2.1000 5.0000

>> save dados.mat -> Guarda todas as variaveis do worspace no


ficheiro dados.mat;

Quando não indicada a extensão, por defeito é sempre usada a .mat.


Quando pretendemos outro formato devemos especificá-lo usando as opções
do comando “save”.

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.

>> fid=fopen('Teste2.txt','w') Abertura do ficheiro para


escrita. Podem ser usadas
fid = diversas opções.

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 =

No final de uma operação de escrita, não querendo realizar mais escritas


deve-se proceder sempre ao fecho do respectivo ficheiro utilizando a função
fclose.

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 =

1.0000 2.0000 3.0000


4.0000 5.0000 6.0000 Consegue organizar esta matriz
Leitura do ficheiro
7.0000 8.0000 9.0000 segundo o formato apresentado
criado
10.0000 2.1000 2.1000 atrás (diapositivo referente ao
2.3000 2.4000 2.1000 comando “save”)?
2.1000 2.5000 2.8000
2.4000 2.1000 3.0000
2.0000 2.0000 2.0000
3.0000 4.0000 2.0000
3.0000 4.0000 5.0000

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

No final de uma operação de escrita, não querendo realizar mais escritas


deve-se proceder sempre ao fecho do respectivo ficheiro utilizando a função
“fclose”.

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

Esta última função permite escrever o conteúdo da variável A, no ficheiro


Teste.xlsx, na Folha1 (Sheet1) nas células de A1 a C10 (organiza de imediato
os dados por células).
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 “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

Esta última função permite escrever o conteúdo da variável A, no ficheiro


Teste.csv. Também pode ser usada com argumentos adicionais (help csvwrite).

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.

>> A=dlmread('Teste.txt','\t') -> Delimitador usado ‘Tab’;


A =

1.0000 2.1000 3.0000 0


2.0000 2.1000 2.0000 0
3.0000 2.3000 2.0000 0
4.0000 2.4000 2.0000 0
dlmread(…)
5.0000 2.1000 3.0000 0
dlmwrite(…)
6.0000 2.1000 4.0000 0
7.0000 2.5000 2.0000 0
8.0000 2.8000 3.0000 0
9.0000 2.4000 4.0000 0
10.0000 2.1000 5.0000 0

>> dlmwrite('File.txt',A,'delimiter',';','precision','%.6f')

Esta última função permite escrever o conteúdo da variável A, no ficheiro


File.txt usando o “;” como delimitador e os dados com 6 casas decimais.
Iniciação ao MATLAB®
MATLAB®
Exercício 3

1. Crie as variáveis A, B e C com dimensão 10x1 e os valores que entender;

2. Com o comando “save” guarde apenas as variáveis A e B num ficheiro com o


nome “Ab.mat”;

3. Apague as variáveis A e B do workspace;

4. Carregue o ficheiro (utilize o comando “load”) “Ab.mat” e verifique se


recuperou as variáveis A e B iniciais;

5. Construa, a partir do “excel” um ficheiro de dados com os valores de A, B e


C;

6. Apague as variáveis A, B e C do workspace;

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

2 >> save Ab.mat A B

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…

6 Import wizard – Utilizar uma das opções.

Depois de realizado o Import Wizard este será o >> importdata('Exercício 3.xlsx')


resultado: ans =

>> data data: [1x1 struct]


textdata: [1x1 struct]
data = colheaders: [1x1 struct]

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

§ Um “script” consiste num “m-file” onde introduzimos uma série de comandos


e que podem ser executados na totalidade apenas pela chamada ao ficheiro;

§ Funciona como uma macro, evitando a repetição comando a comando na


“Command Window”;

§ As variáveis são partilhadas com o workspace. Operam sobre variáveis do


workspace e as variáveis criadas internamente passam a estar disponíveis
também no workspace;

§ Não existem parâmetros de entrada nem de saída (as variáveis usadas/criadas


são as/colocadas do/no workspace);

§ São construídos a partir do editor do MATLAB®;

§ Podem fazer chamada a funções.

Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Scripts

Formas possíveis de criar um novo


m-file.

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

§ A função distingue-se do script por diversos aspectos:

§ Possui sempre um termo reservado que indica que se trata de uma função
(“function”);

§ Possui argumentos de entrada e saída;

§ O espaço de variáveis das funções é separado do workspace;

§ Para executar a função é necessário fazer a chamada segundo o protótipo


estabelecido aquando da sua definição (parâmetros de entrada);

§ O nome do “m-file” tem que ter, obrigatoriamente, o mesmo nome que


foi usado no protótipo da função;

§ Também podemos definir uma função temporária na linha de comandos;

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

function [x,y]=myfun(a,b,c) Parâmetros de


Entrada

x=a+b;
y=2*a+c;
  Parâmetros
de Saída

Código a Executar

Nome da Função

Termo Reservado para


Indicação de Função

Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções

Iniciação ao MATLAB®
MATLAB®
Scripts & Funções
Funções

Só são criadas no workspace as variáveis de saída


solicitadas à função. Claro que as variáveis de entrada
necessárias à execução da função também têm de ser
criadas aqui.

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;

>> nargin('myfun') -> Executado na linha de comandos

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;

>> nargout('myfun') -> Executado na linha de comandos

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

>> myplot(sin(0:.1:1),'color',[.5 .7 .3],'linestyle',':')

Permite indicar que a função pode ter argumentos de saída variáveis. O


argumento “varargout” tem que ser sempre o último argumento de saída
definido no protótipo da função.

function [s,varargout] = mysize(x)


varargout nout = max(nargout,1)-1;
s = size(x);
for k=1:nout, varargout(k) = {s(k)}; end

>> [s,rows,cols] = mysize(rand(4,5));

Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
M-lint

§ Ferramenta de análise de código;

§ Pesquisa de erros e possíveis melhorias;

§ Fornece informações e recomendações textuais para melhorar o desempenho


do código desenvolvido;

§ Executado à medida que o código é introduzido;

§ Para activar basta:

§ Menu File -> Preferences -> M-Lint (janela de preferências do M-lint);

§ Seleccione “Enable integrated M-Lint warning and error messages” ;  

Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
M-lint

Permite gerar um relatório do


M-lint com informações acerca
do código introduzido.

Informação em tempo real do


M-Lint.

Iniciação ao MATLAB®
MATLAB®
O Editor – Funções Avançadas
Profiler

§ Ferramenta de análise de performance com informação detalhada;

§ Ajuda a determinar os pontos do programa possíveis de serem alterados para


melhorar o desempenho;

§ Fornece informação detalhada acerca do tempo gasto pelos diversos


componentes que constituem o programa;

§ A informação é visualizada sob a forma de um relatório interactivo;

§ Para activar basta:

§ Menu Tools (editor) -> Open Profiler (abre o Profiler);

§ Menu Desktop (Matlab®) -> Profiler;  

§ Ver também o comando “profile”;

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

1. Construa um script que execute as seguintes operações:

1. Crie uma matriz A (3x3) e uma matriz B (3x2);

2. Obtenha uma matriz C com os elementos da 1ª linha da matriz A e da 1ª


coluna da matriz B. O resultado deve ser uma matriz 2x3;

3. Construa uma matriz D, resultado da junção da matriz A com B;

4. Obtenha o máximo, o mínimo e o resultado da soma de todos os


elementos da matriz D;

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:

1. O seu valor máximo;

2. O seu valor mínimo;

3. A soma de todos os seus elementos;

4. O número de elementos que a constituem;

5. Grave todos os elementos num ficheiro;

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

for … Também podemos criar for’s aninhados:

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

while (erro<10e-3) && (x<5)


x=2*y;
erro=x-y;
end

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

O caso otherwise é usado para indicar as operações quando nenhum dos


casos específicados é verificado.

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

Esta é uma solução possível. É possível


resolver este mesmo problema apenas com um
ciclo for utilizando indexação lógica…

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

>> t=(-pi:0.01:pi); 0.8

>> x=sin(t); 0.6

0.4
>> plot(t,x) 0.2

>> grid 0

-0.2

-0.4

-0.6

>> y=cos(t); -0.8

plot… -1
>> plot(t,x,t,y) -4 -3 -2 -1 0 1 2 3 4

0.8

>> plot(t,x) 0.6

>> hold on 0.4

0.2
>> plot(t,y,’g’) 0

-0.2

-0.4

-0.6

>> plot(t,x,’+r’) -0.8

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

Para colocar texto referente ao eixo das ordenadas:

>> ylabel(‘sin(t)’)

xlabel… Para colocar título:


ylabel… 1
sin (θ)

title… >> title(‘sin(\theta)’) 0.8

text… 0.6

gtext… Texto numa coordenada específica: 0.4

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

>> gtext(‘Colocada com o rato’) -1


-4 -3 -2 -1 0 1 2 3 4
Tempo

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

Com esta função podemos obter as coordenadas e posteriormente desenhar


ginput… o percurso realizado com o rato. 1

0.9

0.8

>> figure(1) 0.7

0.6

>> [x,y]=ginput(10); 0.5

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

Marker: {14x1 cell}


MarkerSize: {}
MarkerEdgeColor: {2x1 cell}
MarkerFaceColor: {2x1 cell}
XData: {}
YData: {}
ZData: {}
ButtonDownFcn: {}
Children: {} …
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização

Função Descrição
1
>> set(h,’LineWidth’,5)
0.8

Para obter o valor de uma propriedade:


0.6

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

Permite aceder à janela de edição das


propriedades do gráfico (+ intuitivo);

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

>> x=sin(t); 0.5 0.5


>> y=cos(t);

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

>> subplot(2,2,1) 0.8


2

>> bar(x,exp(-x.*x),'b')
1
0.6
0

>> grid 0.4


-1

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

bar… >> barh(x,exp(-x.*x),'r')


barh… >> grid
1 4

2
bar3… 0.5
0

bar3h… >> subplot(2,2,3) 0 -2

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

Existem diversas opções disponíveis para este tipo de gráficos. Ver


documentação de ajuda.
Iniciação ao MATLAB®
MATLAB®
Funções de Visualização

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

Podemos alterar individualmente


algumas das propriedades de cada 4

á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

§ Existem muitas outras opções de gráficos disponíveis. Podem tomar


conhecimento da totalidade dos tipos de gráficos possíveis consultando a
documentação do MATLAB® respeitante a Graphics.

§ Também podem observar os tipos disponíveis a partir do ambiente de


trabalho, workspace na opção plot.

Iniciação ao MATLAB®
MATLAB®
Funções de Visualização

Função Descrição
Construção de superfícies.

>> [X,Y,Z] = peaks(30);


>> surf(X,Y,Z)
>> colormap(hsv)
>> axis([-3 3 -3 3 -10 5])
5

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.

>> [X,Y,Z] = peaks(30);


>> surfc(X,Y,Z)
>> colormap(hsv)
>> axis([-3 3 -3 3 -10 5])

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.

>> [X,Y] = meshgrid(-3:.125:3);


>> Z = peaks(X,Y);
>> meshc(X,Y,Z);
>> axis([-3 3 -3 3 -10 5])
5

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.

Edite uma m-file e introduza o seguinte código. No final execute-o.

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

1. Construa um ficheiro excel com a seguinte informação

Iniciação ao MATLAB®
MATLAB®
Exercício 6

2. Construa um script que:

1. Importe os dados para MATLAB®;

2. Construa o gráfico de barras referente ao número de árvores de cada


tipo;

3. Na mesma figura, construa o gráfico que, em simultâneo, represente


para cada tipo de árvore a produção e o valor resultante da produção;

4. Ainda na mesma figura apresente o gráfico que apresente


simultaneamente o número de árvores e o preço/kg;

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

§ Pode ser usada para:

§ Derivação (incluindo derivadas parciais);

§ Integração (definida ou indefinida);

§ 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 =

2*x^2 + 3*y + 5*z

Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica

Função Descrição
>> sym(2/5) + sym(1/3)
ans =

11/15

Para criar variáveis simbólicas:

>> x = sym('x'); a = sym('alpha');


>> 2*a+3
ans =
syms …
sym(…) 2*alpha + 3

>> syms x;

Para criar expressões simbólicas:

>> rho = sym('(1 + sqrt(5))/2');


>> f = rho^2 - rho – 1
f =

(5^(1/2)/2 + 1/2)^2 - 5^(1/2)/2 - 3/2

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=[1 0.5 0.3;0.33 0.25 0.5;0.33 0.25 0.5]

A =

1.0000 0.5000 0.3000


0.3300 0.2500 0.5000
syms … 0.3300 0.2500 0.5000
sym(…)
>> sym(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

>> f = 2*(x + y);


>> expand(f)

ans =

2*x + 2*y

Iniciação ao MATLAB®
MATLAB®
Toolbox Simbólica

Função Descrição
Simplificação de expressões simbólicas:

>> f = x^3 - 6*x^2 + 11*x - 6;

>> 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 = dsolve('Dy = -a*y')

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

>> M = (1 - t^2)*exp(-1/2*t^2); 0.8

>> P = (1 - t^2)*sech(t); 0.6

0.4
>> ezplot(M); 0.2
>> hold on; 0

>> ezplot(P); -0.2

>> hold off; -0.4

-0.6

-0.8

ezplot(…) -6 -4 -2 0
t
2 4 6

Também podemos concretizar os valores das variáveis simbólicas:


1
M
0.8 P

0.6

>> T = -6:0.05:6; 0.4

>> MT = double(subs(M, t, T)); 0.2

>> PT = double(subs(P, t, T)); 0

>> plot(T, MT, 'b', T, PT, 'r-.'); -0.2

>> title(' '); -0.4

>> legend('M','P'); -0.6

>> xlabel('t'); grid; -0.8

-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

>> ezsurf(x^2 + y^2); 60


>> hold on;
>> zlabel('z'); 40

z
>> title('z = x^2 + y^2'); 20

>> hold off 0


5
5
0
0
ezsurf(…) >> syms t; y
-5 -5
x
ezplot3(…) >> ezplot3(t^2*sin(10*t), t^2*cos(10*t), t);
etc… x = t2 sin(10 t), y = t2 cos(10 t), z = t

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 =

solve(…) 7^(1/2)/2 + 1/2


1/2 - 7^(1/2)/2

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:

>> dsolve('Dx = -a*x')

ans =

C6/exp(a*t)

>> dsolve('Df = f + cos(t)') -> Resolve em ordem a f


dsolve(…)
ans =

sin(t)/2 - cos(t)/2 + C8*exp(t)

>> dsolve('Dy = a*y', 'y(0) = b') -> Com condições iniciais

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:

>> dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')


ans =

exp(a*i*t)/2 + 1/(2*exp(a*i*t))

>> z = dsolve('Dx = y', 'Dy = -x') -> Sistema de ED


z =

dsolve(…) x: [1x1 sym]


y: [1x1 sym]

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

>> fourier(f,u,v) -> Usa u em vez do tradicinal x e v em vez de w

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 =

ifourier(…) 2/(pi*(t^2 + 1)) - dirac(t)


ilaplace(…)
>> syms s;

>> f = 1/s^2;

>> ilaplace(f)

ans =

Iniciação ao MATLAB®
MATLAB®
Exercício 7

1. Defina a seguinte expressão simbólica:

f=2x2+a

2. Obtenha a expressão da primeira derivada;

3. Obtenha o valor da integração entre -2 e 2, quando a=2;

4. Obtenha o valor do limite quando x tende para 0+;

5. Obtenha o gráfico da função para valores de -10<a<10;

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

§ GUIDE – Graphical User Interface Development Environment

§ Ferramenta de desenvolvimento de interfaces gráficas;

§ Por defeito, corre sobre o MATLAB®;

§ Cria o código respeitante à criação dos diversos objectos de forma


automática;

§ Permite a chamada a todas as funções do MATLAB® ou que nós próprios


tenhamos construído;

§ É intuitiva no seu funcionamento;

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

§ Para cada objecto é criada


uma callback function. Aqui
devemos colocar o código
que pretendemos executar
aquando da chamada a esse
objecto (Por ex. quando
pressionamos um botão).

§ Na estrutura handles estão


contidos todos os handles de
todos os objectos da figura,
bem como outros dados que
se pretendam passar entre
funções;

Iniciação ao MATLAB®
MATLAB®
Guide

Dados ou variáveis que


pretendamos que sejam usadas
por todas as funções devem ser
definidas aqui e adicionadas à
estrutura handles;

Iniciação ao MATLAB®
MATLAB®
Guide

Quando o pushbutton1 for


pressionado irá desenhar um
seno no objecto axis definido e
de seguida coloca a grelha.

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

§ Vamos usar o pop-up menu para algo;

§ Primeiro vamos editar as suas propriedades e introduzir os campos que


queremos que surjam neste menu;

Iniciação ao MATLAB®
MATLAB®
Guide

§ Agora vamos alterar a função do pushbutton1 para apresentar o gráfico


correspondente à função seleccionada no popupmenu1.
Primeiro vamos buscar a posição da string
seleccionada no popupmenu1 (val). De
seguida vamos ao campo de string e
retiramos as strings que foram aí colocadas
(string). Depois disto é só indexar a
posição do array string e teremos a string
pretendida (sin(x) ou cos(x)).

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

1. Construa com a ajuda do GUIDE um GUI com os seguintes objectos:

1. Botão de pressão com a designação “PLOT”

2. Eixos coordenados para representação de gráficos (Axis);

3. Um popupmenu com os campos : sin(x), cos(x), sin(x)+cos(x) e


sin(x)*cos(x);

2. Quando pressionar o botão “Plot” deve ser representado o respectivo gráfico


seleccionado no popupmenu. Mais, se a selecção for “sin(x)” o gráfico deve
ser representado a vermelho, se for o “cos(x)” a azul, a soma a verde e se
for o produto a magenta;

3. Adicione um outro botão de pressão que feche a figura (“CLOSE”);

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

1. Para informação mais detalhada acerca de toolboxes específicas podem e


devem consultar o help do MATLAB®;

2. Podem encontrar outro tipo de informação no site de suporte da MathWorks –


www.mathworks.com;

3. Existe a possibilidade de assistirem a algumas demonstrações através da


internet no site da Matworks (após inscrição e nem sempre gratuitos);

4. Podem assistir, na altura em que quiserem, a webinars (videos de


demonstração de toolboxes e não só):
www.mathworks.com/company/events/webinars/;

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®

Você também pode gostar