Você está na página 1de 6

Instituto Tecnolgico de Aeronutica ITA

Matemtica Computacional CCI-22


Tutorial sobre MATLAB

Professor: Marcos Ricardo Omena de Albuquerque Maximo


23 de fevereiro de 2016

% usado para comentrios.


Tipo de varivel no precisa ser definido explicitamente (o MATLAB infere o tipo):
x = 1
x = a
x = abc

; opcional (indica se o MATLAB deve imprimir o resultado ou no):


x = 1 % imprime o resultado
x = 1; % nao imprime resultado

O MATLAB lida nativamente com vetores e matrizes:


x = [1 2 3] % vetor linha
x = [1; 2; 3] % vetor coluna
x = [1 2 3; 4 5 6] % matriz 2x3
x = 2:2:6 % sequencia de numeros de 2 a 6, com passo 2
x = 2:-2:-10
x = 2:6 % passo eh assumido como 1 se for omitido

Operaes com vetores e matrizes:


x = [1 2 3]
y = [4 5 6]
x + y
x - y
x * y % multiplicacao de matrizes invalida
x % x transposto
x * y % 3x3
x * y % 1x1
x .* y % multiplicacao elemento a elemento
x ./ y % divisao elemento a elemento
x.^3 % exponenciacao elemento a elemento
x = [1 5 1; 5 1 1; 8 2 1]
inv(x)
x * inv(x)
x * x^-1

Matriz inversa:

1
x = [1 5 1; 5 1 1; 8 2 1]
inv(x)
x * inv(x)
x * x^-1

Indexao de matriz e submatrizes:


x = [5 4 3 2 1]
x(1) % MATLAB indexa a partir do 1
x(2:3)
x(end) % ultimo elemento
x(3:end)
x(1:2:5)
y = [2 4]
x(y)
x = [1 2 3 4 5; 6 7 8 9 10]
x(:. 2:3)
x(1, :)

Alterar elementos de vetores ou matrizes:


x = [1 2 3 4 5]
x(3) = 10
x(2:3) = [5 6]
x(7) = 10 % MATLAB aumenta a dimensao do vetor se necessario
x = [1 2 3; 4 5 6]
x(2,3) = 10
x(1:2, 1:2) = [1 0; 0 1]

Concatenao:
x = [1 2 3]
y = [4 5 6]
z = [x y]
z = [x; y]

Algumas funes do MATLAB so aplicadas a todos os elementos do vetor ou matriz:


x = [1:5; -1:-1:-5]
sqrt(x) % perceba que numeros complexos sao nativos
exp(x)
abs(x)

O help do MATLAB muito til. Para saber como funciona uma funo, digite:
help sqrt
help exp
help abs
help * % tambem funciona para operadores

Algumas funes teis para gerar matrizes:


zeros(3,4) % matriz de zeros
ones(4,3) % matriz de uns
diag([1 2 3]) % matriz diagonal
eye(3) % matriz identidade
rand(3) % matriz 3x3 de numeros aleatorios entre 0 e 1
rand(3,4) % matriz 3x4 de numeros aleatorios entre 0 e

2
Escrever mensagem na tela:
x = 1
disp(x vale 1)
disp(sprintf(x vale %d, x))

Entrada do usurio:
frase = Entre um numero:
x = input(frase)

Controle de fluxo:
for i=1:5
if i < 3
disp(sprintf(%d eh menor que 3))
elseif i == 3
disp(sprintf(%d eh igual a 3))
else
disp(sprintf(%d eh maior que 3))
end % fecha o if
end % fecha o for
x = 1
while x ~= 10
x = x + 1
end

Struct:
x = struct()
x.a = 1
x.b = abc
x.c = [1 2 3]

Escrita e leitura de arquivo:


clear % limpa o workspace
x = rand(10,2)
y = ones(2,10)
save(arquivo) % salva workspace como arquivo .mat
w = load(arquivo) % carrega workspace como struct
save(arquivo_ascii.txt, x, -ascii) % salva variavel x
% Note que o arquivo .txt salvo como ascii eh legivel
z = load(arquivo_ascii.txt)
x - z < 10^-5

