Minicurso MATLAB Básico
Palestrantes
Rafael Rodrigues de Araujo
Marco Aurélio Amorim Biazollo
Introdução
MATLAB (MATrix LABoratory) trata-se de um software interativo de alta
performance voltado para o cálculo numérico. O MATLAB integra
análise numérica, cálculo com matrizes, processamento de sinais e
construção de gráficos em ambiente fácil de usar onde problemas e
soluções são expressos somente como eles são escritos
matematicamente, ao contrário da programação tradicional.
Layout
Command Window
É a janela dos cálculos e da programação. Nesta janela,
são inseridos os dados, que são interpretados pelo
programa, e então os resultados são retornados.
Caso o usuário queira, esta janela também mostra
o desenvolvimento dos cálculos realizados,
mostrando os valores de cada variável,
após terem sido executadas as ações
referentes a elas.
Layout
Editor
É a janela onde são criados códigos que podem ser
salvos como arquivos do MATLAB. É a janela mais
utilizada, uma vez que nela podem ser digitados
códigos completos para só depois serem rodados
na Command Window. Além disso, com o modo Debug,
que será explicado mais adiante, pode-se rodar
o código 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 cronológica. 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 variáveis utilizadas
recentemente e seus respectivos tipos e valores.
Com ele, é possível verificar se alguma variável
teve seu valor modificado quando o código foi
rodado, e assim encontrar eventuais erros na
programação.
Layout
Figure Window
A Figure Window é a janela que exibe gráficos. Estes
podem ser criados em duas ou três dimensões. Mais
adiante, será explicado como plotar gráficos em duas
dimensões.
Help
O comando help consiste em uma ferramenta de ajuda sobre todas as funções,
comandos e operadores existentes no MATLAB. Para acessar, basta digitar na
Command Window:
>>help função/comando/operador
A partir do comando dado, aparecem informações sobre o termo pesquisado.
Primeiramente, é fornecida uma definição. Em seguida, são dados exemplos de
uso e todas as possibilidades de aplicação, bem como informações sobre tópicos
relacionados à pesquisa.
Dados
Salvando um arquivo
É possível salvar um código utilizando o editor com a extensão ‘.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 variável no MATLAB é muito simples, basta digitar o nome desejado
e o valor a ser atribuído a essa variável. Apesar de simples deve-se tomar alguns
cuidados. Exemplo:
O nome da variável deve sempre começar com uma letra:
A = 10.
Também não e aconselhável usar nomes de funções e variáveis embutidas:
Ans, i, j e outros.
Dados
Criando Dados
O MATLAB diferencia entre maiúscula e minúscula:
A ≠ a.
Palavras reservadas não podem ser utilizadas como variável:
clear, clc, if e etc.
Caracteres especiais e espaços não são aceitos, podendo utilizar somente ‘_’:
A_B = 6.
Funções Format
A função embutida format permite especificar o formato de apresentação de
números reais na janela de comando.
Exemplo:
>>format long
>>pi
>>format short
>>pi
Funções Format
A função embutida format permite também controlar o espaço entre linhas na
janela de comando. As opções são loose (padrão) e compact.
Exemplo:
>>format loose
>>2^3
>>format compact
>>2^3
Operações com escalares
Todas as operações entre escalares são feitas de forma simples. São realizadas da
esquerda para a direita, obedecendo à ordem: potenciação,
divisão/multiplicação, adição/subtração.
Operações
Adição
Subtração
Multiplicação
Divisão
Potenciação
Símbolo
+
*
/ ou \
^
Funções Embutidas
Funções Matemática:
>>sqrt(x) % raiz quadrada de x
>>exp(x) % e^x
>>abs(x) % valor absoluto de x
>>log(x) % lnx
>>factorial(x) % x!
Funções Embutidas
Uteis
>>clc % apaga as linhas de Comando
>>clear all % limpa os valores das variáveis
>>% -> comentário
>>whos(x) % Fornece informações sobre a variável x
>>isletter(x) % verifica se e uma letra caso sim retorna 1 senão 0
>>isnumeric(x) % verifica se e um numero caso sim retorna 1 senão 0
>>sum(x) % soma os elementos de um vetor
Funções Embutidas
Funções Trigonométricas:
>>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
Funções Embutidas
Funções de Arredondamento:
>>round(x) -> arredonda para inteiro mais próximo
>>fix(x) -> arredonda para inteiro menor
>>ceil(x) -> arredonda para inteiro maior
>>rem(x,y) -> retorna o resto da divisão 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
Funções Embutidas
Funções para Cálculo:
>>syms t % cria uma variável simbólica x
>>diff(t) % deriva a função entre parênteses
>>int(t) % integra a função entre parênteses
>>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 função y(t)
>>[autovetor autovalor] = eig(M) % retorna os autovetores e autovalores de M
Casting
Uma forma de mudar o tipo de uma variável, não é uma transformação.
>>A = 2
>>int(A)
>>int8(A)
>>float(A)
>>char(A)
>>boolean(A)
Transformações de variáveis
O MATLAB possui alguma funções embutidas de transformação.
>>A = 2
>>num2str(A) % transforma um número em string
>>str2num(A) %transforma uma string em um número
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
Operações com vetores:
Para acessar um elemento especifico de um vetor é necessário informar o nome
da variável e o índice dentro do parêntese exemplo:
>>Vet(2)
Com isso também se pode alterar o valor do elemento da variável :
>>Vet(2) = 5 %Aqui esta sendo atribuído o valor 5 no índice 2 do vetor Vet
As operações aritméticas entres vetores são 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
concatenação 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
Operações com matrizes:
Para acessar um elemento especifico de uma matriz é necessário informar o
nome da variável e os índices dentro do parêntese exemplo:
>> M(2,3)
Com isso também se pode alterar o valor do elemento da variável :
>>M(2,3) = 5 %Aqui esta sendo atribuído o valor 5 na linha 2 coluna 3
As operações aritméticas entres vetores são feitas de forma comum:
>>Ma+Mb
Matrizes
Operações 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 múltiplos 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)
Função
Criar uma função:
>>edit -> abre o editor
Dentro do editor incia-se a função desta forma:
function [out] = nomef(in)
%function -> comando para dizer que uma função
%out -> parâmetro de saída
%nomef -> nome da função
%in -> parâmetro de entrada
Obs.: O script deve ter o mesmo nome da função ao salvar.
Deve-se indicar a pasta onde o script foi salvo.
Função
Entrada de dados:
>>num = input(‘Digite seu numero preferido: ’)
>>nome = input(‘Digite seu nome: ’,’s’) % e necessário colocar o ‘s’ para char e strings
Saída de dados:
>>disp(‘Olá Mundo’)
>>fprintf(‘Bem vindo %s \n’,nome) % semelhante ao printf do C
Função
Exemplo:
%Este é o programa principal para o cálculo da área do círculo
raio = leraio;
area = calcarea(raio);
exibearea(raio,area)
function raio = leraio
% Esta função solicita ao usuário a digitação do raio
disp('Quando solicitado, informe o valor do raio em cm.')
raio = input('Digite o raio: ');
Função
function area = calcarea(raio)
% Esta função calcula a área de um círculo
area = pi * raio * raio; % ou tb area = pi*power(raio,2);
function exibearea(raio,area)
% Esta função exibe a área do círculo
fprintf('Para um círculo de raio igual a %.2f cm\n',raio)
fprintf('a área equivale a %.2f cm quadrados.\n',area)
Condicional
Uso do if:
if condição
ação
end
Uso do if-else:
if condição
ação1
else
ação2
end
Condicional
Uso do if-else aninhadas:
Condicional
switch expressão
case caso1
ação1
case caso2
ação2
case caso3
ação3
...
otherwise
açãon
end
Estruturas de Repetição
Uso do for:
for variável_de_controle = faixa
corpo_do_laço
end
Exemplo:
>> for i = 1:5
fprintf('%d ',i)
end
Estruturas de Repetição
Uso do while:
while condição
ação
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 Repetição
Exemplo:
% Este é o programa principal para o cálculo da área do retângulo
[base,altura] = ledimensoes;
exibearearetangulo(base,altura)
function [b,h] = ledimensoes
% Esta função solicita ao usuário a digitação da base e da altura
b = input('Digite a base: ');
h = input('Digite a altura: ');
Estruturas de Repetição
function exibearearetangulo(bas,alt)
% Esta função exibe a área do retângulo.
% Ela chama uma subfunção para calcular a área.
area = calcarearetangulo(bas,alt);
fprintf('Para um retângulo de base %.2f e altura %.2f\n',bas,alt)
fprintf('a área equivale a %.2f.\n',area)
function area = calcarearetangulo(bas,alt)
% Esta subfunção calcula a área do retângulo.
area = bas * alt;
Estruturas de Repetição
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 Repetição
function escolha = eopcoes
% Exibe o menu de opções
escolha = menu('Escolha uma opção',‘Área Circulo',‘Área Retângulo',...
'Sair do programa');
Manipulação de Arquivo em Disco
Gravar em disco:
>>dados = M+M’
>>save testfile.dat dados –ascii
Leitura do disco:
>>load testfile.dat
>>disp(testfile)
Regravação em disco:
>>Mat = eye(3);
>>save testfile.dat Mat –ascii -append
Gráficos
Como plotar o gráfico:
Primeiramente, deve-se criar dois vetores que armazenem, respectivamente, os valores
das variáveis “X” e “Y” que serão os eixos do gráfico. Então, o comando a ser dado é:
>> plot(x,y,’Opções de Estilo’)
Plotando uma função:
Uma outra maneira para se plotar um gráfico no MATLAB é usando o comando “fplot”. Ele
plota diretamente uma função dada. Seu formato é:
>> fplot(‘função’,[intervalo de valores], opções de estilo);
Exemplo:
>> fplot('cos(x)',[0,pi],'green')
Gráficos
Gráficos
Mais de um gráfico na mesma janela:
Figure: esse comando abre uma nova Figure Window, onde o próximo gráfico 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 são gerados na mesma janela. Ou seja, ele
possibilita que várias curvas sejam mostradas num mesmo gráfico.
>>hold on
>>plot(x,y)
>>plot(w,z)
>>hold off
Gráficos
Subplot: o comando subplot permite que vários gráficos sejam mostrados separadamente
numa mesma Figure Window. Com ele, aparecerão 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)
Gráficos
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)
Gráficos
Comandos auxiliares:
Title: O comando title insere um título à última Figure Window aberta.
>>title(‘titulo desejado’)
Xlabel: O comando xlabel permite que o eixo das abscissas do gráfico seja identificado.
>>xlabel(‘identificação abscissas’)
Ylabel: O comando ylabel permite que o eixo das ordenadas do gráfico seja identidifcado.
>>ylabel(‘identificação ordenadas’)
Text: O comando text insere um texto digitado pelo usuário numa determinada posição.
>>text(x,y,’texto desejado’)
Gráficos
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)')
Gráficos
Exemplo:
>> syms t;
>> f = 2*t^2+2*t+1
>> ezplot(f) %plota uma expressão alfanumérica
Gráficos
Exemplo:
>>clf %Limpa os gráficos 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