0% acharam este documento útil (0 voto)
14 visualizações6 páginas

Cci 22+Tutorial+Matlab

Enviado por

juan.souzac022
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
14 visualizações6 páginas

Cci 22+Tutorial+Matlab

Enviado por

juan.souzac022
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Instituto Tecnológico de Aeronáutica – ITA

Matemática Computacional – CCI-22


Tutorial sobre MATLAB

Professor: Marcos Ricardo Omena de Albuquerque Maximo


7 de março de 2017

% é usado para comentários.


Tipo de variável não 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 não):


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] % as vezes eh util separar os numeros de uma linha por ,
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

Operações 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

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

1
Indexação de matrizes 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]

Concatenação:
x = [1 2 3]
y = [4 5 6]
z = [x y]
z = [x; y]

Algumas funções do MATLAB são 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 função, digite:
help sqrt
help exp
help abs
help * % tambem funciona para operadores

Algumas funções ú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

Escrever mensagem na tela:


x = 1
disp(’x vale 1’)
disp(sprintf(’x vale %d’, x))

2
Entrada do usuário:
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 % a ~= b significa ‘‘a diferente de b’’
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’)
abs(x - z) < 10^-5

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

Entre com o seguinte código 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 :


somaQuadrados

Transformar o script em função (recebe argumentos):

3
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 função:
s = somaQuadrados(3)
s = somaQuadrados(10)
help somaQuadrados

Cada função acessível da Command Window deve estar em um arquivo .m separado.


Porém, pode-se criar funções auxiliares (não acessíveis 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 funções no MATLAB sempre passam argumentos por valor. Uma função 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 diretório:
ls % lista arquivos do diretorio atual
cd .. % volta uma pasta
cd <nome_da_pasta>/ % entra na pasta <nome_da_pasta>

O MATLAB encontra scripts e funções que estão no diretório atual ou no path:

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

Gráficos:
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);

numLinhas = size(x, 1);


numColunas = size(x, 2);

5
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