Arquivo .m (script/funo):
% Script eh uma sequencia de commandos
edit somaQuadrados.m % editar o script (cria se nao existir)

Entre com o seguinte cdigo para o script somaQuadrados.m:


soma = 0
for i=1:10
soma = soma + i*i
end

Para executar o script, basta digitar o seu nome na Command Window :

3
somaQuadrados

Transformar o script em funo (recebe argumentos):


function soma = somaQuadrados(N)
% Calcula soma dos quadrados dos N primeiros numeros naturais.
% Obs.: comentarios logo apos o cabecalho sao o help da funcao.

soma = 0;
for i=1:N
soma = soma + i * i;
end % fecha o for

end % fecha a funcao

Testar a funo:
s = somaQuadrados(3)
s = somaQuadrados(10)
help somaQuadrados

Cada funo acessvel da Command Window deve estar em um arquivo .m separado.


Porm, pode-se criar funes auxiliares (no acessveis da Command Window ) dentro do
mesmo .m:
function soma = somaQuadrados(N)
% Calcula soma dos quadrados dos N primeiros numeros naturais.
% Obs.: comentarios logo apos o cabecalho sao o help da funcao.

soma = 0;
for i=1:N
soma = soma + quadrado(i);
end % fecha o for

end % fecha a funcao

function x2 = quadrado(x)

x2 = x * x;

end

Note que funes no MATLAB sempre passam argumentos por valor. Uma funo pode
ter mais de um retorno em MATLAB:
function [soma, produto] = calculaSomaProduto(a, b)
% Calcula a soma e o produto de dois numeros a e b.

soma = a + b;
produto = a * b;

end

Comandos de diretrio:
ls % lista arquivos do diretorio atual
cd .. % volta uma pasta

4
cd <nome_da_pasta>/ % entra na pasta <nome_da_pasta>

O MATLAB encontra scripts e funes que esto no diretrio atual ou no path:


path % lista diretorios incluidos no path
addpath(<nome_do_diretorio>) % adiciona diretorio ao path

Grficos:
t = 0:0.01:1
x = sin(2*pi*t) % senoide de frequencia 1 Hz
plot(t,x)
y = sin(2*pi*2*t) % senoide de frequencia 2 Hz
plot(t,y, r) % novo plot sobrescreve o anterior
% r gera grafico com linha vermelha (red)
plot(t,x)
hold on
% faz com que novos graficos sejam desenhados em cima do atual
plot(t,y,r)
xlabel(Tempo (s))
ylabel(Voltagem (V))
legend(senoide 1 Hz, senoide 2 Hz)
title(Graficos de senoides)
grid on % Coloca uma malha no grafico (ajuda a ler)
% salva figura como png
print -dpng grafico.png
% salva figura com 400 dpi (melhor resolucao)
print -dpng -r400 grafico400.png
% .eps eh interessante se usar editor de texto LaTeX
print -depsc2 grafico.eps
figure % cria nova figura
t = 0:0.1:1
plot(t,t.^2,g*-) % pontos sao marcados com *

Medindo tempo:
tic;
for i=1:10000
for j=1:10000
k = i * j;
end
end
tempoDecorrido = toc;

Tamanhos de vetores e matrizes:


x = [1 2 3]
comprimento = length(x)
x = [1 2 3; 4 5 6]
tamanho = size(x)
numLinhas = tamanho(1)
numColunas = tamanho(2)
numLinhas = size(x,1)
numColunas = size(x,2)

Iterando sobre uma matriz:


x = rand(10,5);

5
numLinhas = size(x,1);
numColunas = size(x,2);

soma = 0;
for i=1:numLinhas
for j=1:numColunas
soma = soma + x(i,j);
end
end

soma % imprime a soma

Você também pode gostar