Você está na página 1de 53

Minicurso MATLAB Bsico

Palestrantes
Rafael Rodrigues de Araujo
Marco Aurlio Amorim Biazollo

Introduo
MATLAB (MATrix LABoratory) trata-se de um software interativo de alta
performance voltado para o clculo numrico. O MATLAB integra
anlise numrica, clculo com matrizes, processamento de sinais e
construo de grficos em ambiente fcil de usar onde problemas e
solues so expressos somente como eles so escritos
matematicamente, ao contrrio da programao tradicional.

Layout

Command Window

a janela dos clculos e da programao. Nesta janela,


so inseridos os dados, que so interpretados pelo
programa, e ento os resultados so retornados.
Caso o usurio queira, esta janela tambm mostra
o desenvolvimento dos clculos realizados,
mostrando os valores de cada varivel,
aps terem sido executadas as aes
referentes a elas.

Layout

Editor

a janela onde so criados cdigos que podem ser


salvos como arquivos do MATLAB. a janela mais
utilizada, uma vez que nela podem ser digitados
cdigos completos para s depois serem rodados
na Command Window. Alm disso, com o modo Debug,
que ser explicado mais adiante, pode-se rodar
o cdigo linha por linha, para ver todos os passos
realizados pelo programa.

Layout

Command History Window

Esta janela mostra todos os comandos inseridos na


Command Window recentemente, classificados por
ordem cronolgica. Ao apertar a seta pra cima do
teclado na Command Window, visualizamos os
comandos armazenados na Command History Window.

Layout

Workspace

O Workspace mostra todas as variveis utilizadas


recentemente e seus respectivos tipos e valores.
Com ele, possvel verificar se alguma varivel
teve seu valor modificado quando o cdigo foi
rodado, e assim encontrar eventuais erros na
programao.

Layout

Figure Window

A Figure Window a janela que exibe grficos. Estes


podem ser criados em duas ou trs dimenses. Mais
adiante, ser explicado como plotar grficos em duas
dimenses.

Help

O comando help consiste em uma ferramenta de ajuda sobre todas as funes,


comandos e operadores existentes no MATLAB. Para acessar, basta digitar na
Command Window:
>>help funo/comando/operador
A partir do comando dado, aparecem informaes sobre o termo pesquisado.

Primeiramente, fornecida uma definio. Em seguida, so dados exemplos de


uso e todas as possibilidades de aplicao, bem como informaes sobre tpicos
relacionados pesquisa.

Dados

Salvando um arquivo

possvel salvar um cdigo utilizando o editor com a extenso .m. Basta ir em


File>New>M-File.

Executar um arquivo

Para executar existe duas formas. Sendo uma delas selecionar o script que deseja
executar e apertar F5, a outra basta digitar o nome do arquivo na janela de
comando e apertar enter.

Dados

Criando Dados

Declarar uma varivel no MATLAB muito simples, basta digitar o nome desejado
e o valor a ser atribudo a essa varivel. Apesar de simples deve-se tomar alguns
cuidados. Exemplo:

O nome da varivel deve sempre comear com uma letra:

A = 10.

Tambm no e aconselhvel usar nomes de funes e variveis embutidas:


Ans, i, j e outros.

Dados

Criando Dados

O MATLAB diferencia entre maiscula e minscula:


A a.

Palavras reservadas no podem ser utilizadas como varivel:


clear, clc, if e etc.

Caracteres especiais e espaos no so aceitos, podendo utilizar somente _:


A_B = 6.

Funes Format

A funo embutida format permite especificar o formato de apresentao de


nmeros reais na janela de comando.
Exemplo:
>>format long
>>pi

>>format short
>>pi

Funes Format

A funo embutida format permite tambm controlar o espao entre linhas na


janela de comando. As opes so loose (padro) e compact.
Exemplo:
>>format loose
>>2^3

>>format compact
>>2^3

Operaes com escalares

Todas as operaes entre escalares so feitas de forma simples. So realizadas da


esquerda para a direita, obedecendo ordem: potenciao,
diviso/multiplicao, adio/subtrao.

