Susana Nascimento Departamento de Informática

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

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
Data: 10 a 12 de fevereiro de 2009 e
Linguagem de Programação VI Tipos de Dados Compostos - structs
Operadores e Funções do LINGO
Introdução à Programação usando Processing Programação Gráfica 2D Estrutura de Seleção Exercício Estrutura de Seleção 2º Semestre 2009 > PUCPR > Design.
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 4.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 9.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 2.
Departamento de Informática
Introdução aos Computadores e à Programação DI-FCT-UNL-2005/2006 Variáveis, matrizes e séries 2.1 Octave Variáveis, Matrizes e Séries.
Introdução aos Computadores e Programação DI-FCT-UNL-2005/2006 Gráficos 4.1 Octave Gráficos.
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004 Strings, operadores e funções 3.1 Octave Strings, Operadores e Funções.
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004 Variáveis, matrizes e séries 2.1 Octave Variáveis, Matrizes e Séries.
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004 Gráficos 4.1 Octave Gráficos.
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004 Programação 5.1 Octave Programação.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Introdução aos Computadores e Programação DI-FCT-UNL-2004/2005 Strings, operadores e funções 3.1 Octave Strings, Operadores e Funções.
Octave Introdução, Variáveis e Matrizes
Vectores e Matrizes Aplicações à Engenharia
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Introdução aos Computadores e Programação DI-FCT-UNL-2004/2005 Gráficos 4.1 Octave Gráficos.
9 Março 2007Matrizes e Gráficos - Trajectória de um Projéctil1 Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores.
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.
Octave Variáveis, Matrizes e Séries
Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2008/2009.
Chapter 2 Fundamentals (a) (b) Convenções de coordenadas:
Assembly Language for Intel-Based Computers, 5th Edition
LINGUAGEM C.
The language of tecnical computing
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Introdução ao -calculus
Tratamento de Ficheiros
Revisão da Linguagem C.
Vamos agora aprender a utilizar estruturas.
O Portal do Estudante de Computação
O Portal do Estudante de Computação
ESTATÍSTICA.
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
Análise Semântica e Representação Intermédia
Introdução ao MatLab Aula 2
ME623 Planejamento e Pesquisa
Matlab– Noções introdutórias
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
Introdução ao MatLab Aula 3
Introdução ao MatLab Aula 4
Introdução ao MatLab Aula 1
Aula 02 Variáveis, Matrizes, Gráficos
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
Programação Funcional
Seminário 1: Revisão de C
Conceitos de Lógica Digital
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
O Portal do Estudante de Computação
Introdução ao MATLAB para Hidrólogos
ANÁLISE ESTATÍSTICA II
Exercício - 1. Criar no SPSS o banco de dados com as informações fornecidas 2. Salvar o banco com o nome atividade física na pasta pos pilates 3.
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.
Medidas de tendência central e de dispersão
Medidas de Dispersão Aula 8.
Programação e Aplicações Gráficas
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
Trabalho Computacional Mecânica de Fluidos Ambiental Guillaume Riflet, Pedro Pina, Luís Fernandes.
Transcrição da apresentação:

Susana Nascimento Departamento de Informática snt@di.fct.unl Breve Introdução à Programação em MATLAB Aulas Práticas de Aprendizagem Automática Ano Lectivo 2006/2007 Susana Nascimento Departamento de Informática snt@di.fct.unl

Introdução ao MatLab O ambiente de trabalho das aulas práticas: MATLAB. O MATLAB é um ambiente de programação de alto nível para aplicações Científicas e de Engenharia. Facilidades Oferece um leque alargado de bibliotecas de funções pré-definidas. Muito amigável em funcionalidades gráficas para Visualização de Dados. Largamente divulgado em Universidades e Laboratórios de Investigação. Muito conveniente para o desenvolvimento eficás de protótipos. Introdução MatLab AA-0607

