Matlab Mini Curso PET 2012
Introdução Software matlab – características gerais Apresentação da interface Variáveis, funções e comandos básicos Linguagem de programação Matlab
Interface - Current Folder Mostra todos os arquivos atuais na pasta Matlab;
Interface - Command History Mostra o histórico de todos os comandos realizados na command window
Interface - Workspace Mostra todas as variáveis criadas e seus respectivos tipos
Interface - Command Window Terminal e janela de realização de comandos individualmente
Interface - Editor Janela de criação de programas e funções Matlab
Variáveis, funções e comandos básico Variáveis sempre definidas como matrizes de dimensão N
Variáveis, funções e comandos básicos Sem necessidade de especificar tipo de variável Variável recebe tipo de acordo com valor recebido: valor numérico – Double (padrão) ‘texto’ - char true, false, comparação - logical @função – function_handle
Variáveis, funções e comandos básicos Mudar exibição das variáveis numéricas: File -> Preferences -> Command Window-> Numeric Format
Variáveis, funções e comandos básicos - funções Funções são utilizadas da mesma forma que em C#, C++, Java: Função com retorno: x = função(parâmetros); Ex: x = cos(3.14) x = -1 Principais funções matemáticas: sin, cos, tan, sind, cosd, tand, asin, acos, atan, log, log2, log10, sqrt, int, diff,
Variáveis, funções e comandos básicos Criar um programa para criar duas variáveis numéricas (a=4 e b=5), uma outra que recebe a raiz da soma delas (c=sqrt(a+b)) e a seguir, imprimir o resultado no terminal (command window): a = 4; b = 5; c = sqrt(a+b); display(c);
Variáveis, funções e comandos básicos - logical Variáveis lógicas -> a = true, a = false, a = comparação Ex: b = 3; c = 4; a = (b<c); display(a); //a = 1; a = ~a display(a); //a = 0;
Variáveis, funções e comandos básicos - logical
Variáveis, funções e comandos básicos - logical
Variáveis, funções e comandos básicos - complexos Unidade imaginária: “i” ou “j” Ex: a = 3 + 4*i a = 3.0000 + 4.0000i Comandos: imag(a) = 4 real(a) = 3 abs(a) = 5 angle(a) = 0.9273
Variáveis, funções e comandos básicos – i/o Funções de saída de dados no terminal: display(x) – exibe o nome da variável e seu conteúdo. display(‘Texto’) – exibe o texto inserido. fprintf(‘Texto’) – exibe o texto inserido Funciona da mesma forma que a função ‘printf’ da linguagem C# Permite exibir texto e variáveis simultaneamente.
Variáveis, funções e comandos básicos - fprintf '' Single quotation mark %% Percent character \\ Backslash \a Alarm \b Backspace \f Form feed \n New line \r Carriage return \t Horizontal tab \v Vertical tab
Variáveis, funções e comandos básicos – i/o Função de entrada de dados: input x = input(‘Texto de orientação: ‘); x receberá um valor numérico ou uma expressão digitada pelo usuário. Ex: 23.124; 34+4*23; a+b^c+3 (a, b, c = variáveis já declaradas no programa) x = input(‘Texto de orientação: ‘, ‘s’); x receberá a entrada do usuário como uma string.
Variáveis, funções e comandos básicos
Matrizes e Programação Declaração de vetores e matrizes Manipulação Funções
Matrizes e Programação - Declaração Matriz declarada da mesma forma que variáveis, com valores colocados entre colchetes [] Valores na coluna seguinte são separados por (,) Valores na linha seguinte são separados por (;) Ex: a = [1, 2, 3; 4, 5, 6; 7, 8, 9] a = 1 2 3 4 5 6 7 8 9
Matrizes e Programação - Declaração Ferramenta ‘:’ Ex: a = 1:5 a = 1 2 3 4 5 a = 0:0.1:1 a = 0.1 0.2 0.3 (...) 0.8 0.9 1 a = [1:3 ; 4:6; 7:9] a = 1 2 3 4 5 6 7 8 9
Matrizes e Programação - Declaração Exercício: Construir uma matriz 3x5, em que a lei de formação da primeira linha é seno, a segunda é cosseno e a terceira é raiz quadrada. Utilize para cada linha o vetor v = 0:0.25:1 a = 0 0.2474 0.4794 0.6816 0.8415 1.0000 0.9689 0.8776 0.7317 0.5403 0 0.5000 0.7071 0.8660 1.0000
Matrizes e Programação - Manipulação Acessando elemento: x(linha,coluna) = an Acessando linha: x(linha, :) = [a1, a2, a3, ... , an] Acessando coluna: x(: , coluna) = [a1; a2; a3; ... ; an] Apagando linha ou coluna: x(linha, :) = [ ] x(coluna,:) = [ ]
Matrizes e Programação - Manipulação Exercício: Criar um programa que calcule a distância entre dois pontos. P1 = (1,5), P2 = (4,9) R: d = sqrt(sum(P1-P2)); d = 5
Matrizes e Programação - Manipulação Indexação de elementos:
Matrizes e Programação - Manipulação Exercício: Resolver o seguinte sistema linear: x + 10y – 12z = 120 4x – 2y – 20z = 60 -x + y + 5z = 10 Matriz inversa: inv(A) Escalonamento: rref(A) Determinante: det(A) Resp: x = 340; y = 50; z = 60
Matrizes e Programação - Manipulação Resolver o sistema: 5j*x + (2-6j)*y + 7*z = log5(20) 9*x – pi*y + sqrt(2)*z = 10.569 (1/3)*x + sen(30)*y + atan(2)*z = 21.3
Matrizes – funções úteis
Matrizes – funções úteis
Matrizes – funções úteis
Matrizes multidimensionais
Matrizes multidimensionais Exercício: Uma empresa apresenta as seguintes tabelas de Produção x Hora x Mês. Salve-as em uma única variável. A = [30, 15; 20, 36]; A(:,:,2) = [12, 17; 9, 15]; A(:,:,3) = [21, 41; 45, 39];
Matrizes de caracteres Strings declaradas com aspas simples: nome = ‘Joao’; sobrenome = ‘da Silva’; Juntar ambas strings numa matriz: horizontalmente: (matriz 1x12) completo = [nome, sobrenome]; completo = strcat(nome, sobrenome); verticalmente: (matriz 2x8) completo = strvcat(nome, sobrenome);
Programação MATLAB Arquivos *.m Podem ser tanto Scripts quanto Functions: Script – arquivo contendo simplesmente uma sequência de comandos do MATLAB. Utiliza e cria variáveis do workspace Function – faz uso de suas próprias variáveis locais, recebem parâmetros externos e retornam valores.
Programação MATLAB Estruturas de decisão - if Executa teste lógico com expressão. Se resultado = 1 (true) : executa comandos Se resultado = 0 (false) : pula para próxima expressão Forma geral: if (expressão1) comandos1; elseif (expressão2) comandos2; else comandos 3; end
Programação MATLAB Estruturas de decisão - if if (a == 0) display('zero'); elseif (a >= b) display('maior'); display(a); elseif (L) fprintf('Valor de a: %f, valor de b = %f\n', a, b); c = a+b; display(c); else c = a+b+4; end
Programação MATLAB Estruturas de decisão - if Exercício: Fazer um programa que receba do usuário um número e em seguida diga se o número é par ou ímpar. Caso não seja um número inteiro, imprima mensagem de erro.
Programação MATLAB Estruturas de decisão - for Realiza um certo conjunto de comandos numa pré-determinada quantidade de vezes. Forma geral: for x = valor comandos; end
Programação MATLAB Estruturas de decisão - for valor : pode ser vetor ou matriz numéricos x = vetor: a cada iteração, x receberá o valor de cada elemento do vetor. Ciclo termina ao chegar no último elemento. x = matriz: a cada iteração, x receberá um ‘vetor coluna’, com o valor de cada coluna da matriz. Ciclo termina ao chegar na última coluna.
Programação MATLAB Estruturas de decisão - for Exemplos: for x = 0:0.1:1 soma = soma + x; end for k = eye(3) display(k);
Programação MATLAB Estruturas de decisão - for Exercício: Criar um programa que mostre todos os divisores de um número recebido do usuário. Criar um programa que diga se o número digitado é primo ou não.
Programação MATLAB Estruturas de decisão - while Repetidamente executa comandos até que o valor da expressão seja falso Forma geral: while (expressão) comandos; end expressão: comparação: a<b, a>b, a==b, a~=b Variável lógica pré-declarada: L = true Ps: Parar programa: ctrl+c
Programação MATLAB Estruturas de decisão - while Exemplo: while (a<=b) a = a*2; b = b + 1; display(a); display(b); end
Programação MATLAB Estruturas de decisão - while Exercício: Escreva um programa que calcule sucessivamente a raiz quadrada de números introduzidos pelo utilizador até que este indique um número igual a 1. Utilize a função sqrt(x) para calcular a raiz quadrada e input(‘x=?’) para ler os valores. Mostrar ao fim da execução o número de iterações.
Programação MATLAB Estruturas de decisão - fluxo Ferramentas de mudança do fluxo: break – encerra o loop while ou for Ex: for k=2:x-1 if (mod(x,k) == 0) break end continue – pula para a próxima iteração Ex: for k = 1:x fprintf('%.0f, ', k); continue fprintf('\n');
Programação MATLAB Estruturas de decisão - switch Mecanismo de escolha entre várias opções, baseado em comparação de igualdade. Executa o primeiro caso em que a comparação é satisfeita. Imediatamente após executar o caso escolhido, o switch é encerrado. Caso nenhum dos casos satisfaça a condição, é executado o ‘otherwise’.
Programação MATLAB Estruturas de decisão - switch Forma geral: switch variável_teste case ‘valor_1’ comandos_1; case ‘valor_2’ comandos_2; (...) otherwise comandos_n; end
Programação MATLAB Estruturas de decisão - switch Exemplo: metodo = ‘Bilinear'; switch lower(metodo) case {'linear','bilinear'} display('Método é linear.'); case 'cubico' display('Método é cúbico.'); case 'mais proximo' display('Método é por mais próximo.'); otherwise display('Método desconhecido.'); end
Programação MATLAB Estruturas de decisão - switch Exercício: criar um programa que, de acordo com a entrada do usuário, escolha entre executar um dos programas criados anteriormente: número primo, divisores, par ou ímpar. Caso a entrada seja inválida, mostrar mensagem de erro.
Programação MATLAB - Funções Formam outro tipo de arquivo *.m Não podem ser declaradas na Command Window Recebem e retornam parâmetros Fazem uso de variáveis locais próprias Só é possível chamar funções que estejam incluídas na pasta aberta na janela “Current Folder”
Programação MATLAB - Funções Declaração: function [saída1, saída2, ...] = nome_função (ent1, ent2, ...) comandos; end Utilização: [var1 var2 ...] = nome_função(par1, par2, ...)
Programação MATLAB - Funções saída1, saída2, ... variáveis que receberão os valores que serão retornados pela função ent1, ent2, ... variáveis que receberão os parâmetros enviados para a função var1 var2 ... variáveis que receberão os valores retornados pela função par1, par2, ... parâmetros enviados para a função
Programação MATLAB - Funções Exemplo: Criar uma função que receba o logaritmando e a base e retorne o logaritmo correspondente. function logarit = logbase (logarit, base) a = log(logarit); b = log(base); logarit = a/b;
Programação MATLAB - Funções Exercícios: Criar uma função para calcular a média de n valores. Criar uma função que encontre o mdc (máximo divisor comum) dentre diversos números. Criar uma função que encontre o mmc (mínimo múltiplo comum) entre n números.
Programação MATLAB - Funções Faça um script que leia um vetor com as notas de uma turma e que calcule o seguinte: a) Percentagem das notas positivas (> = 80); b) Percentagem das notas negativas (< 40 ); c) Média das notas positivas; d) Média das notas negativas; e) Média geral das notas. Use como vetor de notas: [ 55 75 93 100 86 15 23 39 81 78.5 63 0 84 67 71 10 89 9 72 51.5]
Programação MATLAB - Funções Faça um script que leia um vetor com as notas de uma turma e que calcule o seguinte: a) Percentagem das notas positivas (> = 80); b) Percentagem das notas negativas (< 40 ); c) Média das notas positivas; d) Média das notas negativas; e) Média geral das notas. Use como vetor de notas: [ 55 75 93 100 86 15 23 39 81 78.5 63 0 84 67 71 10 89 9 72 51.5]
Gráficos 2D – função plot plot(a, b) desenha um gráfico 2D com os vetores ‘a’ e ‘b’, de mesmo tamanho, associando cada par de elementos de mesmo endereço a um ponto do gráfico. plot(x1, y1, x2, y2, ...) desenha várias linhas no mesmo gráfico ‘Show plot tools and dock figures’ ferramenta de edição do gráfico desenhado
Gráficos 2D – função plot Exemplo: x = -2:0.01:2; y = x.^2; plot(x, y);
Gráficos 2D – função plot Exemplo: x = -pi:0.01:pi; y1 = sin(x); y2 = cos(x); plot(x, y1 ,x , y2)
Gráficos 2D – função plot x=1:1000; for k=1:5 y(k,:)=k*log(x); end plot(x,y)
Matemática simbólica Cálculos realizados apenas com símbolos matemáticos Possibilidade de utilizar funções como diff(derivada), int(integral), fourier(transformada de fourier), etc syms x cria uma variável simbólica x X = sym(‘ [a,b;c,d]’) cria uma matriz simbólica X contendo as variáveis simbólicas a, b, c, d
Matemática simbólica - declaração Exemplo: syms x; x = x^2; y = int(x); % y = x^3/3 y = int(x,1,3); % y = 26/3 y = diff(x); % y = 2*x
Matemática simbólica - declaração Exemplo: M = sym(‘[a,b;c,d]’); M2 = 2*M; [ 2*a, 2*b] [ 2*c, 2*d] d = det(M2); 4*a*d - 4*b*c
Estruturas heterogêneas células (cell) Capazes de armazenar a maioria das estruturas conhecidas no MATLAB em uma única variável: - números - caracteres - strings - matrizes numéricas - matrizes de caracteres Útil para organizar e armazenar estruturas de diferentes tipos. Facilidade de manipular strings.
Estruturas heterogêneas células (cell) Declaração: A = { ... } ‘ , ’ – separa colunas ‘ ; ’ – separa linhas Manipulação: A(x,y) = (...) - acessar linha ‘x’, coluna ‘y’ Ps: ferramentas de acesso de elementos funciona semelhante ao de matrizes normais.