Operaes
Adio
Subtrao
Multiplicao
Diviso
Potenciao

Smbolo
+
*
/ ou \
^

Funes Embutidas

Funes Matemtica:

>>sqrt(x) % raiz quadrada de x


>>exp(x) % e^x
>>abs(x) % valor absoluto de x
>>log(x) % lnx
>>factorial(x) % x!

Funes Embutidas

Uteis

>>clc % apaga as linhas de Comando


>>clear all % limpa os valores das variveis
>>% -> comentrio
>>whos(x) % Fornece informaes sobre a varivel x
>>isletter(x) % verifica se e uma letra caso sim retorna 1 seno 0
>>isnumeric(x) % verifica se e um numero caso sim retorna 1 seno 0
>>sum(x) % soma os elementos de um vetor

Funes Embutidas

Funes Trigonomtricas:

>>sin(x) % sen(x) com x em radiano


>>cosd(x) % cos(x) com x em grau
>>atan(x) % arctg(x) com x em radiano
>>cosh(x) % cosh(x) com x em radiano

Funes Embutidas

Funes de Arredondamento:

>>round(x) -> arredonda para inteiro mais prximo


>>fix(x) -> arredonda para inteiro menor
>>ceil(x) -> arredonda para inteiro maior
>>rem(x,y) -> retorna o resto da diviso de x por y
>>sign(x) -> retorna 1 se x>0, -1 se x<0 e 0 se x=0
>>floor(x) -> arredonda para o inteiro negativo menor

Funes Embutidas

Funes para Clculo:

>>syms t % cria uma varivel simblica x


>>diff(t) % deriva a funo entre parnteses
>>int(t) % integra a funo entre parnteses
>>F = laplace(f) % calcula a transformada de f, sendo f = 2*exp(-3*t)
>>ilaplace(F) % calcula a transformada de F
>>dsolve('Dy=-a*y') % retorna a funo y(t)
>>[autovetor autovalor] = eig(M) % retorna os autovetores e autovalores de M

Casting
Uma forma de mudar o tipo de uma varivel, no uma transformao.
>>A = 2
>>int(A)
>>int8(A)
>>float(A)
>>char(A)
>>boolean(A)

Transformaes de variveis
O MATLAB possui alguma funes embutidas de transformao.
>>A = 2
>>num2str(A) % transforma um nmero em string
>>str2num(A) %transforma uma string em um nmero

Vetores

Formas de criar um vetor:

>>Vetor_linha = [1 2 4 3] ou [1, 2, 4, 3]
>>Vetorp = xi:p:xf
>>Vetor_coluna = [4; 3; 5; 2]
>>VetorPA = [a1,r,an]
>>Vetorif= linspace(xi,xf,n)

Vetores

Operaes com vetores:

Para acessar um elemento especifico de um vetor necessrio informar o nome


da varivel e o ndice dentro do parntese exemplo:
>>Vet(2)
Com isso tambm se pode alterar o valor do elemento da varivel :
>>Vet(2) = 5 %Aqui esta sendo atribudo o valor 5 no ndice 2 do vetor Vet
As operaes aritmticas entres vetores so feitas de forma comum:
>>Veta+Vetb
>>find(vet>2) % retorna o ndice do elemento no vetor
>>vet = [veta vetb] % contatena dois vetores

Vetores
Exemplos:
Tendo va = [2;3;4;6] e vb = [1;3;4;2]. Crie um vetor linha que seja a
concatenao de va e vb.
Com os mesmos va e vb, crie um vetor que onde os elementos seja vai/vbi.
Crie um vetor contendo os dois ltimos elementos de va e vb.

Vetores
Resposta:
>>V = [va;vb]
>>v = va./vb
>>v = [va(3:4);vb(3:4)]

Matrizes

Criar uma matriz:

>>M = [a11 a12;a21 a22]


>>zeros(m,n) % matriz de 0 mxn
>>ones(m,n) % matriz de 1 mxn
>>eye(n) % matriz identidade nxn

Matrizes

Operaes com matrizes:

Para acessar um elemento especifico de uma matriz necessrio informar o


nome da varivel e os ndices dentro do parntese exemplo:
>> M(2,3)
Com isso tambm se pode alterar o valor do elemento da varivel :
>>M(2,3) = 5 %Aqui esta sendo atribudo o valor 5 na linha 2 coluna 3
As operaes aritmticas entres vetores so feitas de forma comum:
>>Ma+Mb

Matrizes

Operaes com matrizes:

>>det(Ma+Mb) % determinante de Ma+Mb


>>inv(M) % matriz inversa de M
>> Mt = M % transposta de M
>> mat(:,2) = [] % apaga os valores da coluna 2
>>isequal(Ma, Mb) % retorna 1 se forem iguais e 0 se diferentes

Matrizes
Exemplos com matrizes:
Criar uma matriz 3x3 utilizando passo igual a 1 com o operador :.
Apagar a ultima linha da matriz gerada e multiplicar a segunda linha por 2.
Mostrar o ndice dos elementos mltiplos de 2 da matriz acima.

Matrizes
Resposta:
>> M = [1:3;4:6;7:9]
>> M(3,:) = []
>> M(2,:) = M(2,:)*2
>> [lin col]=find(mod(M,2)==0)

Funo

Criar uma funo:

>>edit -> abre o editor


Dentro do editor incia-se a funo desta forma:
function [out] = nomef(in)
%function -> comando para dizer que uma funo
%out -> parmetro de sada
%nomef -> nome da funo
%in -> parmetro de entrada
Obs.: O script deve ter o mesmo nome da funo ao salvar.
Deve-se indicar a pasta onde o script foi salvo.

Funo

Entrada de dados:

>>num = input(Digite seu numero preferido: )


>>nome = input(Digite seu nome: ,s) % e necessrio colocar o s para char e strings
Sada de dados:
>>disp(Ol Mundo)
>>fprintf(Bem vindo %s \n,nome) % semelhante ao printf do C

Funo
Exemplo:
%Este o programa principal para o clculo da rea do crculo
raio = leraio;
area = calcarea(raio);
exibearea(raio,area)
function raio = leraio
% Esta funo solicita ao usurio a digitao do raio
disp('Quando solicitado, informe o valor do raio em cm.')
raio = input('Digite o raio: ');

Funo
function area = calcarea(raio)
% Esta funo calcula a rea de um crculo
area = pi * raio * raio; % ou tb area = pi*power(raio,2);
function exibearea(raio,area)
% Esta funo exibe a rea do crculo
fprintf('Para um crculo de raio igual a %.2f cm\n',raio)
fprintf('a rea equivale a %.2f cm quadrados.\n',area)

Condicional

Uso do if:

if condio
ao
end
Uso do if-else:
if condio
ao1
else
ao2
end

Condicional

Uso do if-else aninhadas:

Condicional
switch expresso

case caso1
ao1
case caso2
ao2
case caso3
ao3
...
otherwise
aon

end

Estruturas de Repetio

Uso do for:

for varivel_de_controle = faixa


corpo_do_lao
end
Exemplo:
>> for i = 1:5
fprintf('%d ',i)
end

Estruturas de Repetio
Uso do while:

while condio
ao
end
Exemplo:
a = 1; b = 15;

while a<b,
clc
a = a+1
b = b-1
pause(1) % e feito uma pausa de 1 segundo

end
disp('fim do loop')

Estruturas de Repetio
Exemplo:
% Este o programa principal para o clculo da rea do retngulo
[base,altura] = ledimensoes;
exibearearetangulo(base,altura)
function [b,h] = ledimensoes
% Esta funo solicita ao usurio a digitao da base e da altura
b = input('Digite a base: ');

h = input('Digite a altura: ');

Estruturas de Repetio
function exibearearetangulo(bas,alt)
% Esta funo exibe a rea do retngulo.
% Ela chama uma subfuno para calcular a rea.
area = calcarearetangulo(bas,alt);
fprintf('Para um retngulo de base %.2f e altura %.2f\n',bas,alt)
fprintf('a rea equivale a %.2f.\n',area)
function area = calcarearetangulo(bas,alt)
% Esta subfuno calcula a rea do retngulo.
area = bas * alt;

