MATLAB - Matrix Laboratory Adaptado de Profa

Slides:



Advertisements
Apresentações semelhantes
Continuidade: sem interrupções
Advertisements

Carlos André Vaz Junior
O Maple na Aula de Matemática
MATLAB Comandos Básicos.
Derivadas Já definimos o coeficiente angular de uma curva y = f(x) no ponto onde x = x0. Chamamos esse limite, quando ele existia, de derivada de f em.
Informática Aplicada.
Introdução a Programação Renata Freire
Introdução à Computação Gráfica Geometria
Tutorial de exercícios Estatística Básica Utilizando o Excel Delamaro e Marins 2a. Aula - Estatística Descritiva.
Curso MATLAB 6 Instrutor: Marcelo Escobar Complementação da Introdução.
Iniciação ao MatLab Profa Dra. Rossana Lott Rodrigues
The language of tecnical computing
Filtro no Excel PUCRS Profa. Jiani Microinformática
Lógica de Programação Módulo II
GET – Engenharia de Produção
Aula 4: Matrizes e Operações Matriciais
Profa. Regiane Klidzio URI Campus Santo Ângelo/RS
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Folha de Cálculo Como Dar Nome a Uma ou mais Células?
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Matlab– Noções introdutórias
Matemática para Economia III
Análise de modelos matemáticos por meio de simulações computacionais
Introdução ao MatLab Aula 4
Fábio de Oliveira Borges
MÉTODOS NUMÉRICOS APLICAÇÃO NO MATLAB
Matlab Mini Curso PET 2012.
Monitoria de Sistemas Inteligentes
Word Prof. Gláucya Carreiro Boechat
Introdução ao MATLAB 5.3 para Hidrólogos
Sistemas de Controle de Aeronaves II
Linguagem e Ambiente Scratch
Minicurso MATLAB Básico
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
Matemática para Economia III
Unidades de Gestão: gep | getec | gead
Algumas notas sobre a linguagem de programação C
Criando uma formatação
Aula 14 Disciplina: Sistemas de Controle 1 - ET76H
Programação e Aplicações Gráficas
Introdução à Linguagem JavaScript
Introdução ao MATLAB 5.3 para Hidrólogos
Curso de modelagem numérica computacional com o software livre (Octave) Instituto Federal de Educação, Ciência e Tecnologia do Piauí –IFPI, campus Parnaíba.
Monitoria de Sistemas Inteligentes IF684
MatLab (Matrix Laboratory)
MATLAB - Matrix Laboratory Adaptado de Profa
Haskell Programação Funcional Diego Lima Rubem Moreira.
Computação Eletrônica Variáveis Reais e Booleanas.
Iº Workshop Linux da Unijorge
Algoritmos.
MATLAB - Matrix Laboratory Adaptado de Profa
Introdução à Programação
Programação em C Aula 4.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
©Prof. Lineu MialaretAula 4 - 1/27Matemática Discreta I Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba.
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Cálculo Diferencial e Integral I
Andréa Iabrudi 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I.
Microsoft Excel.
Introdução ao curso de Matemática Simbólica no MatLab
Tipos de Dados, Variáveis, Expressões Lógicas e Aritméticas
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
MatLab (Matrix Laboratory)
Profª Dalila Borges Justino Lins
Pesquisa Aplicada à Computação utilizando MatLab®
TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO FOLHA DE CÁLCULO FÓRMULAS, REFERÊNCIAS E FUNÇÕES.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
GEOMETRIA ANALITICA VETORES.
Introdução a Funções Reais
Algoritmos Grupos de Slides No 2. Prof. SIMÃO Estrutura de decisão simples “Se” if end Feito por Prof. Jean Marcelo SIMÃO e revisado por Prof. Luis Alberto.
Transcrição da apresentação:

MATLAB - Matrix Laboratory Adaptado de Profa MATLAB - Matrix Laboratory Adaptado de Profa. Carla Salso Freitas e profa. Luciana Nedel Por Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Programação Diversos níveis: linguagem de máquina linguagem assembler linguagem C planilhas eletrônicas (Excel) pacotes científicos (MATLAB, Scilab, Mathematica) Qual escolher? É preciso analisar as necessidades MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Software voltado ao cálculo numérico Integra: análise numérica; cálculo com matrizes; processamento de sinais; construções com gráficos. Elemento básico de informação: MATRIZ. Ótima performance. Alto nível. (www.mathworks.com) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Pacotes científicos MATLAB (www.mathworks.com) linguagem de programação ambiente para desenvolvimento sistema gráfico funções matemáticas interface com linguagens de programação (C, FORTRAN) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Pacotes científicos SCILAB sistema aberto (freeware) desenvolvido pelo INRIA (instituto francês) implementa um subconjunto das funções do MATLAB Disponível em: http://scilabsoft.inria.fr/ MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Apresentação Software para análise numérica Cálculo com matrizes Processamento de sinais Construção de gráficos Problemas expressos numa forma mais próxima da notação matemática Interpreta comandos do usuário dados na janela de comando. Experimente: >>sqrt(64) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Introdução Trabalha apenas com um tipo de objeto: Matrizes Os elementos das matrizes podem ser números complexos Escalares são matrizes 1x1 ex: >> a= 6 Vetores são matrizes 1xN ou Nx1 Entrando com uma matriz (3 maneiras): >>A = [1 2 3 4 5 6 7 8 9] >>A = [1 2 3;4 5 6;6 7 8] através de um arquivo (ex: gera.m) >>gera MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Matriz A = [1 2 3;4 5 6;7 8 9] 1 2 3 4 5 6 7 8 9 Diferencia maiúsculas de minúsculas! MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Introdução Se no final da linha for colocado um “;”, o Matlab executa o comando mas não mostra o resultado >>A = [1 2 3;4 5 6;7 8 9] >>B = [1 2 3;4 5 6;7 8 9]; Elementos das matrizes podem ser uma expressão >>x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2] resulta em: x = -1.3000 1.4142 23.0400 Elementos são referenciados por índices entre parênteses: x(6) = 5 resulta em: x = -1.3000 1.4142 23.0400 0 0 5 MATLAB - INF01040 - Profa. Patrícia Jaques

Acessando um elemento da Matriz 1 2 3 1 2 3 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 A(2,1)=10 10 A(2)=10 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Introdução Grandes matrizes podem ser geradas a partir de pequenas: >>r=[10 11 12]; O comando abaixo anexa à matriz A o vetor r >>A=[A;r] A= 1 2 3 4 5 6 7 8 9 10 11 12 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Introdução Pequenas matrizes podem ser extraídas de grandes matrizes usando “:” >>A=A(1:3,:); seleciona as 3 primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua forma original. A= 1 2 3 4 5 6 7 8 9 10 11 12 MATLAB - INF01040 - Profa. Patrícia Jaques

Variáveis e informações da área de trabalho Variáveis são declaradas na forma: variável = expressão “ans” ® (answer) variável default caso um nome seja omitido. Se a expressão é tão grande que não cabe em uma linha, pode-se continuar a expressão na próxima linha usando um espaço em branco e 3 pontos: >> s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 … -1/8 + 1/9 - 1/10 + 1/11 - 1/12 + 1/13; MATLAB - INF01040 - Profa. Patrícia Jaques

Variáveis e informações da área de trabalho O comando “who” ® lista as variáveis da área de trabalho “whos” mostra detalhes sobre as variáveis clear; clear var; Teclas   para retomar comandos digitados anteriormente MATLAB - INF01040 - Profa. Patrícia Jaques

Números e expressões aritméticas Notação decimal convencional Ex: 3 -99 0.00001 9.6374586 1.602E-20 6.06375e23 Operadores: ^ exponenciação / divisão à direita \ divisão à esquerda * multiplicação + adição - subtração MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Números complexos Número complexo  z= a + b*i onde i= √-1 Funções “i” >> z= 3 + 4 * i Matrizes complexas permitem também a forma: >> A= [1 2; 3 4]+i*[5 6; 7 8] Caso “i” seja usado como variável e tenha seu valor modificado, pode-se criar uma nova unidade complexa: >> ii = sqrt(-1) >> z = 3 + 4 * ii MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Formatos de saída O comando format modifica o modo como as matrizes são mostradas format short (default) 1.3333 short e 1.3333e+000 long 1.33333333333333 long e 1.33333333333333e+000 hex 40040000000000000 rat 4/3 bank 1.33 + + Exemplo: >>a=2/3 >>format bank >>a MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Help O comando de ajuda “help” fornece informações sobre os tópicos help <tópico> -> mostra comandos relacionados ao tópico help <comando> -> mostra detalhes sobre o comando Exemplo: >> help format MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Funções Conjunto extenso de funções: matemática elementar funções especiais matrizes elementares matrizes especiais decomposição e fatorização de matrizes análise de dados polinômios solução de equações diferenciais equações não-lineares e otimização integração numérica processamento de sinais MATLAB - INF01040 - Profa. Patrícia Jaques