MATLAB the Language of Technical Computing Simulink for Model-based and System-Level Design Site para Consulta da Linguagem: http://www.mathworks.com/access/helpdesk/help/techdoc/learn_matlab/learn_matlab.shtml Introdução MatLab AA-0607

Sumário Tipos de dados Operadores Fluxo de Controlo M-functions arrays: caracteres, numéricos, estruturados, … Operadores aritmética, relacionais, lógicos. Fluxo de Controlo condicionais, case, while, etc. M-functions sintaxe Exemplos e funções simples Introdução MatLab AA-0607

Introdução MatLab AA-0607

Tipos de Dados em MatLab Array Char Numeric Structure Cell ‘a’ image.width = 120 image.name = ‘face1’ Uint8 (8 bit unsigned integer, from 0 to 255, e.g., image gray scales) Double e.g., 3.2567 (8 bytes) Introdução MatLab AA-0607

Uint8 e Doubles Double Maioria funções MATLAB doubles como argumento de entrada return double Introdução MatLab AA-0607

Uint8 e Doubles Double Maioria funções MATLAB doubles como argumento de entrada return double e.g., Necessidade de converter ‘uint8’ para ‘double’ antes de realizar operação matemática » a = 1:10 a = 1 2 3 4 5 6 7 8 9 10 » b = uint8(a) b = » whos Name Size Bytes Class a 1x10 80 double array b 1x10 10 uint8 array » b*2 ??? Error using ==> * Function '*' not defined for variables of class 'uint8'. » (double(b))*2 ans = 2 4 6 8 10 12 14 16 18 20 Introdução MatLab AA-0607

Tipo ‘Char’ » c = ['hello']; » whos Name Size Bytes Class c 1x5 10 char array Grand total is 5 elements using 10 bytes » c(1) ans = h Introdução MatLab AA-0607

Tipo de Dados ‘Char’ » c = ['hello']; » whos Name Size Bytes Class c 1x5 10 char array Grand total is 5 elements using 10 bytes » c(1) ans = h » d = [c,' again']; » d d = hello again » » b = ['hello';'again']; » size(b) ans = 2 5 » b b = hello again Introdução MatLab AA-0607

Tipo de Dados ‘Struct’ image.name = 'Tom'; » image.height = 3; » image.width = 3; » image.data = [8 10 2; 22 7 22; 2 4 7]; » whos Name Size Bytes Class image 1x1 590 struct array Grand total is 18 elements using 590 bytes Introdução MatLab AA-0607

Tipo de dados Arrays de Estruturas » image(1) = image; » image(2).name = 'Mary' » image(2).width = 4; » image(2).height = 4; » whos Name Size Bytes Class image 1x2 894 struct array Grand total is 28 elements using 894 bytes » image image = 1x2 struct array with fields: name height width data Introdução MatLab AA-0607

Arrays de Estruturas » image(1) = image; » image(2).name = 'Mary' » image(2).width = 4; » image(2).height = 4; » whos Name Size Bytes Class image 1x2 894 struct array Grand total is 28 elements using 894 bytes » image image = 1x2 struct array with fields: name height width data » image(2) ans = name: 'Mary' height: 4 width: 4 data: [] » image(1) name: 'Tom' height: 3 width: 3 data: [3x3 double] Introdução MatLab AA-0607

Operadores Aritméticos Relacional Lógico Computação numérica, e.g., 2^10 Relacional Comparação quantitativa de operandos e.g., a < b Lógico AND, OR, NOT Devolve variável Booleana, 1 (TRUE) ou 0 (FALSE) Introdução MatLab AA-0607

Operadores Aritméticos Transpose, a’ Power, a^2 Addition, multiplication, division a(1)*b(2) a*b works if a and b are matrices with appropriate dimensions (columns(a) = rows(b)) a.*b (element by element) except for matrix operations, most operands must be of the same size, unless one is a scalar Introdução MatLab AA-0607