Estruturas de Repetio
escolha = eopcoes;

while escolha ~= 3 && escolha ~= 0


switch escolha
case 1
raio = leraio;

area = calcarea(raio);
exibearea(raio,area)
case 2
[base,altura] = ledimensoes;
exibearearetangulo(base,altura)
end
escolha = eopcoes;
end

Estruturas de Repetio
function escolha = eopcoes
% Exibe o menu de opes
escolha = menu('Escolha uma opo',rea Circulo',rea Retngulo',...
'Sair do programa');

Manipulao de Arquivo em Disco

Gravar em disco:

>>dados = M+M
>>save testfile.dat dados ascii

Leitura do disco:

>>load testfile.dat
>>disp(testfile)

Regravao em disco:

>>Mat = eye(3);

>>save testfile.dat Mat ascii -append

Grficos

Como plotar o grfico:

Primeiramente, deve-se criar dois vetores que armazenem, respectivamente, os valores


das variveis X e Y que sero os eixos do grfico. Ento, o comando a ser dado :
>> plot(x,y,Opes de Estilo)

Plotando uma funo:

Uma outra maneira para se plotar um grfico no MATLAB usando o comando fplot. Ele
plota diretamente uma funo dada. Seu formato :
>> fplot(funo,[intervalo de valores], opes de estilo);
Exemplo:
>> fplot('cos(x)',[0,pi],'green')

Grficos

Grficos

Mais de um grfico na mesma janela:

Figure: esse comando abre uma nova Figure Window, onde o prximo grfico plotado ser
mostrado.
>>figure
Hold on / Hold off : o comando hold on fixa a ltima Figure Window gerada, e todos os
plots a partir dele at o comando hold off so gerados na mesma janela. Ou seja, ele
possibilita que vrias curvas sejam mostradas num mesmo grfico.
>>hold on
>>plot(x,y)
>>plot(w,z)
>>hold off

Grficos
Subplot: o comando subplot permite que vrios grficos sejam mostrados separadamente
numa mesma Figure Window. Com ele, aparecero duas ou mais curvas, cada qual com
seus eixos e escalas, lado a lado horizontalmente e/ou verticalmente, numa mesma
janela.
>>plot(x,y)
>>subplot(a,b,p)
>>plot(w,z)

Grficos
Exemplo:
>> x = 1:0.01:10;
>> y1 = square(x);
>> y2 = sin(x);
>> subplot(2,1,1)
>> plot(x,y1)
>> subplot(2,1,2)
>> plot(x,y2)

Grficos

Comandos auxiliares:

Title: O comando title insere um ttulo ltima Figure Window aberta.


>>title(titulo desejado)
Xlabel: O comando xlabel permite que o eixo das abscissas do grfico seja identificado.
>>xlabel(identificao abscissas)
Ylabel: O comando ylabel permite que o eixo das ordenadas do grfico seja identidifcado.
>>ylabel(identificao ordenadas)
Text: O comando text insere um texto digitado pelo usurio numa determinada posio.

>>text(x,y,texto desejado)

Grficos
Exemplo:
>> x=[ 4 8 12 16];
>> y=[ 1 2 3 4];
>> plot(x,y,'green')
>> xlabel('x');
>> ylabel('y');
>>title(Grafico Simples);
>>axis([0 16 1 4]);

>> text(8,2,'(8,2)')

Grficos
Exemplo:
>> syms t;
>> f = 2*t^2+2*t+1
>> ezplot(f) %plota uma expresso alfanumrica

Grficos
Exemplo:
>>clf %Limpa os grficos anteriores
>>x = 0:0.1:2;
>>y1 = exp(x);
>>y2 = sqrt(exp(x));
>>plot(x,y1,'r')
>>hold on
>>plot(x,y2,b')
>>grid on % Coloca grade
>>legend('y1=exp(x)','y2=sqrt(exp(x))') %Inseri uma legenda