Eugênio Silva E Adriano Cruz

Slides:



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

Estruturação de Linguagens (Pascal e C++)
Carlos André Vaz Junior
Utilizando o R. Técnicas para Predição de Dados 2 17/8/2008 Introdução ao R R é um linguagem (ambiente) de programação para computação estatística e gráfica.
Programação em Java Prof. Maurício Braga
Programação de Computadores
O Maple na Aula de Matemática
MATLAB Comandos Básicos.
Departamento de Informática
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 4.
Introdução aos Computadores e à Programação DI-FCT-UNL-2006/2007 Ficheiros 5.1 Octave Ficheiros.
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Vectores, Gráficos e Funções Trajectória de um Projéctil
Introdução aos Computadores e à Programação DI-FCT-UNL-2006/2007 Sistemas de Equações e Gráficos 2.1 Octave Sistemas de Equações e Gráficos.
Excel Profa. Cristina M. Nunes.
Introdução a Programação Renata Freire
PROGRAMAÇÃO MODULAR (com uso de subprogramas) prof
Vi 1 Editando com vi. vi 2 Por que vi? l Editar arquivos de configuração l Editar scripts de shell l Disponível em todas as distribuições l Necessita.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Instrutor: Marcelo Escobar
Curso MATLAB 6 Instrutor: Marcelo Escobar Complementação da Introdução.
LINGUAGEM C.
Iniciação ao MatLab Profa Dra. Rossana Lott Rodrigues
The language of tecnical computing
Folha de Cálculo TIC 10.
Revisão da Linguagem C.
Construindo gráficos com o “GNUPLOT”
GET – Engenharia de Produção
Paradigmas de programação
Prof. André Leon S. Gradvohl, Dr.
Estrutura de um Programa:
Introdução ao MatLab Aula 2
Prof. Reinaldo Bianchi Centro Universitário da FEI 2013
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 6 Vetores e Matrizes
Matlab– Noções introdutórias
Introdução ao MatLab Aula 3
Aula 02 Variáveis, Matrizes, Gráficos
Funções Universidade Federal de Ouro Preto - UFOP
Estrutura de dados, pseudocódigo
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
Fábio de Oliveira Borges
MÉTODOS NUMÉRICOS APLICAÇÃO NO MATLAB
Matlab Mini Curso PET 2012.
Monitoria de Sistemas Inteligentes
Introdução ao MATLAB 5.3 para Hidrólogos
Sistemas de Controle de Aeronaves II
Sistemas Operacionais
Fundamentos de Programação
Minicurso MATLAB Básico
Linguagem Pascal Prof. Sérgio Rodrigues.
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
3. Introdução à Linguagem C
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Unidades de Gestão: gep | getec | gead
Eugênio Silva Iniciação ao MatLab Eugênio Silva
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)
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
MATLAB - Matrix Laboratory Adaptado de Profa
Algoritmos.
Introdução à Programação
Andréa Iabrudi 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I.
MatLab (Matrix Laboratory)
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Pesquisa Aplicada à Computação utilizando MatLab®
Transcrição da apresentação:

Eugênio Silva E Adriano Cruz Iniciação ao MatLab Eugênio Silva E Adriano Cruz

Introdução

Introdução MatLab – Matrix Laboratory (Universidades de Stanford e Novo México - 1970) originalmente escrito para trabalhar com matrizes e vetores evoluiu ao longo do anos até se tornar uma ferramenta de ampla abrangência.

Introdução o MatLab é uma poderosa ferramenta matemática e uma linguagem de programação de alto-desempenho para a computação científica integra cálculos matemáticos, visualização e programação em um ambiente interativo é de fácil utilização

Exemplo – transpor uma matriz Pascal MatLab var a, b : array [1..3, 1..3] of integer; i, j : integer; begin . . . for i = 1 to 3 for j = 1 to 3 b(j,i) := a(i,j); end; end. >> a = [1 2 3; 4 5 6; 7 8 9] a = 1 2 3 4 5 6 7 8 9 >> b = a’ b = 1 4 7 2 5 8 3 6 9