Operadores Aritméticos Transpose, a’ Power, a^2 Addition, multiplication, division a(1)*b(2) a*b works if a and b are matrices with appropriate dimensions (columns(a) = rows(b)) a.*b (element by element) except for matrix operations, operands must be of the same size, unless one is a scalar » a = [2 3]; » b = [4 5]; » a(1)*b(2) ans = 10 » a*b ??? Error using ==> * Inner matrix dimensions must agree. » a*b' 23 » a.*b 8 15 » b/2 2.0000 2.5000 Introdução MatLab AA-0607

Operadores Relacionais <, <=, >, >=, ==, ~= compare corresponding elements of arrays with same dimensions if one is scalar, one is not, the scalar is compared with each element result is, element by element, 1 or 0 Introdução MatLab AA-0607

Operadores Relacionais <, <=, >, >=, ==, ~= compare corresponding elements of arrays with same dimensions if one is scalar, one is not, the scalar is compared with each element result is element by element 1 or 0 » a a = 2 3 » b b = 4 5 » a > b ans = 0 0 » b > a 1 1 » a > 2 0 1 Introdução MatLab AA-0607

Fluxo de Controlo If, else, endif For….. Switch, while if index<100 statements else statements end For….. For i = 1:100 statements end Switch, while Introdução MatLab AA-0607

Programação em MATLAB File with MATLAB code: “M file”, e.g., sort.m Two kinds of M-files scripts no input arguments supplied no output arguments returned operates on data in workspace functions can accept input arguments and return output arguments internal variables local to function by default useful for extending functionality of MATLAB Introdução MatLab AA-0607

Exemplo de Script MATLAB % script randVect % Script simples para gerar um vector de n n. aleatórios. % ilustar aplicando: % (a) loops for, and (b) chamada directa a uma função. % Comentar o código Introdução MatLab AA-0607

Exemplo de Script MATLAB % script randVect % Script simples para gerar um vector de n n. aleatórios. % ilustar aplicando: % (a) loops for, and (b) chamada directa a uma função. % n = 100000; % the number of points for the "for loop” y = zeros(n,1); % preallocate memory for y fprintf('Simulating %d random numbers.....\n\n',n); Inicialização de variáveis Print de informação para o ecran Introdução MatLab AA-0607

Exemplo de Script MATLAB % script randVect % Script simples para gerar um vector de n n. aleatórios. % ilustar aplicando: % (a) loops for, and (b) chamada directa a uma função. n = 100000; % the number of points for the "for loop” y = zeros(n,1); % preallocate memory for y fprintf('Simulating %d random numbers.....\n\n',n); % first do the calculation using a "for loop" fprintf('For loop calculations.....\n'); tic % set the timer for i=1:n y(i) = rand(1); end total = sum(y); fprintf('Sum of %d random numbers = %f\n',n,total); t1 = toc; % read the time elapsed since "tic" (in seconds) fprintf('Time taken, using for loop = %6.5f microseconds\n\n', (t1)*1000); …... (1) Calcula n n. aleatórios e correspondente soma usando loop for; (2) Calcular tempo execução; (3) mostrar resultado Introdução MatLab AA-0607

Exemplo de Script MATLAB ……… … % now do the calculation using vectorization fprintf('Vectorization calculations.....\n'); tic % reset the timer z = rand(n,1); total = sum(z); fprintf('Sum of %d random numbers = %f\n',n,total); t2 = toc; % read the time elapsed since "tic" (in seconds) fprintf('Time taken, using vectorization = %6.5f microseconds\n', (t2)*1000); (1) Calcula n n. aleatórios e correspondente soma usando função rand; (2) Calcular tempo execução; (3) mostrar resultado Introdução MatLab AA-0607

