AT 2006
Programar ?
Matlab
Vectores Grficos Som em Matlab
Aula
AT 2006
Introduo Programao
AT 2006
Porqu programar ?
Trabalhar na rea da linguagem quase impossvel actualmente sem computadores
Os dados so tratados, analisados, guardados, ordenados, e distribudos por computadores.
Vrias aplicaes esto disponveis, mas para controlar realmente o processo alguns conhecimentos de programao so essenciais.
AT 2006
Exemplos:
Um fonologista interessado em clusters de consoantes. Tem um dicionrio e quer descobrir o mais cluster em posio final de palavra. Faz manualmente ? Um psicolinguista interessado numa experincia acerca da silabificao Foneticistas que necessitam de normalizar a amplitude, calcular formantes, etc de centenas de gravaes
O computador
Mquina programvel que processa informao
AT 2006
Processar informao
Executar sequncias de operaes elementares (instrues) sobre dados provenientes do exterior atravs dum dispositivo de entrada e encaminhar os resultados para o exterior atravs de dispositivos de sada.
AT 2006
Programabilidade
A sequncia de instrues elementares que habitualmente se designa por programa pode ser alterada sempre que se deseje.
AT 2006
Um pouco de estrutura
Aplicaes: MS OFFICE, Browsers, CAD, MATLAB, ...
Sistema Operativo: MS
Windows, LINUX, MacOS, ...
Dispositivos de I/O
Subsistemas: Motherboard, Grficos, Audio, Armazenamento, Comunicaes, ...
Componentes: CPU,
MEMRIA, ...
AT 2006 9
Dispositivos de Entrada/Sada
AT 2006
10
Memria
Agente de armazenamento de informao
Disponibilidad e Acesso Organizao
Capacidade
Suportes fsicos
Electrnicos
AT 2006
Magnticos
pticos
11
Arquitectura funcional
Memria Principal (RAM) Memria de Massa (Disco Duro, Diskette, CDROM)
CPU
CPU
AT 2006
RAM
13
AT 2006
14
Codificao
Os computadores armazenam toda a informao na forma mais elementar designada por bits. Cada bit pode tomar dois valores distintos 1 ou 0. Um conjunto de 8 bits designa-se por Byte. 1024 Bytes = 1kByte. 1024 x 1024 Bytes = 1MByte. 1024 x 1MByte = 1GByte. Para armazenar informao proveniente das mais diversas fontes necessrio codific-la. O conhecimento do cdigo permite interpretar a informao armazenada na forma binria.
AT 2006 15
Capacidade de representao
1 Bit = 2 estados 2 Bits = 4 estados 3 Bits = 8 estados ... N Bits = 2N estados
Memria : :
: :
16
Capacidade de representao
Exemplo do nmero de estados possveis possveis para 3 bits
b2 0 0 0 0 1 1 1 1
AT 2006
b1 0 0 1 1 0 0 1 1
b0 0 1 0 1 0 1 0 1
17
Codificao/Representao
Os vrios tipos de informao so codificados de forma diferente. Para interpretar cada um dos formatos necessrio um descodificador.
AT 2006 18
AT 2006
19
Cdigo ASCII
4x16+1=64+1=65=100 0001
Letra W: 5x16+7=87=101 0111
AT 2006 20
Cdigo ASCII
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ! # $ % & ( ) * + , . / 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 @ A B C D E F G H I J K L M N O 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 P Q R S T U V W X Y Z [ \ ] ^ _ 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 ` a b c d e f g h i j k l m n o 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 p q r s t u v w x y z { | } ~ DEL
Memria : :
0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 77 65 84
76
65 66
: :
AT 2006 22
UNICODE
O cdigo ASCII possui a grande desvantagem de apenas permitir a representao de 28=256 smbolos diferentes. O cdigo UNICODE pretende normalizar a codificao dos caracteres utilizados por todas as escritas existentes no mundo. Utiliza 16 bits para codificar cada caracter e encontra-se disponvel nos sistemas informticos mais recentes. Mais informaes em http://www.unicode.org
AT 2006 23
Cdigos binrios
Para representar nmeros com bits possvel encontrar uma forma mais compacta do que a codificao ASCII. No sistema decimal utilizado para realizar clculo, os nmeros so representados fazendo uso da sua posio relativa:
1995 10 110 9 10 9 10 5 10
3 2 1
Base 10
AT 2006 24
Cdigos binrios
Se modificarmos a base de decimal para binria podemos utilizar o mesmo tipo de representao:
1001 2 1 2 0 2 0 2 1 2
3 2 1
Note-se que o nmero anterior tem o valor em decimal de 8+0+0+1=9, sendo por isso uma das possveis representaes de nmeros decimais em binrio
AT 2006 25
22000 0.22 10
Mantissa
AT 2006
Expoente
26
11000 b 0.11b 2
Mantissa
AT 2006
Expoente
27
Ferramentas Informticas
AT 2006
28
Ferramentas Informticas
Objectivos
Auxiliar na resoluo de problemas cuja resoluo manual seja demorada
Tipos de Ferramentas
Linguagens de programao Anlise e visualizao de dados Ambientes de clculo
AT 2006
29
Linguagens de programao
Utilizadas para realizar todo o tipo de programas mesmo que no sejam de clculo Vantagens
Grande flexibilidade O clculo pode ser mais rpido e eficiente
Desvantagens
Necessidade de aprender uma linguagem Tempo de desenvolvimento para chegar soluo
Exemplos
Fortran, Basic, Pascal, C, Java
AT 2006 30
Desvantagens
Pouco flexveis na manipulao dos dados Difcil automatizar procedimentos
Exemplos
Excel, SPSS
AT 2006
31
AT 2006
32
T. Mx. 22
T. Mn. 10
T. Md. 16,0
25 20 15 10 Temperatura 5 0
10
12
14
16
18
20
Hora
22
33
Ambientes de clculo
Utilizao fcil e aprendizagem rpida Podem realizar clculo simblico e numrico Vantagens
Possibilidade de automatizar os clculos Muito versteis possuindo uma linguagem intuitiva
Desvantagens
So necessrios alguns conhecimentos de programao Mais lentos nos clculos que as linguagens de programao
Exemplos
Mathematica, Maple, MathCad,
Matlab
34
AT 2006
Mathematica
Muito divulgado para clculo simblico Igualmente poderoso para calculo numrico Exemplos de aplicaes
Clculo de limites Clculo de derivadas e integrais Simplificao de expresses algbricas Grficos de funes 2D e 3D
AT 2006
Clculo de limites
Clculo de derivad
Simplificao de expresses
35
Matlab
Vocacionado para o clculo numrico
MATLAB = MATrix LABoratory Os elementos so
sempre matrizes
numricas
Um nmero uma matriz com apenas um elemento
AT 2006 36
Introduo ao Matlab
AT 2006
37
O que o Matlab ?
Aplicao informtica vocacionada para o clculo numrico Aplicaes
Anlise de dados Visualizao cientfica Simulao de sistemas
AT 2006
38
Demonstrao
O Matlab tem um conjunto de demonstraes que ilustram as suas possveis aplicaes. Para aceder demonstrao basta entrar o comando:
demo.
AT 2006
AT 2006
41
A representao dos nmeros feita utilizando um formato exponencial que permite uma gama dinmica muito grande.
AT 2006
42
Norma IEEE754
x (1) (1.0 M ) 2
s ( E Bias )
Expoente
Mantissa
64 63 Expoente Mantissa
43
Consequncias...
finito o universo de representao numrica
Recta real Nmeros representveis
AT 2006
44
Variveis
No Matlab possvel guardar em variveis conjuntos de nmeros, exemplo: x= 2 Os nomes das variveis destinguem as letras maisculas das minsculas.
Exemplo: piPi
As variveis so guardadas no espao de trabalho workspace As variveis podem ser utilizadas nas operaes da mesma forma que os nmeros.
AT 2006 45
Variveis
Apagar variveis
clear v1 v2 clear all whos who apaga as variveis v1 e v2 apaga todas as variveis mostra todas as variveis do espao de trabalho com informao adicional de dimenso e tipo mostra apenas os nomes das variveis
Guardar variveis
save Guarda em disco todas as variveis do workspace load Carrega do disco as variveis guardadas save ficheiro v1 v2 Guarda as variveis v1 e v2 no ficheiro load ficheiro Carrega as variveis do ficheiro
AT 2006
46
Vectores
AT 2006
47
Vectores
Conceito geomtrico de vector (duas dimenses)
y b (a,b)
Direco
lo u d
a
AT 2006
x
48
Vectores
Da figura anterior pode-se concluir que bastam duas grandezas numricas para representar um vector num espao de duas dimenses.
(a,b)
AT 2006
49
Vectores
Num espao com trs dimenses so necessrias trs grandezas:
(a,b,c)
Generalizando, um vector com N elementos pertence a um espao com N dimenses. Elementos de um espao com mais de 3 dimenses so difceis de representar graficamente.
AT 2006 50
Vectores no Matlab
No Matlab para criar um vector v basta fazer por exemplo:
v= [4, 5, 4, 2, 1, 7]
Os elementos so separados por espaos ou vrgulas
AT 2006
51
O operador :
O mais verstil operador do MATLAB Permite definir de forma compacta um conjunto de valores (vector) em progresso aritmtica.
% % x x x % x = valor inicial : passo : valor final; Nota: argumentos de : no podem ser complexos = 1:10; = -pi : 2*pi/359 : pi; = 100:-2:80; O recurso ao : no obriga delimitao por []
AT 2006
52
linspace
% Quando sabemos os limites numricos da sequncia % xi e xf e o nmero de elementos N ento devemos % recorrer funo x =
linspace(xi,xf,N);
x = linspace(10,-10,5) x = 10 5 0 -5
-10
AT 2006
53
logspace
% Quando pretendemos criar uma sequncia com espaamento logaritmico entre os valores 10^d1 e 10^d2. % O parmetro N especifica o nmero de pontos % Exemplo: 5 pontos com espaamento logartmico entre os valores 10 e 100 >> logspace(1,2,5) ans = 10.0000 17.7828 31.6228 56.2341 100.0000 % Utiliza-se para a construo de grficos com escalas logartmicas.
AT 2006 54
Grficos
AT 2006
55
Nesta verso mais simples desenhado um grfico de linha contnua com a amplitude dos elementos do vector v. Nas abcissas aparecem os ndices dos elementos de v.
AT 2006
56
Rotao 3D do grfico Edio Manual das propriedades do Grfico Insero manual de texto Insero de setas e linhas Zoom
Ordenadas Abcissas
Exemplo
30
20
10
-10
-20
-30 -10
-8
-6
-4
-2
10
AT 2006
59
plot(x1,y1,string1,x2,y2,string2,...)
A string pode definir os seguintes atributos das linhas desenhadas - Marcadores dos pontos do grfico - Cor das linhas e marcadores - Tipo de linha a desenhar
AT 2006 60
Marcadores
ponto crculo marca x marca mais estrela quadrado diamante tringulo (cima) tringulo (baixo) tringulo (esquerda) tringulo (direita) pentagrama hexagram
Linhas
: -. -trao linha a
AT 2006
61
plot(x1,y1, '-ob')1.5
1
plot(x2,y2, '-+r')0.5
0
-0.5
-1
-1.5
-2
3 w
AT 2006
62
Legendas
legend('sin(x)','cos(x)')
Grafico de sin(x) e cos(x) 1 0.8 0.6 sin(x) cos(x)
ylabel('y')
-0.6 -0.8 -1
xlabel('x')
AT 2006
3 x
63
AT 2006
64
Som em Matlab
>> Ver Matlab num Instante
AT 2006
65
Sumrio
Gerao de som com o Matlab
Funes do Matlab para manipular sons
Som no Matlab
possvel utilizar o Matlab na manipulao e gerao de som. Existem funes para ler ficheiros de som para um vector, gravar um vector para um ficheiro e para reproduzir sons a partir de ficheiros. Podem-se ouvir os vectores!
AT 2006
67
Funo sound
A funo sound permite reproduzir um som armazenado num vector. Sintaxe sound(x,fa) em que x um vector linha ou coluna e fa a frequncia de amostragem que se pretende utilizar.
AT 2006
68
Funo wavread
A funo wavread l um ficheiro de som em formato wav do Windows. Sintaxe [x,fa]= wavread(ficheiro) em que x um vector , fa a frequncia de amostragem utilizada e ficheiro o ficheiro de som que se pretende ler.
AT 2006
69
Funo wavwrite
A funo wavwrite escreve um ficheiro de som em formato wav do Windows. Sintaxe wavwrite(x,fa,ficheiro) em que x um vector , fa a frequncia de amostragem utilizada e ficheiro o ficheiro de som onde se pretende guardar o som armazenado em x.
AT 2006
70
AT 2006
71
y= x(end:-1:1);
% Inverte no tempo
wavwrite(y,fa,'som2.wav');
AT 2006 72
x= rand(1,10000)-0.5; sound(x,8000);
AT 2006
74
fa= 8000; Ta= 1/fa; t= 0:Ta:1; %Gera o sinal de tempo x= sin(2*pi*1000*t); % sinuside de 400Hz
sound(x,fa);
AT 2006
75
*t.*t);
AT 2006
78