Introdução o elemento de dados básico é uma matriz matrizes e vetores são manipulados com mais facilidade e rapidez que em programas escritos em linguagens não-interativas como Pascal, C ou Fortran

Introdução Linha de comandos – é possível usar o matlab através de comandos emitidos a partir de linha de comandos scripts – arquivos que contém comandos matlab

Introdução toolboxes - bibliotecas de funções que permitem a resolução de classes particulares de problemas simulink - acessório que acrescenta uma interface de diagramas de blocos e recursos de simulação real aos demais recursos numéricos, gráficos e de linguagem

Aplicações matemática e computação desenvolvimento de algoritmos modelagem, simulação e prototipação análise de dados, exploração e visualização gráficos científicos em duas e três dimensões

Help On line Linha de comandos - help help elfun help abs demos - demo

Comandos

Operações Elementares >> 4 + 6 – 2 ans = 8 >> 4 * 2 + 6 * 5 + 2 * 9 56 >> 25 / 5 + 5 \ 25 ans = 10 >> 3 ^ 2 * 2 ^ 2 + 2 38

Prioridades Parênteses Potência 3 * 2 ^ 3 = 24 * e / Resolvendo da esquerda para direita 8 / 4 * 3 = 6 + e -

Números Inteiros: 32, -12345 Reais: 3.1789, -23.0, 1.0e-3 Complexos: 3.2 – 23.5i Inf: Infinito (resultado da divisão por 0) NaN: Not a number 0/0 Contas são feitas com 15 dígitos aproximadamente Comando format controla impressão dos resultados.

Definição de Variáveis 10 >> b = 20; O ‘;’ evita que o resultado apareça na tela. >> c = 1 + 2i ou c = 1 + 2j c = 1.0000 – 2.0000i

Nomes de Variáveis Combinações de letras e números, começando com letra n1, ab, temp Nomes especiais eps = 2.220446049250313e-16 (o menor número tal que 1 + eps é indistinguível de 1) pi i, k

Variáveis Pré-definidas ans: váriavel padrão usada para resultados de expressões do tipo >> 3 + 5 pi i ou j: igual a raiz quadrada de -1 realmax: maior número real utilizável 1.797693134862316e+308 realmin: menor número real utilizável 2.225073858507201e-308

Variáveis Pré-definidas nargin: número de argumentos de entrada nargout: número de argumentos de saída

Funções Elementares abs(x) valor absoluto de x sin(x) seno de x asin(x) arc seno x cos(x) co-seno x acos(x) arc co-sen x tan(x) tangente x exp(x) e elevado a x

Funções Elementares log(x) log inverso de exp(x) log10(x) log base 10 de x gcd(x,y) mdc de x e y lcm(x,y) mmc entre x e y max(x) máximo de x min(x) mínimo de x inv(x) matriz inversa de x ...

Espaço de Trabalho >> who lista variáveis na memória >> whos lista variáveis detalhadamente >> clear apaga variáveis da memória >> save salva variáveis em arq .mat >> load carrega variáveis de um .mat >> format formato de apresentação dos resultados

Comandos do SO >> dir ou ls arquivos do diretório >> cd ou pwd diretório corrente >> cd . . diretório acima do corrente >> cd \ diretório raiz >> delete <arquivo> apaga arquivo >> edit <arquivo> abre arquivo para edição >> type <arquivo> mostra o conteúdo do arquivo >> quit ou exit sai do ambiente

Vetores

Vetores em linha >> x = [ 1 3 5 ]; >> lenght(x) ans = 3 >> y = [ 3 4 5 ]; >> x + y 4 7 10 >> z = 3 * y 9 12 15

Vetores ??? Error using ==> plus Matrix dimensions must agree. >> x + v1 ??? Error using ==> plus Matrix dimensions must agree.