Gerador de Números (pseudo)aleatórios em MatLab Gera sequência (of length n) de nºs pseudoaleatórios: Geração da sequência: x(i) = mod(a * x(i-1), m) Inicialização com valor (“seed”) » help rand RAND Uniformly distributed random numbers. RAND produces pseudo-random numbers. The sequence of numbers generated is determined by the state of the generator. Since MATLAB resets the state at start-up, the sequence of numbers generated will be the same unless the state is changed. S = RAND('state') is a 35-element vector containing the current state of the uniform generator. RAND('state',S) resets the state to S. RAND('state',0) resets the generator to its initial state. RAND('state',J), for integer J, resets the generator to its J-th state. RAND('state',sum(100*clock)) resets it to a different state each time. This generator can generate all the floating point numbers in the closed interval [2^(-53), 1-2^(-53)]. Theoretically, it can generate over 2^1492 values before repeating itself. Introdução MatLab AA-0607

Exemplo de Função MATLAB function [meanr, stdr, z] = simulate(n); Lista de argumentos de entrada, (separados por vírgula) Nome função Identificador de função Lista de valores de output devolvidos Introdução MatLab AA-0607

Função MATLAB Definição de linha de função Lista de inputs e outputs required of all functions Lista de inputs e outputs comma delimited: [y, z] = average(a, b, c) for more than one output, outputs enclosed in square brackets Variáveis de entrada function variables are local to the function input variables are readable to the function: local copies are made if the inputs need to be changed Escopo MATLAB searches in this order: variable name, subfunction, current directory, MATLAB search path Introdução MatLab AA-0607

Exemplo de Função MATLAB function [meanr, stdr, z] = simulate(n); % % Função que simula um vector de n valores uniformemente distribuidos % calcula e devolve: média e desvio padrão dos números. % INPUTS: % n: number (inteiro) de nºs (pseudo)aleatórios a gerar. % OUTPUTS: % meanr: média dos n nºs (pseudo)aleatórios % stdr: desvio padrão dos nºs (pseudo)aleatórios % z: array n x 1 de nºs (pseudo)aleatórios Funções comentadas Introdução MatLab AA-0607

Exemplo de Função MATLAB function [meanr, stdr, z] = simulate(n); % % Função que simula um vector de n valores uniformemente distribuidos % calcula e devolve: média e desvio padrão dos números. % INPUTS: % n: number (inteiro) de nºs (pseudo)aleatórios a gerar. % OUTPUTS: % meanr: média dos n nºs (pseudo)aleatórios % stdr: desvio padrão dos nºs (pseudo)aleatórios % z: array n x 1 de nºs (pseudo)aleatórios % simple error checking to check n is a positive integer if (rem(n,1)~=0) | n<=0 error('Input n must be a positive integer'); end Validar condições com mensagens erro Introdução MatLab AA-0607

Exemplo de Função MATLAB … fprintf('Simulating %d random numbers.....\n\n',n); % generate the n random numbers z = rand(n,1); % calculate the mean and standard deviation meanr= mean(z); fprintf('Mean of the %d random numbers = %f\n',n,meanr); stdr= std(z); fprintf('Standard deviation of the %d random numbers = %f\n',n,stdr); Simular os números aleatórios. Não necessita de função return explícita Valores não devolvidos são locais à função Introdução MatLab AA-0607

Chamada da Função MATLAB » [m, s] = simulate(1000000); Simulating 1000000 random numbers..... Mean of the 1000000 random numbers = 0.499702 Standard deviation of the 1000000 random numbers = 0.499702 Mean of the 1000000 random numbers = 0.499684 Standard deviation of the 1000000 random numbers = 0.288456 » m m = 0.4997 » s s = 0.2885 » Introdução MatLab AA-0607

Outra Função MATLAB function [meanr, stdr, z] = simplot(n,plotflag); % % Função que simula um vector de n valores uniformemente distribuidos % calcula e devolve: média e desvio padrão dos números. Se % var plotflag for 1 é feito o plotting do histogram dos nºs gerados. % INPUTS: % n: number (inteiro) de nºs (pseudo)aleatórios a gerar. % plotflag: se plotflag=1, desenhar histograma de z, % c.c. não. % OUTPUTS: % meanr: média dos n nºs (pseudo)aleatórios % stdr: desvio padrão dos nºs (pseudo)aleatórios % z: array n x 1 de nºs (pseudo)aleatórios % simple error checking to check n is a positive integer if (rem(n,1)~=0) | n<=0 error('Input n must be a positive integer'); end Introdução MatLab AA-0607

