Sie sind auf Seite 1von 36

João Vitor de Oliveira

MATLAB: Um curso introdutório


Universidade Federal do Rio de Janeiro
Introdução ao MATLAB

● O que é?
● Quem usa?
Primeiro contato com MATLAB

● Primeiramente, vamos inserir somente executar comandos no


MATLAB, sem programar algum algoritmo propriamente.
● Motivo: Se acostumar com a sintaxe e os tipos/estruturas de
dados mais predominantes no mesmo.
Primeiro contato com MATLAB

● Inserir os seguintes comandos no console do MATLAB:


Primeiro contato com MATLAB

7 + 8
7 + 8;
sin(pi/2)
y = sqrt(-1)^(3);
y
Primeiro contato com MATLAB

● Ajustar visualização dos resultados com o format desejado:


Tipos de dados principais MATLAB

Vejamos a seguir brevemente os tipos principais de dados


manipulados no MATLAB:
● Vetores e Matrizes
● Strings (cadeia de caracteres)
● Cell Matrix
Vetores e Matrizes

● De fácil manipulação, sintaxe vetorial.


● Possível definir vetores e matrizes variáveis, a partir da linha de
comando.
● Cada vetor ou matriz é composto por números de ponto
flutuante ,chamados de elementos.
Criando Vetores (sem funções internas)

● Assim como em álgebra linear, vetores podem ser vetores linhas


(1xN) ou vetores colunas (Nx1) .
● Criando um vetor linha informando todos seus elementos
manualmente:
x = [1 2 3 4 5 6]
● Criando um vetor linha informando todos seus elementos
manualmente:
x = [1;2;3;4;5;6]
Criando Matrizes (sem funções internas)

● Muito simples: juntar as duas ideias! O seguinte comando cria


uma matriz 3x3:

A = [-0.8252 0.2571 0.5029;-0.5640 -0.3266


-0.7585;-0.0307 -0.9095 0.4145]
Criando Vetores (continuação)

● É possível criar vetores seguindo um certo padrão:

z = [inicio:passo:fim]
Isso criará um vetor que terá como seu primeiro elemento inicio, e
terá diversos elementos até o último ser fim, sendo que todos os
elementos adjacentes irão se distar de uma quantidade igual a passo.
Algumas funções especiais para criação de vetores
e matrizes
● Existem funções internas do próprio software para criação de matrizes (e
vetores):
zeros(N,M) - Matriz de zeros de tamanho N x M.
ones(N,M) - Matriz de 1’s de tamanho N x M.
eye(N) - Matriz Identidade (quadrada por def.) de tamanho N x N.
diag(x) - Matriz diagonal, onde a diagonal é dada pelo vetor x fornecido.
diag(A) - Extrai a diagonal da matriz A.
rand(N,M) - Matriz onde todos os elementos são randômicos e são entre 0 e 1.
reshape(A,[L C]) - Converter matriz de tamanho original para tamanho L x C

OBS: Há outras funções nativas, ver help do software ou site oficial!


Operações entre matrizes/vetores

● Transposição de matrizes ( ) : A’
● Produto de matrizes ( ): A*B Erro se colunas de A != linhas de B.
● Produto elemento-elemento: A.*B Erro se A não tem mesmo tamanho que B.
● Potência de matrizes ( ) : A^k Possíveis erros se A for singular.
● Potência de elemento-elemento : A.^k
Operações entre matrizes/vetores

● Funções (aplicadas elemento a elemento)


exp(A), cos(A)
● Concatenação de matrizes:
C = [A B] Sujeito a erros dependendo
D = [A;B] do tamanho das matrizes!
Algumas funções nativas para matrizes

● Todas já prontas e fáceis de usar. Em geral, são muito úteis para aplicações que
envolvem conceitos de álgebra linear e estatística.

det(A) - Determinante de A.

[N,M] = size(A) - Coloca num. De linhas na variável N e num. das colunas na


variável M.
length(A) - Tamanho total de uma matriz
sum(A) - Vetor com soma dos elementos das colunas de uma matriz A.

mean(A) - Análogo ao de cima, mas com a média dos elementos.

var(A) - Análogo ao de cima, mas com a variância dos elementos.


Algumas funções nativas para matrizes

max(A), min(A) - Vetor com máximos, mínimos dentre as colunas de uma matriz A.
[V,D] = eig(A) - Retorna os autovetores (em V) e autovalores (em D) de uma
matriz A.

x = A\b - Retorna a solução de um sistema linear ->

Possível erro linhas de A não for igual ao de b ou se sistma


impossível
linsolve(A,-b) - Análogo ao de cima, mas mais poderoso (mais lento, entretanto
as vezes trata problemas que o “\” não consegue).
inv(A) - Inversa de A ->
Acesso de elementos de uma matriz
OBS: Indices no MATLAB começam no 1
● Acessar o k-ésimo elemento de um vetor
x(k)
● Acessar o elemento da linha i e da coluna j de uma matriz
A(i,j)
● Acessar uma linha i de uma matriz (um vetor linha todo de uma vez)
A(i,:)
● Acessar uma coluna j de uma matriz (um vetor coluna todo de uma vez)
A(:,j)
Acesso de elementos de uma matriz

● Acessar a sub-matriz:
A(inicio1:fim1,inicio2:fim2)
Erro se os indices não classificarem uma submatriz válida!
Strings

● Vetores de char, ou seja, caracteres.


● No MATLAB, só se usa aspas simples (‘) e não aspas duplas (‘’)
● Comandos de concatenação e acesso de elementos (no caso, agora caracteres)
são feitos da mesma forma que vetores de números.
Principais funções de Strings

● Comparação de strings (verificar se são iguais):


