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.
Data: 10 a 12 de fevereiro de 2009 e
Linguagem de Programação VI Tipos de Dados Compostos - structs
Programação II Estruturas de Dados Aula 01
abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto.
Susana Nascimento Departamento de Informática
Ludwig Krippahl, 2008 Programação para as Ciências Experimentais 2007/8 Teórica 3.
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 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 Programação 5.1 Octave Programação.
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 3.
Octave Introdução, Variáveis e Matrizes
Vectores e Matrizes Aplicações à Engenharia
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.
Funções, Condições e Ciclos 3.1Introdução aos Computadores e à Programação DI-FCT-UNL-2006/2007 Octave Funções, Condições e Ciclos.
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.
Matrizes e Gráficos Trajectória de Projéctil Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 1º Semestre 2007/2008.
Introdução aos Computadores e à Programação
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.
Universidade Federal de São Carlos Introdução à Linguagem C Comandos.
Chapter 2 Fundamentals (a) (b) Convenções de coordenadas:
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
Introdução à Informática
The language of tecnical computing
R Profa. Suzi
1 Professor Rogério B. de Andrade - Aula 001- Dez/2008 Técnicas e Linguagem de Programação.
Tratamento de Ficheiros
Programação Baseada em Objectos Desenho de TAD
Revisão da Linguagem C.
INTRODUÇÃO À PROGRAMAÇÃO
O Portal do Estudante de Computação
GET – Engenharia de Produção
João Lucas de Oliveira Torres
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
Introdução ao MatLab Aula 1
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
Matlab– Noções introdutórias
IAED Tagus, 2009/2010 Introdução à Programação em C (I)
Introdução ao MatLab Aula 4
Introdução ao MatLab Aula 1
Aula 02 Variáveis, Matrizes, Gráficos
FTIN Formação Técnica em Informática
Seminário 1: Revisão de C
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
O Portal do Estudante de Computação
Tipos de Dados Paradigmas de Programação
Programação em C++ Compiladores
O que é uma folha de cálculo?
Geração de Código Intermediário
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
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.
Programação e Aplicações Gráficas
1 Introdução às Ferramentas Numéricas Funções  Existem mais de 300 funções definidas  Estão agrupadas por categorias:  financeira  data e hora  matemática.
Introdução ao MATLAB 5.3 para Hidrólogos
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Introdução aos Computadores e Programação DI-FCT-UNL-2003/2004
MATLAB - Matrix Laboratory Adaptado de Profa
Trabalho Computacional Mecânica de Fluidos Ambiental Guillaume Riflet, Pedro Pina, Luís Fernandes.
Laboratório I Mateus Raeder. Mateus Raeder – abril de 2010 Expressões booleanas  Tipo boolean -Tipo de dado primitivo -Possui os valores: true e false.
ALGORITMIA. ALGORITMO Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
PARADIGMAS DE LINGUAGENS EXPRESSÕES E INSTRUÇÕES DE ATRIBUIÇÃO
Transcrição da apresentação:

Departamento de Informática Breve Introdução à Programação em MATLAB Aulas Práticas de Aprendizagem Automática & Data Mining Ano Lectivo 2007/2008 Susana Nascimento Joaquim F. Silva Departamento de Informática snt@di.fct.unl.pt jfs@di.fct.unl.pt

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áz de protótipos.

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

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

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)

Uint8 e Doubles Double Maioria funções MATLAB doubles como argumento de entrada return double

Uint8 e Doubles >> a=1:5 a = 1 2 3 4 5 >> b=uint8(a) b = 1 2 3 4 5 >> b=uint8(a) b = 1 2 3 4 5 >> c=double(b) c = >> a*2.5 ans = 2.5000 5.0000 7.5000 10.0000 12.5000 >> b*2.5 3 5 8 10 13 >> c*2.5

Tipo ‘Char’ >> c=['hello']; >> whos Name Size Bytes Class Attributes a 1x5 40 double ans 1x5 40 double b 1x5 5 uint8 c 1x5 10 char >> c(1) ans = h >>