Simplot.m (cont.) Novo código Nargin n. de argumentos de entrada fprintf('Simulating %d random numbers.....\n\n',n); % generate the n random numbers z = rand(n,1); % calculate the mean and standard deviation meanr= mean(z); fprintf('Mean of the %d random numbers = %f\n',n,meanr); stdr= std(z); fprintf('Standard deviation of the %d random numbers = %f\n',n,stdr); if nargin>1 & plotflag==1 figure hist(z, max(n/100,10)) end Novo código Nargin n. de argumentos de entrada sintaxe: hist(data vector, number of bins) Introdução MatLab AA-0607

Fazer o plotting da média amostral em função de n Extender simplot.m Para cada valor i = 1 … n, calcular mean(i) = [sum (x(i)…… x(i)) ]/I mean(i) deve convergir para true mean 0.5 para n>>> “Lei dos grandes números” da estatística Fazer plot para visualizar Características de plotting acrescidas grids, log axes, labels, titles Introdução MatLab AA-0607

Código acrescentado ao simplot.m if nargin>1 & plotflag==1 figure % figure for a histogram to see how uniform the numbers are hist(z,max(n/100,10)) figure % figure to see visually how the sample mean converges to 0.5 cs = cumsum(z); % generate a vector of cumulative sums ns = 1:n; % generate a vector of sample sizes runningmean = cs’./ns; % calculate the running mean plot(ns,runningmean); %runningmean = cs./ns'; %semilogx(ns,runningmean); %grid; %axis([1 n 0 1]); %xlabel('Number of random numbers generated'); %ylabel('Mean value'); %title('Convergence of sample mean to true mean'); end Introdução MatLab AA-0607

Exercícios

e) A^2 f) A*A g) inv(A) h) inv(A)*A i) A\A j) A/A k) A/A – eye(3) 1 - Para as matrizes A e B, definidas a baixo, execute as seguintes operações e interprete os resultados. a) A+B b) A*B c) A.*B d) A.^2 e) A^2 f) A*A g) inv(A) h) inv(A)*A i) A\A j) A/A k) A/A – eye(3) l) A*inv(A) – eye(3) Introdução MatLab AA-0607

2 – Utilizando as funções zeros, ones e eye construa as seguintes matrizes: zeros(4) ones(3) ones(2,1) eye(2) Introdução MatLab AA-0607

3 – A partir das matrizes A e B do exercício 2 e D = [A B] verifique quais são as operações válidas.   a) A*D b) D*A c) D’*A d) A*D*B e) A*B*D f) A*D’ g) D(:,1:3)*A h) D(1:3,:)*A Introdução MatLab AA-0607

4 – A partir de um conjunto 500 de valores aleatórios com distribuição normal (média 10 e desvio padrão 2) determine a percentagem de valores: superiores a 10 entre 8 e 12; entre 6 e 14; superiores a 15.  5- Represente graficamente a função de densidade de probabilidade da distribuição normal reduzida, no intervalo de -3 a 3. Introdução MatLab AA-0607

6 – A partir de um conjunto de 100 valores aleatórios com média 500 e desvio padrão 100, representando uma série de valores anuais de precipitação entre 1900 e 1999, elabore um programa que: Represente graficamente esta série temporal (Figura 1). Conte o número de ocorrências em que a precipitação excedeu o valor médio mais duas vezes o desvio padrão (valores considerados anómalos). Represente no gráfico, através de círculos pretos, os valores anteriores. Utilizando a função hist, construa um histograma, com 20 classes, que represente a distribuição da precipitação (Figura 2).     Figura 1 Figura 2 Introdução MatLab AA-0607