690 likes | 866 Views
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 ;.
E N D
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 - CommandHistory • Mostra o histórico de todos os comandos realizados na commandwindow
Interface - Workspace • Mostra todas as variáveis criadas e seus respectivos tipos
Interface - CommandWindow • 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 -> CommandWindow-> NumericFormat
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 (commandwindow): 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 = ~a display(a); //a = 0;
Variáveis, funções ecomandos 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 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 • '' Singlequotationmark • %% Percentcharacter • \\ Backslash • \a Alarm • \b Backspace • \f Formfeed • \n Newline • \r Carriagereturn • \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.
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 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 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 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~=b • Variável lógica pré-declarada: L = true Ps: 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 for Ex: for k=2:x-1 if (mod(x,k) == 0) break end end • continue – pula para a próxima iteração Ex: 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