Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

53
Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo

Transcript of Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Page 1: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Minicurso MATLAB Básico

Palestrantes

Rafael Rodrigues de Araujo

Marco Aurélio Amorim Biazollo

Page 2: 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.

Page 3: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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.

Page 4: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 5: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 6: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 7: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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.

Layout

Page 8: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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.

Help

Page 9: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 10: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 11: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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.

Dados

Page 12: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 13: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Funções Format

Page 14: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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 com escalares

Operações SímboloAdição +

Subtração -Multiplicaçã

o*

Divisão / ou \Potenciação ^

Page 15: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 16: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 17: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 18: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 19: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Funções Embutidas

Page 20: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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)

Casting

Page 21: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Transformações de variáveis

Page 22: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 23: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 24: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 25: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Resposta:

>>V = [va;vb]

>>v = va./vb

>>v = [va(3:4);vb(3:4)]

Vetores

Page 26: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 27: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 28: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 29: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 30: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Resposta:

>> M = [1:3;4:6;7:9]

>> M(3,:) = []

>> M(2,:) = M(2,:)*2

>> [lin col]=find(mod(M,2)==0)

Matrizes

Page 31: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 32: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 33: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 34: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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)

Função

Page 35: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Uso do if:

if condição

ação

end

Uso do if-else:

if condição

ação1

else

ação2

end

Condicional

Page 36: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Uso do if-else aninhadas:

Condicional

Page 37: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

switch expressão

case caso1

ação1

case caso2

ação2

case caso3

ação3

...

otherwise

açãon

end

Condicional

Page 38: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 39: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 40: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 41: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 42: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 43: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

function escolha = eopcoes

% Exibe o menu de opções

escolha = menu('Escolha uma opção',‘Área Circulo',‘Área Retângulo',...

'Sair do programa');

Estruturas de Repetição

Page 44: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Manipulação de Arquivo em Disco

Page 45: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 46: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Gráficos

Page 47: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 48: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 49: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 50: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 51: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Page 52: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

Exemplo:

>> syms t;

>> f = 2*t^2+2*t+1

>> ezplot(f) %plota uma expressão alfanumérica

Gráficos

Page 53: Minicurso MATLAB Básico Palestrantes Rafael Rodrigues de Araujo Marco Aurélio Amorim Biazollo.

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

Gráficos