Title: Conceitos de Sinais e Sistemas Mestrado em Ci
1Conceitos de Sinais e SistemasMestrado em
Ciências da Fala e da AudiçãoEdição 2006/7
2- Programar ?
- Matlab
- Vectores
- Gráficos
- Som em Matlab
Aula 2
3Introdução à Programação
4Porquê programar ?
- Trabalhar na área da linguagem é quase impossÃvel
actualmente sem computadores - Os dados são tratados, analisados, guardados,
ordenados, e distribuÃdos por computadores. - Várias aplicações estão disponÃveis, mas para
controlar realmente o processo alguns
conhecimentos de programação são essenciais.
5- Exemplos
- Um fonologista interessado em clusters de
consoantes. Tem um dicionário e quer descobrir o
mais cluster em posição final de palavra. Faz
manualmente ? - Um psicolinguista interessado numa experiência
acerca da silabificação - Foneticistas que necessitam de normalizar a
amplitude, calcular formantes, etc de centenas de
gravações - Não sabendo programar, tem-se poucas opções
- Uma é fazer o trabalho manualmente
- Outra contratar alguém
- Outra ainda usar uma aplicação existente
- Normalmente limitadas. As necessidades podem não
ser contempladas
6O computador
- Máquina programável que processa informação
7Processar informação
- Executar sequências de operações elementares
(instruções) - sobre dados
- provenientes do exterior através dum dispositivo
de entrada - e encaminhar os resultados para o exterior
através de dispositivos de saÃda.
8Programabilidade
- A sequência de instruções elementares que
habitualmente se designa por programa pode ser
alterada sempre que se deseje.
9Um pouco de estrutura
- Aplicações MS OFFICE, Browsers, CAD, MATLAB, ...
- Sistema Operativo MS Windows, LINUX, MacOS, ...
- Subsistemas Motherboard, Gráficos, Audio,
Armazenamento, Comunicações, ...
- Componentes CPU, MEMÓRIA, ...
10Dispositivos de Entrada/SaÃda
11Memória
- Agente de armazenamento de informação
Disponibilidade Acesso Organização
Capacidade
Electrónicos
Magnéticos
Ópticos
12Arquitectura funcional
CPU
Memória Principal (RAM)
Memória de Massa (Disco Duro, Diskette, CDROM)
Comunicações POTS,ADSL, EtherNET
Controlo de Interacção Teclado, rato, monitor ...
13Uma perspectiva dinâmica
Memória de massa
Programa
CPU
RAM
14Representação de valores num computador
15Codificação
- Os computadores armazenam toda a informação 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 informação proveniente das mais
diversas fontes é necessário codificá-la. - O conhecimento do código permite interpretar a
informação armazenada na forma binária.
16Capacidade de representação
- 1 Bit 2 estados
- 2 Bits 4 estados
- 3 Bits 8 estados
- ...
- N Bits 2N estados
Memória
8 Bits 256 palavras
17Capacidade de representação
- Exemplo do número de estados possÃveis possÃveis
para 3 bits
b2 b1 b0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
18Codificação/Representação
Os vários tipos de informação são codificados de
forma diferente. Para interpretar cada um dos
formatos é necessário um descodificador.
19Código ASCII (texto)
- ASCII
- American Standard Code for Information
Interchange - A primeira versão foi criada em 1963 para
normalizar a transmissão e armazenamento de
texto. - Em 1967 foram incluÃdas as letras minúsculas no
código que no essencial permaneceu inalterado até
aos nossos dias.
20Código ASCII
Exemplo de codificação para a letra
A 4x16164165100 0001 Letra W
5x16787101 0111
21Código ASCII
32 48 0 64 _at_ 80 P 96 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 50 2 66 B 82 R 98 b 114 r
35 51 3 67 C 83 S 99 c 115 s
36 52 4 68 D 84 T 100 d 116 t
37 53 5 69 E 85 U 101 e 117 u
38 54 6 70 F 86 V 102 f 118 v
39 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 58 74 J 90 Z 106 j 122 z
43 59 75 K 91 107 k 123
44 , 60 lt 76 L 92 \ 108 l 124
45 - 61 77 M 93 109 m 125
46 . 62 gt 78 N 94 110 n 126
47 / 63 ? 79 O 95 _ 111 o 127 DEL
22Exemplo código ASCII
- Código ASCII
- 7 Bits 128 Caracteres
Memória
0
77
65
84
MATLAB
76
65
66
23UNICODE
- O código ASCII possui a grande desvantagem de
apenas permitir a representação de 28256
sÃmbolos diferentes. - O código UNICODE pretende normalizar a
codificação dos caracteres utilizados por todas
as escritas existentes no mundo. - Utiliza 16 bits para codificar cada caracter e
encontra-se disponÃvel nos sistemas informáticos
mais recentes. - Mais informações em http//www.unicode.org
24Códigos binários
- Para representar números com bits é possÃvel
encontrar uma forma mais compacta do que a
codificação ASCII. - No sistema decimal utilizado para realizar
cálculo, os números são representados fazendo uso
da sua posição relativa
Base 10
25Códigos binários
- Se modificarmos a base de decimal para binária
podemos utilizar o mesmo tipo de representação - Note-se que o número anterior tem o valor em
decimal de 80019, sendo por isso uma das
possÃveis representações de números decimais em
binário
26Formato exponencial decimal
- Em formato decimal é útil representar os números
utilizando a notação exponencial
Mantissa
Expoente
27Formato exponencial binário
- No formato exponencial binário a mantissa e a
base são representados em formato binário na base
2.
Mantissa
Expoente
28Ferramentas Informáticas
29Ferramentas Informáticas
- Objectivos
- Auxiliar na resolução de problemas cuja resolução
manual seja demorada - Tipos de Ferramentas
- Linguagens de programação
- Análise e visualização de dados
- Ambientes de cálculo
30Linguagens de programação
- Utilizadas para realizar todo o tipo de programas
mesmo que não sejam de cálculo - Vantagens
- Grande flexibilidade
- O cálculo pode ser mais rápido e eficiente
- Desvantagens
- Necessidade de aprender uma linguagem
- Tempo de desenvolvimento para chegar à solução
- Exemplos
- Fortran, Basic, Pascal, C, Java
31Análise e visualização de dados
- Realizam o tratamento numérico dos dados e a sua
visualização. - Utilizadas principalmente para cálculo
estatÃstico - Vantagens
- Fáceis de utilizar
- Obtenção rápida de resultados
- Capacidades de visualização e apresentação dos
resultados poderosas - Desvantagens
- Pouco flexÃveis na manipulação dos dados
- DifÃcil automatizar procedimentos
- Exemplos
- Excel, SPSS
32Análise 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 média
- A temperatura máxima
- A temperatura mÃnima
33Análise de dados com o Excel
34Ambientes de cálculo
- Utilização fácil e aprendizagem rápida
- Podem realizar cálculo simbólico e numérico
- Vantagens
- Possibilidade de automatizar os cálculos
- Muito versáteis possuindo uma linguagem intuitiva
- Desvantagens
- São necessários alguns conhecimentos de
programação - Mais lentos nos cálculos que as linguagens de
programação - Exemplos
- Mathematica, Maple, MathCad, Matlab
35Mathematica
- Muito divulgado para cálculo simbólico
- Igualmente poderoso para calculo numérico
- Exemplos de aplicações
- Cálculo de limites
- Cálculo de derivadas e integrais
- Simplificação de expressões algébricas
- Gráficos de funções 2D e 3D
36Matlab
- Vocacionado para o cálculo numérico
- MATLAB MATrix LABoratory
- Os elementos são sempre matrizes numéricas
- Um número é uma matriz com apenas um elemento
37Introdução ao Matlab
38O que é o Matlab ?
- Aplicação informática vocacionada para o cálculo
numérico - Aplicações
- Análise de dados
- Visualização cientÃfica
- Simulação de sistemas
39Demonstração
- O Matlab tem um conjunto de demonstrações que
ilustram as suas possÃveis aplicações. - Para aceder à demonstração basta entrar o
comando - demo.
- Gráficos de funções
- Visualização de volumes
- Animações
- Tutorais sobre o Matlab
40O ambiente gráfico
Janela da comandos
Ajuda
Para mudar a pasta de trabalho
Documentação e demos dos produtos instalados
Espaço de trabalho com as variáveis
Histórico dos comandos
Conteúdo da pasta de trabalho
41O Matlab como calculadora
- O Matlab permite o cálculo numérico directo a
partir da janela de comando. - Operações matemáticas
- soma
- - subtracção
- multiplicação
- / divisão
- potenciação
42Formato numérico no Matlab
- O Matlab utiliza 64 bits para representar os
números - 52bits para a mantissa e 12 para o expoente.
- A representação dos números é feita utilizando um
formato exponencial que permite uma gama dinâmica
muito grande.
43Norma IEEE754
- Precisão simples (32 bits, Bias 127)
- Precisão dupla (64 bits, Bias 1023)
- Precisão extendida (80, Bias 32767)
44Consequências...
- É finito o universo de representação numérica
- Problemas de resolução
- Erros de arredondamento
- Propagação durantecomputação.
Recta real
Números representáveis
45Variáveis
- No Matlab é possÃvel guardar em variáveis
conjuntos de números, exemplo - x 2
- Os nomes das variáveis destinguem as letras
maiúsculas das minúsculas. - Exemplo pi?Pi
- As variáveis são guardadas no espaço de trabalho
workspace - As variáveis podem ser utilizadas nas operações
da mesma forma que os números.
46Variáveis
- Apagar variáveis
- clear v1 v2 apaga as variáveis v1 e v2
- clear all apaga todas as variáveis
- Ver as variáveis no espaço de trabalho
(workspace) - whos mostra todas as variáveis do espaço de
trabalho com informação adicional de dimensão
e tipo - who mostra apenas os nomes das variáveis
- Guardar variáveis
- save Guarda em disco todas as variáveis do
workspace - load Carrega do disco as variáveis guardadas
- save ficheiro v1 v2 Guarda as variáveis v1 e v2
no ficheiro - load ficheiro Carrega as variáveis do ficheiro
47Vectores
48Vectores
- Conceito geométrico de vector (duas dimensões)
V
49Vectores
- Da figura anterior pode-se concluir que bastam
duas grandezas numéricas para representar um
vector num espaço de duas dimensões. - (a,b)
50Vectores
- Num espaço com três dimensões são necessárias
três grandezas - (a,b,c)
- Generalizando, um vector com N elementos pertence
a um espaço com N dimensões. - Elementos de um espaço com mais de 3 dimensões
são difÃceis de representar graficamente.
51Vectores no Matlab
- No Matlab para criar um vector v basta fazer
por exemplo - v 4, 5, 4, 2, 1, 7
- Os elementos são separados por espaços ou vÃrgulas
52O operador
- O mais versátil operador do MATLAB
- Permite definir de forma compacta um conjunto de
valores (vector) em progressão aritmética. - x valor inicial passo valor final
- Nota argumentos de não podem ser
complexos - x 110
- x -pi 2pi/359 pi
- x 100-280
- O recurso ao não obriga à delimitação por
53linspace
- Quando sabemos os limites numéricos da
sequência - xi e xf e o número de elementos N então
devemos - recorrer à função
- x linspace(xi,xf,N)
- Espaçamento linear (uniforme) entre os
elementos - de x. Evita-se o cálculo do passo.
- x linspace(10,-10,5)
- x
- 10 5 0 -5 -10
54logspace
- Quando pretendemos criar uma sequência com
espaçamento logaritmico entre os valores 10d1 e
10d2. - O parâmetro N especifica o número de pontos
- Exemplo 5 pontos com espaçamento logarÃtmico
entre os valores 10 e 100 - gtgt logspace(1,2,5)
- ans
- 10.0000 17.7828 31.6228 56.2341
100.0000 - Utiliza-se para a construção de gráficos com
escalas logarÃtmicas.
55Gráficos
56Gráficos de uma Variável
- Sintaxe do comando plot
- v rand(1,10)
- plot(v)
- Nesta versão mais simples é desenhado um gráfico
de linha contÃnua com a amplitude dos elementos
do vector v. Nas abcissas aparecem os Ãndices dos
elementos de v.
57Rotação 3D do gráfico
Edição Manual das propriedades do Gráfico
Inserção de setas e linhas
Zoom
Inserção manual de texto
Ordenadas
Abcissas
58Sintaxe do comando plot
- plot(x1,y1,x2,y2,....)
- Os vectores das ordenadas x1, x2, ... podem ter
um número diferente de elementos. - O número de elementos dos pares (x1,y1) e (x2,y2)
deve ser o mesmo. - Exemplo
- x1 -55 x2 -1010
- y1 2x1 y23x2
- plot(x1,y1,x2,y2)
59Exemplo
60Alteração do aspecto gráfico
- Para além dos argumentos vectoriais a função plot
permite ainda alterar o modo como as linhas são
desenhadas. Essas indicações são 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 gráfico
- Cor das linhas e marcadores
- Tipo de linha a desenhar
61Definição dos atributos
- Cor Marcadores Linhas
- y amarelo . ponto
- linha a cheio - m rosa o cÃrculo
ponteada - c azul claro x marca x
-. traço ponto - r encarnado marca mais
-- tracejada - g verde estrela
- b azul s quadrado
- w branco d diamante
- k preto v triângulo (cima)
- triângulo (baixo)
- lt triângulo
(esquerda) - gt triângulo
(direita) - p pentagrama
- h hexagram
62Alteração do aspecto gráfico
plot(x1,y1, '-ob')
plot(x2,y2, '-r')
63Legendas
legend('sin(x)','cos(x)')
title('Grafico de sin(x) e cos(x)')
ylabel('y')
xlabel('x')
64(No Transcript)
65Som em Matlab
- gtgt Ver Matlab num Instante
66Sumário
- Geração de som com o Matlab
- Funções do Matlab para manipular sons
- sound
- wavread
- wavwrite
- Geração de sons artificais
- ruÃdo
- sinusóides
- soma de duas sinusóides
- sinusóides de frequência variável
67Som no Matlab
- É possÃvel utilizar o Matlab na manipulação e
geração de som. - Existem funções 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!
68Função sound
- A função sound permite reproduzir um som
armazenado num vector. - Sintaxe
- sound(x,fa)
- em que x é um vector linha ou coluna
- e fa é a frequência de amostragem que se pretende
utilizar.
69Função wavread
- A função wavread lê um ficheiro de som em formato
wav do Windows. - Sintaxe
- x,fa wavread(ficheiro)
- em que x é um vector ,
- fa é a frequência de amostragem utilizada
- e ficheiro é o ficheiro de som que se pretende
ler.
70Função wavwrite
- A função wavwrite escreve um ficheiro de som em
formato wav do Windows. - Sintaxe
- wavwrite(x,fa,ficheiro)
- em que x é um vector ,
- fa é a frequência de amostragem utilizada
- e ficheiro é o ficheiro de som onde se pretende
guardar o som armazenado em x.
71Exemplo ficheiro de som
- Neste exemplo pretende-se ler para um vector um
som armazenado num ficheiro e reproduzi-lo no
Matlab
x,fa wavread('som.wav') sound(x,fa)
72Exemplo 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-11) Inverte no tempo wavwrite(y,fa,'so
m2.wav')
73Alteração da freq. de amostragem
- Ao reproduzir um som é possÃvel alterar a
frequência de amostragem com que é reproduzido. - Exemplo utilizando o dobro da frequência de
amostragem do original. - sound(x,fa2)
- Exemplo utilizando metade da frequência de
amostragem do original - sound(x,fa/2)
74Geração de sons artificiais
- O Matlab possui formas expeditas de gerar sons
artificais. Vamos ver como é que se geram
diferentes tipos de sons. - A função rand gera uma sequência pseudo
aleatória. Qual será o som produzido por um
vector gerado com este função?
x rand(1,10000)-0.5 RuÃdo de média
nula sound(x,8000)
75Geração de sons artificiais
- A função seno desempenha um papel central na
geração de sons articiais. - Vejamos qual o som que obtemos.
fa 8000 Ta 1/fa t 0Ta1 Gera o sinal de
tempo x sin(2pi1000t) sinusóide de
400Hz sound(x,fa)
76Geração de sons artificiais
- Soma de duas sinusóides
- Podemos gerar dois vectores com sinusóides com
frequências diferentes e somá-los para ouvir o
resultado
fa 8000 Ta 1/fa t 0Ta1 Gera o sinal de
tempo x sin(2pi400t) sinusóide de
400Hz y sin(2pi410t) sinusóide de
410Hz soundsc(xy,fa)
77Geração de sons artificiais
- Multiplicação de sinusóides
- Podemos gerar dois vectores com sinusóides de
frequências diferentes e realizar um produto
ponto-a-ponto entre eles.
fa 8000 Ta 1/fa t 0Ta1 Gera o sinal de
tempo x sin(2pi400t) sinusóide de
400Hz y sin(2pi80t) sinusóide de
80Hz soundsc(x.y,fa)
78Geração de sons artificiais
- Sinusóides de frequência variável
- Com o Matlab não é muito dÃficil gerar uma
sinusóide cuja frequência varia linearmente ao
longo do tempo.
fa 8000 Ta 1/fa t 0Ta2 2-Ta0 Gera o
tempo x sin(2pi400t.t) sound(x,fa)
79Geração de sons artificiais
- Sinusóides de frequência variável
- Neste exemplo temos uma sinusóide cuja frequência
varia ao longo do tempo de forma sinusóidal.
fa 8000 Ta 1/fa t 0Ta2 Gera o sinal de
tempo s 80sin(2pi5t) x sin(2pi400t
s) sound(x,fa)