Operacões com matrizes Transposta ® indicada pelo caracter apóstrofo '. A=[1 2 3;4 5 6;7 8 9]; B=A' B= 1 4 7 2 5 8 3 6 9 det(A) Determinante da matriz A. inv(A) Inversa da matriz A. A A’ 1 2 3 4 5 6 7 8 9 1 4 7 2 5 8 3 6 9 MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com matrizes Adição e subtração ® indicada pelos sinais “+” e “-” respectivamente. C=A+B; Essas operações só são definidas para matrizes com a mesma dimensão. B=A+A’ A A’ B 1 2 3 4 5 6 7 8 9 1 4 7 2 5 8 3 6 9 2 6 10 14 18 + = MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com matrizes Multiplicação ® indicada por “*”. Só é válida quando a 2a. dimensão da 1a. matriz for igual a 1a. dimensão da 2a. matriz. mxn e nxp Ex: >> A*B MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com matrizes A multiplicação de escalar por matriz e vice-versa também é válida. Ex: >> B=2*A A B 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 = 2* MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com matrizes Divisão ® indicada por “/” ou “\”. Se A for quadrada, A\B e B/A correspondem a inv(A)*B e B*inv(A) respectivamente A\B = inv(A)*B B/A = B*inv(A) Em geral: X = A\B ® A*X = B X = B/A ® X*A = B MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com matrizes Exponenciação -> indicada por “^”. A^p eleva A à p-ésima potência se A for quadrada e p for um escalar. Se p é inteiro maior do que 1, isso é feito através de múltiplas multiplicações. MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com conjuntos São operações aritméticas realizadas elemento por elemento da matriz. Usa-se os mesmos caracteres das operações usuais precedidos por um ponto (“.*”, “./”, “.\”, “.^”, “.'”) Exemplo: Crie duas matrizes quadradas a e b Faça: >>a*b >>a.*b MATLAB - INF01040 - Profa. Patrícia Jaques

Operações com conjuntos Operações comparativas (<, <=, >, >, ==, ~=) podem ser realizadas entre matrizes de mesma dimensão 1 para verdadeiro 0 para falso O resultado é uma matriz de 0s e 1s correspondendo a Falso e Verdadeiro & (e) e | (ou) também podem ser usados MATLAB - INF01040 - Profa. Patrícia Jaques

Manipulação de vetores e matrizes Gerando vetores: a declaração >>x = 1:5 gera o vetor linha x = 1 2 3 4 5 . (incremento de 1) Pode-se usar outros incrementos: >> y = 0:pi/4:pi y = 0.0000 0.7854 1.5708 2.3562 3.1416 A função k=linspace(0,1,6) gera um vetor linearmente espaçado de 0 a 1, contendo 6 elementos k = 0 0.2000 0.4000 0.6000 0.8000 1.0000 MATLAB - INF01040 - Profa. Patrícia Jaques

Manipulação de vetores e matrizes Elementos das matrizes: utiliza-se índices entre parênteses. >>A=[1 2 3;4 5 6;7 8 9]; >>A(3,3) = A(1,3) + A(3,1) A = 1 2 3 4 5 6 7 8 10 A(2,1) = 4 A(1:2, 2:3) = 0  elementos A(1,2), A(1,3), A(2,2), A(2,3) são zerados. A(:,3) = 0  elementos da terceira coluna são zerados. >>A(1:2,3)  especifica uma submatriz 2x1 com os 2 primeiros elementos da terceira coluna de A ans = 3 6 MATLAB - INF01040 - Profa. Patrícia Jaques

Manipulação de vetores e matrizes exclusão de linhas ou colunas atribuir [ ] à linha ou coluna A(:,3) = []  exclui terceira coluna da matriz A(1:2,:) = []  exclui duas primeiras linhas da matriz troca entre linhas ou colunas B = A (:, [1 3 2])  troca ordem das colunas 2 e 3. A = A ([3 2 1], :)  inverte ordem das linhas. concatenação formar matriz usando outras (inteiras ou partes) como elementos Ex.: sendo A = [1 2 3; 4 5 6; 7 8 9] uma matriz 3 x 3, A(1,:) = 1 2 3 e A(3,:) = 7 8 9 Então, B = [A(1,:); A(3,:)] é uma matriz 2 x 3 contendo a primeira e a terceira linhas de A. MATLAB - INF01040 - Profa. Patrícia Jaques

Funções de Construção de Matrizes É possível construir uma matriz a partir de blocos. Exemplo, se A é uma matriz 3 x 3, então B = [A, zeros(3,2); zeros(2,3), eye(2)] Matriz 5 x 5. B = 3 11 5 0 0 4 1 -3 0 0 6 2 1 0 0 0 0 0 1 0 0 0 0 0 1 Concatena na próxima linha próxima coluna A zeros(3,2) eye(2) zeros(2,3) MATLAB - INF01040 - Profa. Patrícia Jaques

Funções de Construção de Matrizes eye - matriz identidade eye(2) ans = 1 0 0 1 zeros - matriz de zeros zeros(2,3) ou zeros(2) 0 0 MATLAB - INF01040 - Profa. Patrícia Jaques

Funções de Construção de Matrizes ones - matriz de 1's ones(2,3) ou ones (2) ans = 1 1 rand - matriz gerada aleatoriamente rand(5,4) ou rand(2) 0.2026 0.8381 0.6721 0.0196 MATLAB - INF01040 - Profa. Patrícia Jaques

Funções de Construção de Matrizes diag - matriz diagonal Se x é um vetor, diag(x) é a matriz diagonal com x na diagonal; x=[1 2 3]; diag(x) Se A é uma matriz quadrada, então diag(A) é um vetor cujos componentes são os elementos da diagonal de A. A=[3 11 5; 4 1 -3; 6 2 1] diag(A) ® Tente também: diag(diag(A)) ans = 3 1 ans = 1 0 0 0 2 0 0 0 3 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques triu - parte triangular superior de uma matriz triu(A) ans = 3 11 5 0 1 -3 0 0 1 tril - parte triangular inferior de uma matriz tril(A) 3 0 0 4 1 0 6 2 1 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Exemplo a = 1 2 3 4 5 6 7 8 » b = [a(1:2,1:1), a(1:2,3:4) ; a(4:4,1:1), a(4:4,3:4)] b = 1 3 4 5 7 8 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Funções Escalares Algumas funções no Matlab operam essencialmente sobre escalares, mas operam sobre cada elemento se forem aplicadas a uma matriz. As funções escalares mais comuns são: sin - seno asin - arcoseno exp - exponencial abs - valor absoluto round - arredonda cos - cosseno acos - arco cosseno log - log natural sqrt - raíz quadrada floor - arredonda na direção de menos infinito tan - tangente atan - arco tangente rem - resto da divisão sign - função sinal ceil - arredonda na direção de mais infinito MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Funções Vetoriais Outras funções do Matlab operam essencialmente sobre vetores (linha e coluna) Mas em uma matriz m x n, agem sobre coluna por coluna para produzir um vetor linha com o resultado de sua aplicação para cada coluna. É possível operar sobre linha por linha transpondo-se a matriz, por exemplo: a = rand(5) mean(a)  média de cada coluna mean(a’)  média de cada linha MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Funções Vetoriais Outros exemplos de funções vetoriais são: max(a)  encontra o valor máximo [Y,I] = MAX(X) sum(a)  soma os elementos median(a)  mediana any(a)  true se existe um elemento diferente de zero min(a)  menor valor prod(a)  produto dos elementos all(a)  true se todos os elementos são diferentes de zero sort(a)  ordena em ordem crescente Exemplo: max(max(a)) max(a) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Exercícios criar matrizes A = [1 2 3 4 5 6 7 8 9] B = [1;2;3;4;5;6;7;8;9] C = [1 2 3;4 5 6;7 8 9] calcular A` B` C` digitar b B who whos clear B clc A,C calcular sum(A) sum(C) sum(C`) sum(C`)` diag(C) sum(diag(C)) sum(diag(fliplr(C))) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Exercícios calcular C s = C(1,3) + C(2,3) + C(3,3) C(1,3) + C(2,3) + C(3,3) + C(4,3) CC = C CC(4,3) = 1 CC clear CC clc calcular C(2,3) C(6) 1:10 c = 1:10 100:-7:50 pi c = 0:pi/4:pi c calcular C(1:3,3) s s = sum(C(1:3,3)) s = sum(C(:,3)) s = sum(C(:,end)) D = C(:,[1 3 2]) A + C C + 2 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Exercícios calcular C + D C - D clear who a = [8 1 6;3 5 7; 4 9 2] b = 2 * ones(3,3) a * b a .* b MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Exercício 9) Considere a seguinte matriz: 7.5   8.0   9.0 6.7   7.7   5.4 8.0   9.2   7.4 6.6   6.6   6.6 5.0   8.0   7.0 5.2   6.1   9.5 8.3   7.2  10.0 9.0   9.0   9.0 3.5   4.5   5.5 6.7   5.0   4.6 que corresponde a notas de provas de alunos (10 alunos). a) Calcule a nota final de cada aluno, como a média das 3 notas, sendo que a última nota tem peso 2. b) Calcule a média aritmética das notas da turma: média de cada prova e média das notas finais c) Use as funções adequadas para listar a menor nota final e a maior nota final. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - continuação