Gerando vetores >> x = [0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1] .* pi ou >> x = linspace(0,pi,11) >> y = sin(x)

Gerando vetores linspace(x1,x2) gera um vetor linha com 100 pontos igualmente espaçados. linspace(x1,x2,n) gera vetor com n pontos entre x1 e x2 >>linspace(0,pi,11)

Gerando vetores a : b : c gera vetor começando em a, incrementando por b, até chegar em c. Não gera além de c. >> 0:0.1:1 ans = 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 a : b gera vetor começando em a até chegar em b incrementando por 1

Manipulando vetores x = (0:0.1:1)*pi x(7:end) = 1.8850 2.1991 2.5133 2.8274 3.1416 x(3:-1:1) = 0.6283 0.3142 0 x(2:2:7) = 0.3142 0.9425 1.5708

Manipulando vetores, matrizes x = 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 3.1416 x([8 2 9 1]) = 2.1991 0.3142 2.5133 0 z = x[(2:5) 4 5 7] = 0.3142 0.6283 0.9425 1.2566 4.0000 5.0000 7.0000 w = [ x y ] %vetor linha k = [ x; y ] % matriz com duas linhas

Manipulando vetores, matrizes A(3,:) = 7 8 9 % : todas as colunas

Manipulando vetores, matrizes B = A(3:-1:1, : ) B = [7 8 9; 4 5 6; 1 2 3] C = [A B( : , [1 3])] C = [1 2 3 7 9; 4 5 6 4 6; 7 8 9 1 3] B(:,2) = [ ] B = [7 9; 4 6; 1 3] B = A(:,[2 2 2 2]) B = [2 2 2 2; 5 5 5 5; 8 8 8]

Operações Especiais >>eye(linhas,colunas) Cria matriz identidade >> det(m) Determinante de m >> zeros(n1,n2,n3,...) Matriz de zeros >> inv(m) Inversa de m >> ones(n1,n2,...) Matriz de uns >> m’ Transposta de m >> rand (n1,n2,...) Matriz de rand entre 0 e 1.0

Matrizes matriz(10) ou matriz(2,3) 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

Busca de Sub-Matrizes >> A= [1 2 3; 4 5 6; 7 8 9] 4 5 6 7 8 9 >> [ i , j ] = find(A > 5) i = 3 j = 1 3 2 2 3 3 3 >> x = -3:3 x = -3 -2 -1 0 1 2 3 >> k = find(abs(x) > 1) k = 1 2 6 7 >> y = x(k) -3 -2 2 3

Dimensões de Vetores e Matrizes whos lista as variáveis e suas dimensões s = size(A) retorna o número de linhas e colunas de A [x,y] = size(A) x contém o núm de linhas e y o de colunas x = size(A,1) retorna o número de linhas de A y = size(A,2) retorna o número de colunas de A n = length(A) retorna max(size(A))

Operações com Vetores e Matrizes a = [a1 a2 ... an], b = [b1 b2 ... bn], c = <um escalar> adição a escalar a + c = [a1 + c ... an + c] multiplicação por escalar a * c = [a1* c ... an* c] soma de vetores a + b = [a1 + b1 ... an + bn] multiplicação de vetores a .* b = [a1 *b1 ... an *bn]

Operações com Vetores e Matrizes a = [a1 a2 ... an], b = [b1 b2 ... bn], c = <um escalar> Divisão vetores (a/b) a ./ b = [a1 /b1 ... an /bn] Divisão vetores (b/a) a .\ b = [a1\b1 ... an\bn] Potenciação vetorial c.^a = [c^a1 ... c^an]

Alguns exemplos x = [ 1 2 3 4], y = [ 1 1/2 1/3 1/4]; x .* y % dot product 1 1 1 1 x * y' % scalar product 4 sqrt( x * x') %Comprimento vetor 5.4722

Mais exemplos: resolução de sistemas de equações 2x1 - x2 = 1 X1 - 2x2 + x3 = 0 - x2 + 2x3 = 1 Ax = b; x = A-1b; x = A \ b

