You are on page 1of 79

Conceitos de Sinais e Sistemas

Mestrado em Cincias da Fala e da Audio Edio 2006/7 Antnio Teixeira

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

No sabendo programar, tem-se poucas opes


Uma fazer o trabalho manualmente Outra contratar algum Outra ainda usar uma aplicao existente
Normalmente limitadas. As necessidades podem no ser contempladas
AT 2006 5

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

Controlo de Interaco Teclado, rato, monitor ...


AT 2006

Comunicaes POTS,ADSL, EtherNET


12

Uma perspectiva dinmica


Memria de massa Programa

CPU
AT 2006

RAM
13

Representao de valores num computador

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 : :

8 Bits 256 palavras


AT 2006

: :
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

Cdigo ASCII (texto)


ASCII
American Standard Code for Information Interchange A primeira verso foi criada em 1963 para normalizar a transmisso e armazenamento de texto. Em 1967 foram includas as letras minsculas no cdigo que no essencial permaneceu inalterado at aos nossos dias.

AT 2006

19

Cdigo ASCII

Exemplo de codificao para a letra A

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

Exemplo cdigo ASCII


Cdigo ASCII 7 Bits = 128 Caracteres
M A T L A B
0 0 0 0 0 0 1 1 1 1 1 1

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

Formato exponencial decimal


Em formato decimal til representar os nmeros utilizando a notao exponencial:

22000 0.22 10
Mantissa
AT 2006

Expoente
26

Formato exponencial binrio


No formato exponencial binrio a mantissa e a base so representados em formato binrio na base 2.

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

Anlise e visualizao de dados


Realizam o tratamento numrico dos dados e a sua visualizao. Utilizadas principalmente para clculo estatstico Vantagens
Fceis de utilizar Obteno rpida de resultados Capacidades de visualizao e apresentao dos resultados poderosas

Desvantagens
Pouco flexveis na manipulao dos dados Difcil automatizar procedimentos

Exemplos
Excel, SPSS

AT 2006

31

Anlise de dados com o Excel


Dados
Vamos supor que conseguimos um ficheiro de texto com as temperaturas registadas em Lisboa durante o ano 2000. Objectivo Determinar a temperatura mdia A temperatura mxima A temperatura mnima

AT 2006

32

Anlise de dados com o Excel


Hora Temperatura 0 12 1 12 2 12 3 11 4 10 5 12 6 15 7 16 8 17 9 18 10 22 11 22 12 21 13 22 14 22 15 20 16 18 17 17 18 17 19 16 20 15 21 13 22 13 23 12
AT 2006

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

Grficos de funes Visualizao de volumes Animaes Tutorais sobre o Matlab


39

O ambiente grfico Janela da comandos


Ajuda Para mudar a pasta de trabalho Documentao e demos dos produtos instalados Espao de trabalho com as variveis Histrico dos comandos Contedo da pasta de trabalho
AT 2006 40

O Matlab como calculadora


O Matlab permite o clculo numrico directo a partir da janela de comando. Operaes matemticas
+ soma - subtraco * multiplicao / diviso ^ potenciao

AT 2006

41

Formato numrico no Matlab


O Matlab utiliza 64 bits para representar os nmeros:
52bits para a mantissa e 12 para o expoente.

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 )

Preciso simples (32 bits, Bias = 127)


31 23 22 0

Expoente

Mantissa

Preciso dupla (64 bits, Bias = 1023) 63 52 51


S Expoente Mantissa

Preciso extendida (80, Bias = 32767)


79 S
AT 2006

64 63 Expoente Mantissa

43

Consequncias...
finito o universo de representao numrica
Recta real Nmeros representveis

Problemas de resoluo Erros de arredondamento Propagao durante computao.

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

Ver as variveis no espao de trabalho (workspace)

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);

% Espaamento linear (uniforme) entre os elementos de x. Evita-se o clculo do passo.

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

Grficos de uma Varivel


Sintaxe do comando plot
v= rand(1,10); plot(v)

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

Sintaxe do comando plot


plot(x1,y1,x2,y2,....) Os vectores das ordenadas x1, x2, ... podem ter um nmero diferente de elementos. O nmero de elementos dos pares (x1,y1) e (x2,y2) deve ser o mesmo. Exemplo: x1= -5:5; x2= -10:10 y1= 2*x1; y2=3*x2; plot(x1,y1,x2,y2)
AT 2006 58

