Você está na página 1de 31

Aula 2

Revisão geral de MATLAB


O que é
O MATLAB é um software interativo cuja característica mais marcante é
o eficiente cálculo entre matrizes.

• Bastante utilizado na área de processamento de imagens,


apresentando uma toolbox exclusivamente para isto.
• Apresenta integração com linguagens como C, C++ e Java
https://www.mathworks.com/help/matlab/interoperating-with-
external-programming-languages-and-systems.html
Linguagem de programação

• extensão .m
• Linguagem interpretada
• Linguagem de tipagem dinâmica
• Linguagem de tipagem fraca
Software
Variáveis
• Declaração:
a = 5;
b = 'hello’

• Tipos:
int8, uint8, int16, double, logical, char
Para ver os demais tipos:
https://www.tutorialspoint.com/matlab/matlab_data_types.htm
Uso do ;
• Se colocado ; o resultado não é mostrado na linha de comando.
• Se não colocado, o resultado é mostrado.

Se executado o exemplo do slide anterior, o seguinte ocorreria:

>> a = 5;
>> b = 'hello'

b =

'hello'
Comentários
• Para comentar uma linha de código:

% Comentário

• Para comentar múltiplas linhas de código:

%{
Comentando
vários
comentários
%}
Algumas funções comuns
• display: imprime uma mensagem
• clear: limpa variáveis do espaço de trabalho, liberando memória
• clc: limpa janela de comando
• help: mostra documentação detalhada e informações sobre
comandos e funções do MATLAB
• whos: lista variáveis do espaço de trabalho com detalhes
>> a = 5;
>> whos
Name Size Bytes Class Attributes

a 1x1 8 double
Operadores e comparadores

+, -, *, / operadores com funcionalidade já conhecida


^ exponenciação
' transpor uma matriz
.*, ./, .^ operações elemento-a-elemento entre matrizes
== igualdade (usar isequal entre matrizes)
~= desigualdade
Estruturas condicionais
if condicao switch variavel
% trecho de código case valor_1
elseif condicao % código
% trecho de código case valor_2
else % código
% trecho de código otherwise
end % código
end
Estruturas condicionais
if var > 10
display('case 1');
elseif var > 5
display('case 2');
else
display('case 3');
end

PS: Parênteses nas condições são opcionais.


Estruturas condicionais
switch var
case 1
disp('case 1');
case 2
disp('case 2');
case 10
disp('case 3');
otherwise
disp('case default');
end
Estruturas de repetição

for i = inicio:passo:fim
% código
end

while condicao
% código
end
Estruturas de repetição
for i = 1:10
if i > 5
break
end

i
end

var = 10;
while var ~= 1
var = var - 1;

var
end
Arrays
Operações entre arrays em MATLAB são extremamente eficazes, como
o próprio nome da linguagem sugere (Matrix Laboratory).

• Ao inicializar uma array, valores são delimitados por [ ]


• Ao indexar uma array, valores são obtidos por ( )
• Arrays começam no índice 1, e não 0
Arrays
• Vetor linha:
row_vector = [1 2 3 4 5];
% ou row_vector = [1, 2, 3, 4, 5];

• Vetor coluna:
column_vector = [1; 2; 3; 4; 5];

• Concatenar vetores:
a = [1 2 3];
b = [4 5 6 7 8];
c = [a b]
Arrays
• Matriz:
matrix = [1 2 3; 4 5 6; 7 8 9];

• Concatenar matrizes:
a = [1 2 3; 4 5 6];
b = [7 8 9; 10 11 12];
c = [a b]
Arrays
Algumas funções comuns:

• ones(tam1, ..., tamN): array tam1x ... xtamN preenchida por 1


Ex.: ones(3, 5)gera uma matriz 3x5
• zeros(tam1, ..., tamN) : array preenchida por 0
• rand(tam1, ..., tamN) : array com valores entre 0 e 1
• size(array) : vetor linha com tamanho de cada dimensão
Ex.: size da matriz 3x5 iria retornar [3 5]
Arrays
• Indexando elementos em um vetor:

a = [10 11 19];
a(1)

• Indexando elementos em uma matriz:

a = [1 2 3; 4 5 6];
a(2, 3)
Performance de operações
matrix1 = rand(200, 200);
matrix2 = rand(200, 200);
Elapsed time is
0.009472 seconds.
tic
for i = 1:200 Elapsed time is
for j = 1:200
matrix1Val = matrix1(i, j);
0.000373 seconds.
matrix2Val = matrix2(i, j);

end
matrixRet1(i, j) = matrix1Val * matrix2Val;
ans =
end
toc

tic
logical
matrixRet2 = matrix1 .* matrix2;
toc

isequal(matrixRet1, matrixRet2)
1
Uso do :
Usando :, é possível criar vetores de forma prática e indexar vários
elementos de uma vez.

• Criando vetor:
• a = 1:10 cria um vetor cujos elementos vão de 1 à 10 (passo 1)
• a = 2:5:30 cria um vetor cujos elementos vão de 2 à 30 com
passo 5 (2 7 12 17 22 27)
Uso do :
• Indexando vários elementos em um vetor:

>> a = [1 3 6 8 10];
>> a(1:3)

ans =

1 3 6
Uso do :
• Indexando vários elementos em uma matriz:

>> a = [1 2 3; 4 5 6; 7 8 9];
>> a(1:2, :)

ans =

1 2 3
4 5 6
Arquivos .m
Arquivos com a extensão característica do MATLAB .m podem ser de
dois tipos:

• Scripts: não há entrada e nem saída de dados, e aqueles gerados


ficam disponíveis no espaço de trabalho.
• Funções: pode haver entrada e/ou saída de dados, e aqueles gerados
são internos à função.
Funções
• Funções são definidas em arquivos próprios, que devem apresentar o
mesmo nome da respectiva função.
• Dados gerados em uma função são disponíveis apenas em seu escopo
(local workspace).
• Podem receber uma ou mais entradas e retornar uma ou mais saídas.
• O retorno de variáveis não ocorre por uma palavra chave (como
return). As saídas apresentarão o último valor atribuído à elas no
escopo da função.
Funções
• Com retorno:
% nome_funcao.m
function [ret1, ret2, ..., retN] = nome_funcao(arg1, arg2, ..., argN)
% escopo da função
end

• Sem retorno:
% nome_funcao.m
function nome_funcao(arg1, arg2, ..., arg3)
% escopo da função
end
Funções
• Exemplo:

% fatorial.m
function ret = fatorial(n)

ret = 1;
for i = 2:n
ret = ret * i;
end

end
Funções
• Exemplo:
% fatorial.m
function fatorial(n)

ret = 1;
for i = 2:n
ret = ret * i;
end

fprintf('Valor do fatorial de %d: %d\n', n, ret);


end
Funções
É possível definir mais de uma função em um mesmo arquivo .m, porém
apenas a que compartilha o nome do arquivo será acessível fora dele. Estas
funções internas são denominadas subfunções.
% func1.m
function func1()
disp('funcao 1, acessível também fora do arquivo...');
func2();
end
function func2()
disp('subfuncao 2, acessível apenas neste arquivo...');
end
Funções

Em situações onde há duas ou mais saídas em uma função, escreve-se


um vetor com as variáveis que as receberão, na ordem de retorno.

• Exemplo:
a = ones(5, 4);
[linhas, colunas] = size(a);
Exercícios
1. Crie duas arrays 5x5x3 com valores aleatórios
2. Multiplique-as elemento-a-elemento e guarde o resultado em uma variável
3. Divida a array resultante por 2, atualizando o valor da variável
4. Guarde em uma variável a subarray composta pelas linhas 1 à 5, colunas 1 à 3 e
páginas 1 à 3 da array resultante
5. Concatene a array da 3ª etapa com a array da 4ª etapa, guardando o resultado
em uma variável
6. Crie uma função que, dada uma array tridimensional como entrada, retorne o
maior e menor valor dela, encontrados iterativamente
7. Receba os valores retornados pela função acima, com a entrada sendo a array
da 5ª etapa, e imprima-os
PS: Todas as etapas, com exceção da criação da função, devem ser feitas no mesmo
arquivo de extensão .m (ou seja, no mesmo script).

Você também pode gostar