Mais exemplos: resolução de sistemas de equações b = [1; 0; 1] Em notação matricial Ax = b x = A-1b; X = inv(A) * b; x = A \ b;

Gráficos

Gráficos Bidimensionais >> x = linspace(0, 2 * pi, 30); >> y = sin(x); >> z = cos(x); >> plot(x,y,x,z)

Títulos, Rótulos e Grids >> x = linspace(0, 2 * pi, 30); >> y = sin(x); >> plot(x,y,x,z); >> title('Grafico de y = sen(x)'); >> xlabel('Eixo x'); >> ylabel('Seno(x)');

Legendas >> x = linspace(0, 2 * pi, 30); >> y = sin(x); >> z = cos(x); >> plot(x,y,x,z); >> legend('curva sen', 'curva cos');

Linhas: Estilos e Cores >> x = linspace(0, 2 * pi, 30); >> y = sin(x); >> z = cos(x); >> subplot(2,1,1) >> plot(x,y,’go’) >> subplot(2,1,2) >> plot(x,z,’r*’)

Hold Comando plot limpa a janela do gráfico antes de desenhar o novo gráfico Isto não é conveniente se desejarmos adicionar outros gráficos no futuro Usar hold para evitar limpeza da janela plot(x,y,'w-'), hold on plot(x,y,'gx'), hold off hold off não limpa a janela (usar clf)

Subplots A janela do gráfico é dividida em uma matriz m x n de pequenas janelas. As janelas são contadas entre 1 e m x n Cada subfigura é tratada como uma figura podendo ter mais de uma curva, estilos, legendas, cores etc

Subplots x = linspace(0,2*pi,30); y1 = sin(x); y2 = sin(2*x); subplot(221), plot(x,y1), legend('y = sen(x)'); subplot(222), plot(x,y2), legend('y = sen(2*x)'); subplot(223), plot(x,y2), legend('y = sen(3*x)'); subplot(224), plot(x,y4), legend('y = sen(4*x)');

Subplots

Gráficos Bidimensionais >> x = -2.9 : 0.2 : 2.9; >> y = randn(5000,1); >> hist(y,x)

Textos Formatados Possível aumentar ou diminuir fontes Alguns comandos latex podem ser usados É possível obter os valores de qualquer propriedade através do “handle” da figura handle = plot(x,y); get (handle, 'markersize');

Controlando os eixos Uma vez que um gráfico foi criado é possível mudar a excursão dos valores x e y mostrados na figura. clf, N=100; h=1/N; x = 0:h:1; y = sin(3*pi*x), plot(x,y); axis([-0.5 1.5 -1.2 1.2]), grid;

Controlando os eixos

Gráficos Tridimensionais >> t = 0 : pi / 50 : 10 * pi; >> plot3(sin(t),cos(t),t); >> title(‘hélice’) >> xlabel(‘sen(t)’) >> ylabel(‘cos(t)’) >> zlabel(‘t’) >> grid

Gráficos Tridimensionais %z = f(x,y) x = -0.5*pi:0.1:0.5*pi; y = x; % minusculas [X Y] = meshgrid(x,y); Z = sin(2*X)+sin(3*Y); % maiusculas mesh(X,Y,Z); title('Ex de graf 3D');

Gráficos Tridimensionais

O mesmo com surf

O mesmo com surfl

Gráficos Tridimensionais >> surf(peaks)

Scripts

Arquivos M (Scripts) Armazenam uma sequência de comandos em um arquivo texto que é executado a partir do prompt Úteis quando o número de comandos a serem executados é grande, ou caso seja necessário alterar os valores das variáveis e re-executar alguns comandos Devem ter a extensão .m

Scripts em Matlab Scripts não aceitam e não retornam argumentos. Scripts podem alterar as variáveis do espaço de trabalho (workspace) atual. Scripts podem conter comandos que interagem com o usuário e/ou arquivos. Use scripts para: Automatizar a execução de uma seqüência de comandos frequentemente utilizados Documentar os passos de um processo