Exemplo
30

20

10

-10

-20

-30 -10

-8

-6

-4

-2

10

AT 2006

59

Alterao do aspecto grfico


Para alm dos argumentos vectoriais a funo plot permite ainda alterar o modo como as linhas so desenhadas. Essas indicaes so codificadas na forma de uma string de texto colocada a seguir aos vectores dos pontos.

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

Definio dos atributos


Cor
y amarelo cheio m rosa ponteada c azul claro ponto r encarnado tracejada g verde b azul w branco k preto . o x + * s d v ^ < > p h

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

Alterao do aspecto grfico


Grafico de "sin(2*x)+cos(x)" e "cos(x).*sin(x)" 2 sin(2*x)+cos(x) cos(x).*sin(x)

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)

title('Grafico 0.4 de sin(x) e cos(x)')


0.2 0 -0.2 -0.4

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

sound wavread wavwrite


Gerao de sons artificais

AT 2006

rudo sinusides soma de duas sinusides sinusides de frequncia varivel


66

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

Exemplo: ficheiro de som


Neste exemplo pretende-se ler para um vector um som armazenado num ficheiro e reproduzilo no Matlab

[x,fa]= wavread('som.wav'); sound(x,fa)

AT 2006

71

Exemplo: Gravar um som


Neste exemplo l-se para um vector armazenado num ficheiro, manipula-se e grava-se num ficheiro diferente.

[x,fa]= wavread('som.wav'); sound(x,fa)

y= x(end:-1:1);

% Inverte no tempo

wavwrite(y,fa,'som2.wav');
AT 2006 72

Alterao da freq. de amostragem


Ao reproduzir um som possvel alterar a frequncia de amostragem com que reproduzido. Exemplo: utilizando o dobro da frequncia de amostragem do original. sound(x,fa*2) Exemplo: utilizando metade da frequncia de amostragem do original sound(x,fa/2)
AT 2006 73

Gerao de sons artificiais


O Matlab possui formas expeditas de gerar sons artificais. Vamos ver como que se geram diferentes tipos de sons. A funo rand gera uma sequncia pseudo aleatria. Qual ser o som produzido por um vector gerado com este funo?

x= rand(1,10000)-0.5; sound(x,8000);

% Rudo de mdia nula

AT 2006

74

Gerao de sons artificiais


A funo seno desempenha um papel central na gerao de sons articiais. Vejamos qual o som que obtemos.

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

Gerao de sons artificiais


Soma de duas sinusides Podemos gerar dois vectores com sinusides com frequncias diferentes e som-los para ouvir o resultado
fa= 8000; Ta= 1/fa; t= 0:Ta:1; %Gera o sinal de tempo x= sin(2*pi*400*t); y= sin(2*pi*410*t); soundsc(x+y,fa);
AT 2006 76

% sinuside de 400Hz % sinuside de 410Hz

Gerao de sons artificiais


Multiplicao de sinusides Podemos gerar dois vectores com sinusides de frequncias diferentes e realizar um produto ponto-a-ponto entre eles.
fa= 8000; Ta= 1/fa; t= 0:Ta:1; %Gera o sinal de tempo x= sin(2*pi*400*t); y= sin(2*pi*80*t); soundsc(x.*y,fa);
AT 2006 77

% sinuside de 400Hz % sinuside de 80Hz

Gerao de sons artificiais


Sinusides de frequncia varivel Com o Matlab no muito dficil gerar uma sinuside cuja frequncia varia linearmente ao longo do tempo.
fa= 8000; Ta= 1/fa; t= [0:Ta:2 2:-Ta:0]; x= sin(2*pi*400 sound(x,fa) %Gera o tempo

*t.*t);

AT 2006

78

Gerao de sons artificiais


Sinusides de frequncia varivel Neste exemplo temos uma sinuside cuja frequncia varia ao longo do tempo de forma sinusidal.
fa= 8000; Ta= 1/fa; t= 0:Ta:2; %Gera o sinal de tempo

s= 80*sin(2*pi*5*t); x= sin(2*pi*400*t + s); sound(x,fa)


AT 2006 79