Anotando comandos usados diary nome do arquivo - cria arquivo texto no qual ficarão registrados os comandos e as variáveis subseqüentes. diary off - fecha arquivo e salva-o como texto. type nome do arquivo - apresenta na janela de comando todo o conteúdo do arquivo. é possível também abri-lo em editores de texto ASCII. MATLAB - INF01040 - Profa. Patrícia Jaques

Paginando saída na janela de comando more on - quando uma saída for muito extensa, mostra somente uma tela de cada vez. Enter  avança uma linha. Barra de Espaço  avança uma tela. q  pára de mostrar saída. more off - retorna ao modo normal (padrão). MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Salvando o Workspace File  Save Workspace As save nome do arquivo (salva no diretório corrente) File  Load Workspace load nome do arquivo (busca no diretório corrente) File  Set Path permite alterar diretório corrente MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Controle de fluxo Laço for >> for i=1:5 x(i)=i^2; end x = 1 4 9 16 25 >> for i=1:5 for j=1:5 a(i,j)=i+j; b(i,j)=i-j; end c=a+b; a = 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 6 7 8 9 10 b = 0 -1 -2 -3 -4 1 0 -1 -2 -3 2 1 0 -1 -2 3 2 1 0 -1 4 3 2 1 0 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Controle de fluxo Laço while a = 1; b = 15; while a<b clc a = a+1 b = b-1 pause(1) end disp(‘fim do loop’) if for i = 1:5 for j = 1:5 if i == j A(i,j) = 2; else if abs(i-j) == 1 A(i,j) = -1; else A(i,j) = 0; end MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Arquivos m são arquivos que contém comandos do MATLAB scripts não recebem argumentos de entrada nem retornam argumentos de saída. operam em dados do workspace. úteis para automatizar séries de passos que precisam ser executados várias vezes. funções podem receber e/ou retornar argumentos. variáveis internas são locais à função. úteis para estender a linguagem MATLAB. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Arquivos m 2 passos: criar arquivo .m usando um editor de texto. chamar o arquivo m da linha de comando, ou de outro arquivo m. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Arquivos m criando um arquivo m edit nome do arquivo ou File  New  M-File digitar código do script ou da função. File  Save As - escolher diretório corrente ou que esteja presente no search path do MATLAB. Search Path  referência para o MATLAB procurar os arquivos m. File  Set Path usando um arquivo m nome do arquivo MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Arquivos m Exemplo 1  script criar arquivo digitar código clear clc A = [1 2 3; 4 5 6; 7 8 9] B = A’ salvar como inicio.m executar na janela do MatLab >> inicio Comentários: % comentário de linha texto apos o % na mesma linha não será executado Exemplos: procbasico linhatri circulo malha MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Outros comandos Entrada de dados: Receber um dado numérico do usuário <variável> = input('<mensagem>'); Exemplo: n1 = input('Digite um numero: '); Entrada de dados: Receber um dado texto do usuário <variável> = input('<mensagem>', 's'); n1 = input('Digite seu nome: ', 's'); Mostrar um texto ou conteúdo de uma variável: disp('<mensagem>'); disp('Total calculado: '); disp(soma); Limpar a tela clc; MATLAB - INF01040 - Profa. Patrícia Jaques