strcmp(text1,text2)
● Converter números em string
num2str(x)
Muito útil quando se deseja descrever legenda de gráficos. Não se
pode simplesmente colocar o valor de uma variável com um número no comando (que
veremos posteriormente), tem de haver a conversão previamente!
Células

● Permitem incorporar em seus elementos qualquer tipo de dados: números, vetores,


matrizes ou strings:
Ex:
Tabela = {’ABCDEF’, -1:10 ; rand(3,4), exp(pi)}
● Acesso de elementos é semelhante aos dados anteriores, entretanto usamos chaves:
Tabela{1} -> retornaria ’ABCDEF’
Células

● Podem ser concatenadas usando colchetes, necessário ter o mesmo número de colunas!
T1 = {'Maria', 12}
T2 = {'Gabriel', 16}
T3 = {'Marcelo', 33}
T = [T1;T2;T3] - > Célula 3x2

● Também se pode fazer nesting, que não possui essa restrição


T = {T1;T2;T3} -> Célula de Células (no caso, todas de tamanho 1x2)
● Células em geral são o formato com que dados importados de arquivos (planilhas, texto,
etc) são armazenados.
Criando seu primeiro programa no MATLAB
Definindo uma função no MATLAB
● IMPORTANTE: nomedafuncao.m tem que coincidir com a função criada!

function [retorno1,retorno2,...] = nomedafuncao(argumento1,argumento2,...)


% Insira seu código aqui!

end
Exemplo base de uma função no MATLAB
arquivo : g.m

function [y] = g(x)


y = sin(100*x);
end
Executando uma função no MATLAB

● Ideal criação de um script main.m na mesma pasta que o arquivo anterior foi criado.
● Vamos criar um main.m que irá gerar uma malha de pontos e plotar a função base criada.
arquivo : g.m

x = [0:10^-2:30];
y = g(x);
plot(x,y)

Ao final disso, aperte F5!


O comando plot

● Um dos mais importantes de todos, plota gráficos em 2D. Possui uma série de opções.
Basicamente, precisa de 2 vetores de mesmo tamanho N (ou uma matriz N x 2), onde o um
servirá como abscissa e o outro como ordenada.
● Múltiplos plots: 2 opções
○ plot(x,y1,x,y2,x,y3,x,y4…)
○ plot(x,y1); hold on; plot(x,y2); hold on; plot(x,y3) ...
● Múltiplos plots em uma mesma janela, mas em regiões diferentes:
subplot(i,j,k) -> i,j dividem a janela em uma matriz, k é a janela
desejada.
O comando plot - algumas das opções

● Cor: é possível usar alguma determinada cor, colocando a inicial da cor ao final da instância
de plot
plot(x,y1,'r',x,y2,'g') -> Primeiro vermelho, segundo verde
● Forçar domínio/imagem de visualização
xlim(xmin,xmax)
ylim(ymin,ymax)
● Título
title(texto)
O comando plot - algumas das opções

● Legenda: legenda para cada par (abscissa,ordenada) plotados.


plot(x,sin(x),x,exp(-x));
legend('sin(x)','exp(-x)'); -> Adicionará legenda
● Adicionar legenda para o eixo x e o eixo y.
xlabel('t (segundos)');
ylabel('posicao (metros)');
Finalizando: os comandos if e else

● Condicionais para mudar o rumo de algum script em questão. No MATLAB, a sintaxe dos
mesmos é:
if (condicao)
lista de comandos;
elseif (outra condicao)
outra lista de comandos;
else
ultima lista de comandos;
end
Finalizando: os comandos if e else

● Condicionais para mudar o rumo de algum script em questão. No MATLAB, a sintaxe dos
mesmos é:
if (condicao)
%código;
elseif (outra condicao)
%código;
else
%código;
end
Finalizando: os comandos if e else
Finalizando: os comandos while e for
● Loop do tipo while funciona de maneira bastante similar ao if, a diferença é que ele repetirá
aquele passo até que a condição seja satisfeita.
while (condicao)
%código;
end
● Loop do tipo for. Ligeiramente diferente é da seguinte forma:
for k = inicio:passo:final
%código;
end
Irá repetir até k ser igual a final, a cada iteracao k é acrescido de passo.
Desafios
Chega de eu fazer tudo, agora é a sua vez!
● Ajuste o código “transcal2dlaplace.m” para um número de iterações qualquer e não fixo.
● Faça cálculos análogos ao que está no pdf da pasta medicao massas, mas agora assuma
que está se observando um processo de transferência de massa em 3 tempos distintos.
Faça um histograma (para cada tempo distinto) e plot um gráfico de cada uma das médias
e seus desvios padrão, use a função:
errorbar(tempo,medias,desviospadroes)
● Faça algum plot em 3D. Para isso, crie sua função, o domínio (os pontos em que será
avaliada a sua função). Dica: plot3
Desafios
Chega de eu fazer tudo, agora é a sua vez!
● Ajuste o código “transcal2dlaplace.m” para um número de iterações qualquer e não fixo.
● Faça cálculos análogos ao que está no pdf da pasta medicao massas, mas agora assuma
que está se observando um processo de transferência de massa em 3 tempos distintos.
Faça um histograma (para cada tempo distinto) e plot um gráfico de cada uma das médias
e seus desvios padrão, use a função:
errorbar(tempo,medias,desviospadroes)
● Faça algum plot em 3D. Para isso, crie sua função, o domínio (os pontos em que será
avaliada a sua função). Dica: plot3
● Calcule a integração numérica de
Dica: integral
Desafios
Chega de eu fazer tudo, agora é a sua vez!
● Encontre o polinômio de quarto grau que melhor ajusta os pontos (x e y) do arquivo
ajuste.xlsx (ajustecurva). Plote o após determinar os coeficientes.

Das könnte Ihnen auch gefallen