Scripts em Matlab %Exemplo de script % clear all; x = 0:0.01:2*pi; eixos = [0 2*pi -2 +2]; y1 = sin(x); y2 = cos(x); y3 = tan(x); y4 = zeros(size(x)); plot (x,y1,x,y2,x,y3,x,y4,'k'); axis (eixos); legend('Seno', 'Coseno','Tangente'); title('Graficos de seno, coseno e tangente.'); xlabel('Angulos'); ylabel('Seno, coseno e tangente');

Scripts em Matlab

Scripts Para executar um script armazenado em um arquivo digite o nome do arquivo sem o .m O que aparece na tela são os resultados da execução dos comandos. echo on faz com que os comandos apareçam antes da execução. echo off faz com que os comandos deixem de aparecer.

Alguns Comandos e Funções

Estrutura Condicional – if >> if expressão_1 comandos_1; elseif expressão_2 comandos_2; else comandos_3; end

Operadores Relacionais e Lógicos < menor que <= menor ou igual > maior que >= maior ou igual = igual ~= diferente & e | ou ~ não

Funções Relacionais e Lógicas xor(x,y) ou exclusivo ischar(x) 1 se x é um vetor de caracteres isequal(x,y) 1 se x e y são iguais isempty(x) 1 se x é vazio ismember(x,y ) 1 se os elementos de x pertencem a y isstruct(x) 1 se x é uma estrutura

Estrutura Condicional – switch - case >> switch expressão case teste_expressão_1 comandos_1 case teste_expressão_2 comandos_2 otherwise comandos_3 end

Laços de Repetição – for / while >> for x = vetor comandos; end >> while expressão

Laços de Repetição clf; x = -2:0.1:2; hold on; for n = 1:8 plot(x,n*x .*x ); end hold off;

Laços de Repetição

Otimização de Código o laço de repetição for i = 0:999 x(i+1) = sin(2*pi*i/100); end pode ser substituído por x = sin(2*pi*[0:999]/100);

Funções dos Arquivos M disp(x) Mostra resultado sem identificar variável echo controla a exibição dos comandos input solicita ao usuário a entrada keyboard transfere o controle para o teclado pause(n) suspende execução por n segundos pause suspende até que tecla seja pressionada

Análise de Dados matriz de covariância min(x) componente mínima max(x) cov(x) matriz de covariância min(x) componente mínima max(x) componente máxima mean(x) média rand(x) núm. aleatórios uniformemente distrib var(x) variância std(x) desvio padrão sum(x) soma dos elementos da coluna

Funções criadas pelos usuários

Funções em Matlab Uma função em Matlab é um arquivo de texto. Arquivos de funções devem ter um nome igual ao nome da função. Um conjunto de funções e scripts pode ser agrupado em um único diretório. O conjunto é chamado de toolbox. Toolboxes extendem as capacidades do Matlab

Funções criadas pelo usuário a partir da segunda vez a execução de uma função é mais rápida que da primeira as linhas de comentário que antecedem a primeira linha sem comentário aparecem quando se pede ajuda

Arquivos M de funções variáveis criadas dentro de uma função permanecem apenas no espaço de trabalho da função funções podem compartilhar variáveis com outras funções desde que sejam declaradas como globais arquivos M de funções podem conter mais de uma função, a função primária e as sub-funções

Funções em Matlab function [d] = distPontos(p1,p2) % % Calcula a distancia entre dois pontos % p1 = [x1 y1] e p2 = [x2 y2] % em um espaco bi-dimensional % Entradas: % p1, p2: dois pontos % Saída: % d: distancia entre p1 e p2 % Uso: % d = distPontos(p1, p2) % Autor: % Adriano Cruz % Data: % 2010/03/02 d = sqrt((p1(1) - p2(2))^2 + (p1(2) - p2(2))^2);