Rotinas de Entrada/Saída TEXTREAD [N,F,S]=textread(’dados.txt',’%d %f %s') N= 6 5 3 F= 0.5000 0.3000 1.3340 S= ‘dd1’ ‘dd3’ ‘dd5’ dados.txt 6 0.5 dd1 5 0.3 dd3 3 1.334 dd5 For most users, the MATLAB functions load and save provide sufficient means of loading and saving data. Load and save assume data is stored in a platform independent binary data format with a file name ending in the .mat extension. These .mat or MATlab files are platform independent because they contain a machine signature in the file header. MATLAB checks the signature when it loads a file and, if a signature indicates that a file is foreign, performs the necessary conversion. The MATLAB load and save routines can be used to read and write both ASCII and binary data. These two commands are primarily used to read and write full-precision binary MATLAB format files. It is also possible to read and write ASCII files with these routines. The save command will create space or tab delimited files of either 8- or 16- digit ASCII form. The load command will read any MAT-file created on any platform or any ASCII file with numeric space or tab delimited data.

MATLAB - INF01040 - Profa. Patrícia Jaques Exercício Escreva um programa (arquivo-m) para: Ler um arquivo contendo os dados de temperaturas mínimas e máximas de 15 dias, no formato (%d %f %f) 1 15.9 31.9 Calcular a média, menor e maior temperatura (das temperaturas mínima e máxima) Listar os resultados MATLAB - INF01040 - Profa. Patrícia Jaques

