Buscar

Tutorial MATLAB

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Instituto Tecnológico de Aeronáutica – ITA
Matemática Computacional – CCI-22
Tutorial sobre MATLAB
Professor: Marcos Ricardo Omena de Albuquerque Maximo
23 de fevereiro de 2016
% é 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] % 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
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
Indexação 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]
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
2
Escrever mensagem na tela:
x = 1
disp(’x vale 1’)
disp(sprintf(’x vale %d’, x))
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
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/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 :
3
somaQuadrados
Transformar o script em função (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 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
4
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:
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);
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
6

Outros materiais