Funções em Matlab p1 = [ 1 1 ]; p2 = [ 0 0 ]; d = distPontos(p1, p2)

Arquivos

Arquivos Formatados Parecido com C Lembrar que matlab anda no sentido da coluna. Ao ler dados para uma matriz irá preencher no sentido da coluna Ao escrever dados de uma matriz irá ler no sentido da coluna

Arquivos Formatados (1,1) = (1) (1,2) = (5) (1,3) = (9) (1,4)=(13) (2,1) = (2) (2,2) = (6) (2,3)=(10) (2,4)=(14) (3,1) = (3) (3,2) = (7) (3,3)=(11) (3,4)=(15) (4,1) = (4) (4,2) = (8) (4,3)=(12) (4,4)=(16

Arquivos Formatados Considere o arquivo 1 1 2 4 3 9 4 16 5 25

Arquivos Formatados Será armazenado em um vetor como 1 1 2 4 3 9 4 16 5 25

Arquivos Formatados Novamente Considere o arquivo 1 1 2 4 3 9 4 16 5 25

Arquivos Formatados Leitura fid=fopen('dadosin.txt', 'r'); a = fscanf(fid, '%d'); fclose(fid); a=reshape(a,2,size(a,1)/2)';

Arquivos Formatados Escrita x = -3:1:3; y = x.^2; fid = fopen('dados.txt', 'w'); temp = [ x; y ] fprintf(fid,'%f %f\n', temp); fclose(fid);

Arquivos Formatados Escrita -3.000000 9.000000 -2.000000 4.000000 -1.000000 1.000000 0.000000 0.000000 1.000000 1.000000 2.000000 4.000000 3.000000 9.000000

Extras

Temporização tic: começa a contar o tempo. toc: termina de contar o tempo.

Temporização tic: começa a contar o tempo. toc: termina de contar o tempo.

Matrizes Celulares são matrizes cujos elementos são células qualquer célula da matriz pode conter qualquer tipo de dado (matrizes numéricas, texto, matrizes celulares, etc.)

Matrizes Celulares >> A(1,1) = { [1 2 3; 4 5 6; 7 8 9] }; >> A(1,2) = { 2 + 3i }; >> A(2,1) = { ‘um texto’ } >> A(2,2) = {12 : -2 : 0}; >>A = [3x3 double] [2.0000+ 3.0000i] 'um texto' [1x7 double]

Matrizes Celulares >> A{1,1} = [1 2 3; 4 5 6; 7 8 9]; >> A{1,2} = 2 + 3i; >> A{2,1} = ‘um texto’ >> A{2,2} = 12 : -2 : 0; >>A = [3x3 double] [2.0000+ 3.0000i] 'um texto' [1x7 double]

Matrizes Celulares >> cellplot(A);

Estruturas são objetos que contêm “recipientes de dados” com nomes diferentes esses recipientes são chamados de campos os campos podem conter qualquer tipo de dado ao se referir aos campos de uma estrutura usa-se seus nomes em vez de usar índices estruturas podem conter outras estruturas

Estruturas >> cliente.nome = ‘João da Silva’; >> cliente.custo = 86.50; >> cliente.teste.A1C = [6.3 6.8 7.1 7.0 6.7]; >> cliente.teste.CHC = [2.8 3.4 3.6 4.1 3.5];

Ajuda On-Line help helpwin helpdesk lookfor demo arquivos de ajuda

Para Saber Mais Hanselman, Duane; Littlefield, Bruce; Matlab 5 Guia do Usuário (versão do estudante), Makron Books, 1997. Matsumoto, Élia Yathie; Matlab 6 - Fundamentos de Programação, Editora Érica, 2001.

Demonstrações matrices/graphs and matrices matrices/matrix manipulation visualization/vibration movie visualization/visualizing sound gallery/knot gallery/slosh gallery/logo games/sliding puzzle

Temporização tic: começa a contar o tempo. toc: termina de contar o tempo.