Solução – exerciciotemp.m [dia,minima,maxima] = textread('dadostemp.txt','%d %f %f'); mediamin = mean(minima); mediamax = mean(maxima); minmin = min(minima); minmax = min(maxima); maxmin = max(minima); maxmax = max(maxima); disp (['Media das Minimas', mean(minima)]); disp (['Media das Maximas', mean(maxima)]); disp (['Menor Minima', min(minima)]); disp (['Menor Maxima', min(maxima)]); disp (['Maior Minima', max(minima)]); disp (['Maior Maxima', max(maxima)]); MATLAB - INF01040 - Profa. Patrícia Jaques

Resolvendo Equações Polinomiais Achar raízes de um polinômio: x4 - 12x3 + 0x2 + 25x + 116=0 >>p=[1 -12 0 25 116] r=roots (p) r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i Construir polinômio a partir de suas raízes: >> pp = poly(r) pp = 1.0000 -12.0000 -0.0000 25.0000 116.0000 MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Atividade Exemplo: f(x) = 3*x^4-0.5.*x^3+x-5.2 (x assume valores escalares) p = [3 -0.5 1 -5.2]; f = polyval(p,x); Digitar estes comandos e observar a saída: p=[1 4 -7 -10]; x = linspace(-1,3); v=polyval(p,x) - >gera f(x) para cada x contido no vetor x plot(x,v) title(‘Figure 19.1:x{^3} + 4x{^2} - 7x - 10´) xlabel(´x´) MATLAB - INF01040 - Profa. Patrícia Jaques

Expressões Simbólicas Defina as variáveis com o comando syms Crie as expressões utilizando estas variáveis f(x) = 2x2+3x-5 g(x) = x2-x+7 f(x) + g(x) f(x) - g(x) f(x) * g(x) f(x) / g(x) syms x >> f=2*x^2+3*x-5 >> g=x^2-x+7; >> f + g >> f-g >> f*g >> expand(ans) >> f / g >> pretty (ans) -> (2*x^2+3*x-5)*(x^2-x+7) -> 2*x^4+x^3+6*x^2+26*x-35 MATLAB - INF01040 - Profa. Patrícia Jaques

Expressões Simbólicas Composição e substituição em funções: >> f=1/(1-x^2) >> g=sin(x) >> compose(f,g) ans = 1/(1-sin(x)^2) >> compose(g,f) ans = sin(1/(1-x^2)) >> finverse(g) ans = asin(x) >> subs(f,x,2) ans = -1/3 compose: calcula a composição das funções f(x) e g(x) em f(g(x)), finverse: encontra a inversa funcional de uma expressão subs: substitui uma variável por um número (ou por outra variável) em uma expressão MATLAB - INF01040 - Profa. Patrícia Jaques

