• Software matlab – características gerais • Apresentação da interface • Variáveis,...
Transcript of • Software matlab – características gerais • Apresentação da interface • Variáveis,...
Matlab
Mini CursoPET 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 ecomandos 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 ecomandos básicos
• Mudar exibição das variáveis numéricas:• File -> Preferences -> Command Window-> Numeric Format
Variáveis, funções ecomandos 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 ecomandos 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 ecomandos 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 = ~adisplay(a); //a = 0;
Variáveis, funções ecomandos básicos - logical
Variáveis, funções ecomandos básicos - logical
Variáveis, funções ecomandos básicos - complexos
• Unidade imaginária: “i” ou “j”• Ex: a = 3 + 4*ia = 3.0000 + 4.0000i• Comandos:imag(a) = 4 real(a) = 3abs(a) = 5 angle(a) = 0.9273
Variáveis, funções ecomandos 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 ecomandos 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 ecomandos 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 ecomandos 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 1a = [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 = 1204x – 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 MATLABEstruturas de decisão - if
• Executa teste lógico com expressão. Se resultado = 1 (true) : executa comandosSe 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 MATLABEstruturas 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; display(c);end
Programação MATLABEstruturas 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 MATLABEstruturas 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 MATLABEstruturas 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 MATLABEstruturas de decisão - for
• Exemplos:for x = 0:0.1:1
soma = soma + x;end
for k = eye(3)display(k);
end
Programação MATLABEstruturas 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 MATLABEstruturas 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~=bVariável lógica pré-declarada: L = truePs: Parar programa: ctrl+c
Programação MATLABEstruturas de decisão - while
• Exemplo:
while (a<=b)a = a*2;b = b + 1;display(a);display(b);
end
Programação MATLABEstruturas 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 MATLABEstruturas de decisão - fluxo
• Ferramentas de mudança do fluxo: break – encerra o loop while ou forEx: for k=2:x-1 if (mod(x,k) == 0) break end end continue – pula para a próxima iteraçãoEx: for k = 1:x if (mod(x,k) == 0) fprintf('%.0f, ', k);
continue end
fprintf('\n');end
Programação MATLABEstruturas 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 MATLABEstruturas 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 MATLABEstruturas 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 MATLABEstruturas 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);endplot(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/3y = int(x,1,3); % y = 26/3y = 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êneascé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êneascé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.