Tipo de Dados ‘Char’ c = hello >> d=[c,‘ again'] d = hello again >> b=['hello';'again'] b = again >> size(b) ans = 2 5

Tipo de Dados ‘Struct’ >> image.height=3; >> image.width=3; >> image.data = [8 10 2; 22 7 22; 2 4 7]; >> whos Name Size Bytes Class Attributes ima 1x1 130 struct image 1x1 590 struct >> clear ima >>

Arrays de Estruturas >> image.name='Tom'; >> image.height=3; >> image.width=3; >> image.data=[8 10 2; 22 7 22; 2 4 7]; >> image(1)=image; >> image(2).name='Mary'; >> image(2).height=4; >> image(2).width=4; >> whos Name Size Bytes Class Attributes image 1x2 870 struct >> image image = 1x2 struct array with fields: name height width data

Arrays de Estruturas >> image(2) ans = name: 'Mary' height: 4 width: 4 data: [] >> image(1) name: 'Tom' height: 3 width: 3 data: [3x3 double] >> >> image.name='Tom'; >> image.height=3; >> image.width=3; >> image.data=[8 10 2; 22 7 22; 2 4 7]; >> image(1)=image; >> image(2).name='Mary'; >> image(2).height=4; >> image(2).width=4; >> whos Name Size Bytes Class Attributes image 1x2 870 struct >> image image = 1x2 struct array with fields: name height width data

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)

Operadores Aritméticos Transposta, a’ Potência, a^2 Adição, multiplicação, divisão a(1)*b(2) a*b Aplica-se se a e b forem matrizes de dimensões compatíveis (columns(a) = rows(b)) a.*b (elemento a elemento) Excepto para operações com matrizes, a maioria dos operandos devem ser do mesmo tamanho, a menos que um seja um escalar

Operadores Aritméticos Transposta, a’ Potência, a^2 Adição, multiplicação, divisão a(1)*b(2) a*b Aplica-se se a e b forem matrizes de dimensões compatíveis (columns(a) = rows(b)) a.*b (elemento a elemento) excepto para operações com matrizes, os operandos devem ser do mesmo tamanho, a menos que um seja escalar » 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

Operadores Relacionais 2 3 » b b = 4 5 » a > b ans = 0 0 » b > a 1 1 » a > 2 0 1 <, <=, >, >=, ==, ~= Compara elementos correspondentes de arrays das mesmas dimensões Se um é escalar e o outro não, o escalar é comparado com cada elemento O resultado é 0 ou 1, elemento a elemento

Controlo de Fluxo If, else, endif For….. Switch, while if index<100 statements else statements end For….. For i = 1:100 statements end Switch, while

Programação em MATLAB Ficheiros com código MATLAB: “M file”, e.g., sort.m Dois tipos de M-files scripts Não há variáveis de entrada Não são returnados valores Operam os dados na workspace funções Podem aceitar argumentos e retornar valores Por default as variáveis são locais Funcionalidade do Matlab aumentada pela utilização de funções

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. %

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

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; % número de elementos do vector (iterações do “loop for”) y = zeros(n,1); % prealoca memória para o vector y fprintf('Simulando %d números aleatórios.....\n\n',n); % primeiro fazer os cálculos no “loop for" fprintf('For loop calculations.....\n'); tic % iniciar o 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; % ler o tempo que passou desde o “tic” (em segundos) fprintf('Tempo gasto, no 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