Expressões Simbólicas Solução de Equações ax2+bx+c = 0 >> syms a b c x % manipula como variável simbólica >> solve(a*x^2+b*x+c) ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))] >> pretty(ans) %mostra formato de fração [ 2 1/2] [ -b + (b - 4 a c) ] [1/2 --------------------] [ a ] [ ] [ -b - (b - 4 a c) ] MATLAB - INF01040 - Profa. Patrícia Jaques

Resolvendo Sistema de Equações Lineares usando “Divisão Esquerda” Se [A] é uma matriz quadrada (m = n): [A] = mxn {x} = nx1 {b} = mx1 [A]{x} = {b} {x} = ? {x} = [A]-1{b} x = inv(A)*b; x = A\b; Erro se singular Aviso se quase singular One of the most common linear algebra problems is the solution of a set of simultaneous linear equations. This can be easily accomplished in MATLAB using “Left Division” - the backslash operator (\). NOTE: When to use “Left Division”: Ax = B x = A\B When to use normal division: xA = B x = B/A

Exemplo: Resolvendo Equações Resolver este conjunto de equações simultâneas: A = [-1 1 2; 3 -1 1;-1 3 4]; b = [2;6;4]; x = inv(A)*b x = 1.0000 -1.0000 2.0000 x = A\b -x1 + x2 + 2x3 = 2 3x1 - x2 + x3 = 6 -x1 + 3x2 + 4x3 = 4

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos planos 2D O comando plot cria gráficos de x-y no plano; Se x e y são vetores de mesmo tamanho, o comando plot(x,y) abre uma janela gráfica e desenha um gráfico x-y dos elementos de x versos os elementos de y. Exemplo: x=-4:.01:4; y=sin(x); plot(x,y) Peaks – conjunto de dados Para mostrar a capacidade Gráfica (plot, mesh, surf, contour3, contour, surfc, meshz) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos Comandos de plotar Plot(x, y) – gera gráficos lineares Semilogx(x, y) – gráfico com escala linear para y e escala logarítmica para x semilogy(x, y) – a escala logarítmica é para y Loglog(x, y) – escala logarítmica para ambos (x e y) Bar(x, y) – gera um gráfico em barras com elementos do vetor y localizados no vetor x Stairs(x, y) – gera um gráfico de degraus com elementos do vetor y Hist(x,y) – plota histograma Rose(x,y) – plota histograma em ângulo MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos planos 2D Outro exemplo: Desenhar o gráfico de y=exp(-x.^2) no intervalo –1.5 a 1.5. x = -1.5:0.01:1.5; y= exp(-x.^2); plot(x,y) O comando grid coloca uma grade de linhas sobre o gráfico atual. Experimente refazer o comando anterior e depois digite grid. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques + gráficos Gráficos podem ter títulos, eixos rotulados e textos. Para isso usa-se os seguintes comandos que tem strings como argumentos: title título do gráfico xlabel rótulo do eixo x ylabel rótulo do eixo y gtext texto posicionado interativamente (mouse ou setas) text posiciona texto na posição especificada » title 'Título' » xlabel 'x' » ylabel 'y' MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques + gráficos Exemplo: x = 0:pi/100:2*pi; y = sin(x); plot(x,y); %o caracter \pi cria o símbolo  xlabel('x = 0:2\pi'); ylabel('Seno de x'); title('Função Seno','FontSize',12); gtext ('y = sin(x)’); MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques + gráficos Os eixos são auto escalonados. Podem ser modificados utilizando-se o comando axis. Se c=[ xmin, xmax, ymin, ymax ], então o comando axis(c) ajusta o escalonamento dos eixos para os limites definidos no vetor c. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques + gráficos axis auto - retorna-se ao auto escalonamento axis square - garante que a mesma escala é usada para ambos os eixos axis image - apresenta imagem com a mesma relação de aspecto da imagem axis off - desativa os eixos axis on - ativa os eixos MATLAB - INF01040 - Profa. Patrícia Jaques

Gráficos planos 2D múltiplos Há duas formas de se fazer gráficos múltiplos em uma única janela. Exemplo 1: x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,x,y2,x,y3) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques + gráficos É possível alterar os caracteres de tipo de linha e de ponto usados como padrão. Exemplo: x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x); plot(x,y1,'--',x,y2,'*',x,y3,'+') MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques + gráficos Tipos de Marcadores: ponto (.), sinal de adição (+), asterisco (*), círculo (o), letra x (x) Quadrado (s) Triangulo (v) Losango (d) Hexágono (h) Cores: Amarelo (y) Magenta (m) Verde (g) Azul (b) Preto (k) Vermelho (r) Ciano (c) Tipos de linha: sólido (-), tracejado (--), pontilhado (:), traço e ponto (-.) Exemplo: x1 = 0:pi/100:2*pi; x2 = 0:pi/10:2*pi; plot(x1,sin(x1),'r:',x2,sin(x2),‘c+') MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos planos 2D O comando subplot pode ser usado para particionar a tela e permite a apresentação simultânea de vários gráficos não superpostos. Exemplo: ... MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos planos 2D x=0:0.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(3*x); y4=sin(4*x)+cos(x); y5=cos(2*x)+sin(3*x); subplot(2,2,1), plot(y1) subplot(2,2,2), plot(y2) subplot(2,2,3), plot(y3) subplot(2,2,4), plot(y4) Exercício: modifique o código ao lado para apresentar também a função y5. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D É possível desenhar superfícies em malhas 3D com a função mesh. O comando mesh(z) cria um desenho 3D em perspectiva dos elementos da matriz z. A superfície da grade é definida pelas coordenadas z dos pontos, acima de uma grade retangular no plano x-y. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D Exemplo: mesh(eye(10)) Para desenhar o gráfico de uma função z=f(x,y) sobre um retângulo, deve-se primeiro definir os vetores xx e yy que dão as partições dos lados do retângulo. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D Com a função meshgrid (domínio da grade) é possível criar uma matriz x, cujas linhas igualam-se a xx e cujas colunas têm comprimentos de yy e, similarmente, uma matriz y, cujas linhas igualam-se à matriz yy usando-se o comando: [x,y]=meshgrid(xx,yy); Depois, computa-se uma matriz z, obtida pela avaliação da função f sobre as matrizes x e y, com a qual o comando mesh pode ser utilizado. MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D Exemplo: xx=-2:.1:2; yy=xx; [x,y]=meshgrid(xx,yy); z=exp(-x.^2-y.^2); mesh(z) As primeiras linhas podem ser omitidas, se modificarmos a linha de meshgrid para: [x,y]=meshgrid(-2:.1:2, -2:.1:2); MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D Exemplo: [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z,'EdgeColor','black') eps é o menor número em ponto flutuante do sistema. Sua funçao no exemplo é evitar divisão por zero. surf(X,Y,Z) MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D Comandos para plotar gráficos tridimensionais e contornos; plot3 – plota um gráfico 3D Comet3 – plota em 3D com trajetória de cometa contour3 – plota contorno 3D clabel – plota contorno com valores mesh – plota malha 3D meshc – combina mesh e contour surf – plota superfície 3D surfc – combina surf e contour MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Gráficos em malhas 3D Anotações no gráfico; Title – título do gráfico Xlabel – título do eixo x Ylabel – título do eixo y Zlabel – título do eixo z Text – insere anotações no gráfico Gtext – insere anotações com o mouse Grid – linhas de grade no gráfico MATLAB - INF01040 - Profa. Patrícia Jaques

MATLAB - INF01040 - Profa. Patrícia Jaques Exemplos de arquivos.m matrizA.m Gera matriz A (10x10) cartograf.m mapeamento de uma parte do fundo do oceano circulo.m, exemplo-funcao.m, exfuncao.m , procbasico.m usa comando plot, title, xlabel, ylabel…. distacia.m distancia em linha reta entre dois pontos num plano, usa funcao sqrt exemploG3D.m, D3Dmesh.m, malha.m, superficies.m comandos mesh, surf para gerar gráficos 3D exemplopol.m Exemplo de polinômios G2D.m, G2Dplot.m, G2Dplotmult Usa o comando plot, plotar com múltiplas linhas MATLAB - INF01040 - Profa. Patrícia Jaques

Exemplos de arquivos.m (2) exif.m Comando if-end imagem.m usa comando imagesc, matriz visualizada como imagem linhatrid.m Diagrama de linha tridimensional (uso do title, xlabel...) matrizex.m Exercício do cálculo das medias exerciciotemp.m Exercício das temperaturas MATLAB - INF01040 - Profa. Patrícia Jaques