Exemplo de Script MATLAB ……… … % agora calculando através da vectorização fprintf('Vectorization calculations.....\n'); tic % iniciar o timer z = rand(n,1); total = sum(z); fprintf('Soma dos %d números aleatórios = %f\n',n,total); t2 = toc; % ler o tempo gasto desde o “tic” (em segundos) fprintf(‘Tempo gasto = %6.5f microsegundos\n', (t2)*1000); (1) Calcula n n. aleatórios e correspondente soma usando função rand; (2) Calcular tempo execução; (3) mostrar resultado

Gerador de números (pseudo) aleatórios em MatLab Gera sequência (de comprimento n) de nºs pseudo aleató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.

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

Função MATLAB Definição de linha de função Requerida em todas as funções Lista de inputs e outputs vírgula separadora: [y, z] = average(a, b, c) Para mais do que um output, os outputs são limitados por parêntesis rectos Variáveis de entrada Variáveis de função são locais à função As variáveis de entrada são legíveis pela função: cópias locais podem ser feitas se precisarmos de mudar os inputs Escopo MATLAB procura seguindo a ordem: nome da variável, subfunção, directoria corrente e search path do MATLAB

Exemplo de função MATLAB function [meanr, stdr, z] = simulate(n); % % Função que calcula e devolve: média e desvio padrão dos números aleatórios % (distribuição uniforme) % 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

Exemplo de função MATLAB function [meanr, stdr, z] = simulate(n); % % Função que calcula e devolve: média e desvio padrão dos números aleatórios % (distribuição uniforme) % 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 % testa se n é inteiro positivo if (rem(n,1)~=0) | n<=0 error('Input n deve ser inteiro positivo'); end Validar condições com mensagens erro

Exemplo de função MATLAB … fprintf(‘Calcula Média e desvio padrão de %d números aleatórios.....\n\n',n); % gera n números aleatórios z = rand(n,1); % calcula a média e o desvio padrão meanr= mean(z); fprintf('Média dos %d números aleatórios = %f\n',n,meanr); stdr= std(z); fprintf(‘Desvio padrão dos %d números aleatórios = %f\n',n,stdr); Não necessita de função return explícita Valores não devolvidos são locais à função

Chamada da função MATLAB >> [x,y]=simulate(200) Calcula média e desvio padrão de 200 números aleatórios..... Média dos 200 números aleatórios = 0.493962 Desvio padrão dos 200 números aleatórios = 0.282144 x = 0.4940 y = 0.2821 >> [x,y]=simulate(200000) Calcula média e desvio padrão de 200000 números aleatórios..... Média dos 200000 números aleatórios = 0.500110 Desvio padrão dos 200000 números aleatórios = 0.288374 0.5001 0.2884

Outra Função MATLAB function [meanr, stdr, z] = simplot(n,plotflag); % % Função que, relativamente a 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 histograma 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 % testa se n é inteiro positivo if (rem(n,1)~=0) | n<=0 error('Input n deve ser inteiro positivo'); end

Simplot.m (cont.) Novo código Nargin n. de argumentos de entrada % generate the n random numbers z = rand(n,1); % calculate the mean and standard deviation meanr= mean(z); fprintf('Média de %d números aleatórios = %f\n',n,meanr); stdr= std(z); fprintf(‘desvio padrão dos %d números aleatórios = %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, número de interv.)

Fazer o plotting da média amostral em função de n Alteração do 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

Código acrescentado ao simplot.m if nargin>1 & plotflag==1 figure % figure para ver quão uniforme é a distribuição hist(z,max(n/100,10)) figure % figure para ver como a amostra converge para 0.5 cs = cumsum(z); % gera um vector de somas cacumuladas ns = 1:n; % gera um vector de tamanhos de amostras runningmean = cs’./ns; % calcula as médias (running mean) plot(ns,runningmean); %runningmean = cs./ns'; %semilogx(ns,runningmean); %grid; %axis([1 n 0 1]); %xlabel('Numero de números aleatórios gerados'); %ylabel(‘Valor da média'); %title('Convergência da média da amostra para a média verdadeira'); end

Exercícios 1- Fazer uma função que receba como entrada um vector e devolva outro vector correspondente à normalização do primeiro.

Exercícios 2- Fazer uma função que, a partir de uma matriz de N objectos e A atributos caracterizadores, devolva a matriz de correlações entre os atributos.