Você está na página 1de 8

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

Exper.

Sinais Representao e Manipulao


Objetivo

Este laboratrio descreve como usar o Matlab para representar e manipular alguns sinais elementares: Criao e armazenamento de sinais elementares Importao de sinais Amostragem e re-amostragem Visualizao de sinais Modelagem de rudo Modulao

Fundamentao Terica
SINAL: uma funo matemtica de uma ou mais variveis independentes, que carrega informaes. Nesta disciplina trabalharemos apenas com funes de uma varivel (sinais unidimensionais), nos domnios dos nmeros REAIS e COMPLEXOS.

Procedimento Prtico
Base de tempo: Amplitude do sinal: t = [0.0 0.1 0.2 0.3] x = [1.0 3.2 2.0 8.5]

A construo principal de dados em Matlab o arranjo numrico, uma coleo ordenada de dados numricos reais ou complexos com uma ou mais dimenses. Os objetos de dados bsicos do processamento de sinais (sinais unidimensionais, ou seqncias, sinais multi-canais, e sinais bidimensionais) so todos naturalmente acomodados na representao de arranjos (vetores e matrizes). O Matlab representa sinais de dados amostrados unidimensionais, ou seqncias, como vetores. Vetores so arranjos de 1xN ou Nx1, onde N o nmero de amostras na seqncia. Para se armazenar uma seqncia no Matlab deve-se entrar uma lista de elementos na linha de comando. A sentena x = [1 2 3 4 5] cria uma seqncia real de cinco elementos em um vetor linha. Ela pode ser convertida para um vetor coluna fazendo a transposio x = [1 2 3 4 5] Vetores colunas podem ser estendidos naturalmente para o caso de sinais multi-canais, no qual cada canal representado por uma coluna de um arranjo (matriz). Outra forma de se criar vetores de dados usar o operador dois pontos. Considere um segundo de um sinal amostrado a 1000 Hz. Um vetor de tempo apropriado seria t = 0:1e-3:1; onde o operador dois pontos cria um vetor linha de 1001 elementos representando o tempo de zero a um segundo em passos de milsimos de segundo. Voc tambm pode usar a funo linspace para criar o mesmo vetor de dados: t = linspace(0,1,1e3);

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

Experimente: t1 t2 t3 T X = = = = = [0 .1 .2 .3]; 0:0.1:0.3; linspace(0, 0.3, 4); [t1 t2 t3]; sin(T)

Q: O que faz o cdigo mostrado acima?

Sinais Amostrados Fontes de sinais analgicos incluem eletromagntico, udio, sonar, biomdico e outras. Sinais analgicos devem ser amostrados antes de serem processados digitalmente. Amostragem: x(n) = xa(nTs) x um sinal discreto amostrado a partir de um sinal analgico xa com um perodo TS e freqncia de amostragem FS = 1 / TS. Experimente: Fs = 100; N = 1000; tempofinal = 9.99; t1 = (0:N-1)/Fs; t2 = 0:1/Fs:tempofinal; x1 = sin(2*pi*2*t1); x2 = sin(2*pi*3*t2); plot(x1), figure, plot(x2) Q: Quantos ciclos so mostrados em cada um dos sinais plotados pelo cdigo acima? Uma alternativa para criar sinais usar uma funo das diversas caixas de ferramentas do Matlab (toolbox). Uma variedade de funes gera formas de onda. Cada uma delas requer que voc inicie com um vetor representando uma base temporal. Algumas dessas funes ainda sero descritas nesse laboratrio. Aliasing Sinais digitais so normalmente derivados da amostragem de sinais de tempo contnuo via conversor analgico-digital (A/D). Se o sinal contnuo, xa(t), limitado em banda, significa que ele no contm freqncias acima de uma freqncia mxima fM. O teorema da amostragem (Shannon) diz que esse tipo de sinal pode ser completamente recuperado de um conjunto de amostras se a freqncia de amostragem fs maior do que duas vezes a mxima freqncia do sinal contnuo que foi amostrado: fs > 2fM Esta freqncia mxima fM conhecida como a freqncia de Nyquist. Se a freqncia de amostragem no for maior que duas vezes a freqncia de Nyquist, o sinal contnuo no pode ser unicamente recuperado e acontece o aliasing (um sinal apelido recuperado). Experimente: t = 0:0.001:2; xa = sin(2*pi*5*t); plot(t,xa), hold on fs = 15; ts = 0:1/fs:2; xs1 = sin(2*pi*5*ts); plot(ts,xs1,ro-) fs = 7.5; ts = 0:1/fs:2; xs2 = sin(2*pi*5*ts); plot(ts,xs2,ro-), hold off Q: Existe aliasing em algum dos sinais amostrados? Qual? Porque? % sinal analogico % sinal amostrado 15Hz % sinal amostr. 7.5Hz

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

Visualizao de Sinais Visualizar a amplitude do sinal versus ndice temporal Funes: plot, stem, stairs, strips Ouvir o sinal de dados: sound

Obs.: os comandos sound e soundsc no funcionaro se o hardware do seu computador no estiver instalado corretamente. Se este for o caso, veja os sinais ao invs de ouvi-los. Experimente: t = [0.1 0.2 0.3 0.4]; x = [1.0 8.0 4.5 9.7]; plot(t,x) figure, stem(t,x) figure, stairs(t,x) fs = 1000; ts = 0:1/fs:2; f = 250 + 240*sin(2*pi*ts); x = sin(2*pi*f.*ts); strips(x,0.25,fs) sound(x,fs) plot(ts,x) plot(ts(1:200),x(1:200)) Q: Para que serve o comando strips? (veja help strips.) Q: O que faz o operador .* ? Ferramenta de Processamento de Sinais (sptool) A aplicao da caixa de ferramentas de processamento de sinais, denominada SPTool, disponibiliza um rico ambiente grfico para visualizao de sinais, projeto de filtros, e anlise espectral. Todas essas tarefas podem ser realizadas a partir do ambiente grfico (GUI) do SPTool: O paginador de sinais (Signal Browser) para analisar sinais. Voc pode tambm tocar pores de sinais usando o hardware para udio de seu computador. O projetista de filtros (Filter Designer) para projetar ou editar filtros digitais do tipo FIR ou IIR. Observe que a ferramenta FDATool o GUI preferido para projetar filtros. FDATool ser discutida em outro laboratrio. O visualizador de filtros (Filter Viewer) para analisar as caractersticas dos filtros. O visualizador de espectro (Spectrum Viewer) para fazer anlise espectral. Para abrir a aplicao SPTool, experimente: sptool Veja o sinal train, o filtro FIRbp, e o espectro trainse. (voc ver 3 figuras Sinais, Filtros, Espectros. O Filter Designer est disponvel via opo de menu File Preferences. Voc pode tocar os sons usando o cone do alto-falante disponvel na barra de ferramentas do Signal Browser.) Importando um Sinal Voc pode usar a SPTool para analisar sinais, filtros ou espectros que voce criar na linha de comandos do Matlab. Voc pode importar sinais, filtros ou espectros do espao de trabalho (workspace) do Matlab para dentro do SPTool usando a opo Import do menu File. Experimente: fs = 1000; ts = 0:1/fs:0.5; f = 250 + 240*sin(2*pi*ts); x = sin(2*pi*f.*ts);

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

Importe esses sinais (f e x) para dentro do SPTool e use a ferramenta para examin-los. Q: Quais so os cones disponveis para ampliao de viso horizontal (horizontal zoom)? Paginador de Sinais (Signal Browser) Essa ferramenta um ambiente interativo de explorao do sinal. Ela fornece uma visualizao grfica dos objetos sinais correntemente selecionados na lista de sinais do SPTool. Usando o Signal Browser voc pode: Visualizar e comparar vetores e arranjos de sinais Visualizar mais de perto uma faixa de dados do sinal (zoom in) para examin-lo com mais preciso. Medir uma variedade de caractersticas do sinal Tocar um sinal no hardware de udio Para abrir/ativar o Signal Browser do SPTool, proceda assim: Clique em um ou mais sinais (use a tecla Shift para selees mltiplas) na lista de sinais do SPTool. Clique o boto [View] na lista de sinais do SPTool.

Gerao de Sinais Sinais Crie um vetor com a base de tempo para o sinal: Crie um sinal como funo do tempo: t = [0:0.1:2]; x = sin(pi*t/2); plot(t,x)

Funes teis do Matlab para gerar sinais: funes no-peridicas: ones, zeros, step, impulse, gensig funes peridicas: sin, cos, square, sawtooth Sinais no-peridicos t = linspace(0,1,11) Degrau Unitrio (step): y = ones(1,11); stem(y) Impulso Unitrio: y = [1 zeros(1,10)]; stem(y) Rampa: y = 2*t; plot(y) Experimente: Funo Degrau: fs = 10; ts = [0:1/fs:5 5:1/fs:10]; x = [zeros(1,51) ones(1,51)]; stairs(ts,x) Funo Impulso com largura w: fs = 10; w = 0.1; ts = [-1:1/fs:-w 0 w:1/fs:1]; x = [zeros(1,10) 1 zeros(1,10)];

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

plot(ts,x) Funo Delta (impulso unitrio): ts = 0:0.5:5; x = [1 zeros(1,length(ts)-1)]; stem(ts,x) axis([-1 6 0 2])

Senides Parmetros de senides: Amplitude, A Freqncia, f Fase, Deslocamento Vertical (polarizao, oset), B A forma geral de uma senide : y = A.sen(2ft + ) + B Exemplo: gerar uma senide com as seguintes especificaes: A = 5; f = 2 Hz; = /8 rad. t = linspace(0,1,1001); A = 5; f = 2; p = pi/8; sinewave = A*sin(2*pi*f*t + p); plot(t, sinewave)

Sinais Quadrados Formas de onda quadradas devem ter especificado o ciclo de trabalho (o percentual de tempo em que a amplitude do sinal fica em nvel alto duty cycle). Exemplo: Duty cycle de 50% (padro do Matlab) e freqncia de 4 Hz. t = linspace(0,1,1001); sqw1 = square(2*pi*4*t); plot(t,sqw1) axis([-0.1 1.1 -1.1 1.1]) Exemplo: Duty cycle de 75% e freqncia de 4 Hz. t = linspace(0,1,1001); sqw2 = square(2*pi*4*t,75); plot(t,sqw2) axis([-0.1 1.1 -1.1 1.1])

Dente-de-serra Assim como as ondas quadradas, esses sinais precisam de um parmetro que indica o localizacao do pico da onda. Exemplo: Pico no final do perodo (padro do Matlab) e freqncia de 3 Hz. t = linspace(0,1,1001); saw1 = sawtooth(2*pi*3*t); plot(t,saw1)

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

Exemplo: Pico na metade do perodo e freqncia de 3 Hz. t = linspace(0,1,1001); saw2 = sawtooth(2*pi*3*t,1/2); plot(t,saw2)

Sinais Complexos Sinais peridicos podem ser representados por exponenciais complexas: x(t) = ej2ft = cos(2ft) + jsen(2ft) = cos( t) + jsen( t) se t for medido em segundos, ento f ter unidades de seg-1, e ter unidades de radianos/seg. Em processamento de sinais, ns associamos o crculo unitrio com um ciclo de amostragem, de modo que a freqncia de amostragem FS associada com 2 radianos, e a freqncia de Nyquist FS/2 associada com radianos. Valores de no semi-plano superior, em unidades de Hz, ento corresponde s freqncias dentro da faixa de freqncias do sinal contnuo. Experimente: x = exp(2*pi*j*f*t); plot(x) O Matlab reconhece as letras j ou i como sendo a raiz quadrada de -1, a menos que voce defina variveis j ou i com valores diferentes. Funes teis do Matlab: real, imag, abs, angle Salvando e Carregando Sinais Duas funes de entrada/sada de dados so especialmente teis quando trabalhamos com variveis Matlab: O comando save grava variveis do espao de trabalho (workspace) em um arquivo binrio do Matlab (arquivo .mat). O arquivo colocado no diretrio corrente. O comando load l variveis de um arquivo de dados binrios (arquivo .mat) para o espao de trabalho (workspace). Embora pouco especializados, esses comandos podem ser usados no gerenciamento cotidiano de seus clculos no Matlab. Experimente: doc save doc load t = 0:0.1:10; x1 = sin(t); x2 = sin(2*t); x3 = sin(3*t); save myvars clear load myvars t x3

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

Modulao e Demodulao A Modulao varia a amplitude, a fase, ou a freqncia de um sinal portador (portadora) com referncia a um sinal mensagem. A funo modulate modula um sinal mensagem com um mtodo especfico de modulao. A sintaxe dessa funo : y = modulate(x,fc,fs,metodo) onde: x o sinal mensagem. fc a freqncia da portadora. fs a freqncia de amostragem. metodo um sinalizador para o mtodo de modulao desejado (ver tabela).

A funo demod faz a demodulao, isto , ela obtm a mensagem original a partir do sinal modulado. A sintaxe da funo : x = demod(y,fs,fs,method) O sinal x atenuado em relao ao sinal y, porque a demodulao usa filtragem passa-baixas. Exerccio: 1. Crie um sinal igual soma de duas senides com as seguintes caractersticas: a. Durao de 3 segundos b. Freqncia de amostragem de 2 kHz c. Senide 1: freqncia de 50 Hz (baixa), amplitude 10, fase nula. d. Senide 2: freqncia de 950 Hz (alta), amplitude 1, fase nula. Veja e oua ao sinal usando um arquivo .m Usando o SPTool, repita o item anterior. As linhas de cdigo mostradas abaixo esboam dois sinais elementares contnuos no tempo: degrau unitrio e rampa.

2. 3. 4.

y1 = ones(1,10); % sinal degrau unitrio y2 = 1:10; % sinal rampa x = 1:10; plot(x,y1,'r'); xlabel('Tempo'); ylabel('Amplitude'); title('SINAL CONTNUO NO TEMPO'); figure plot(x,y2,'b'); xlabel('Tempo'); ylabel('Amplitude'); title('SINAL CONTNUO NO TEMPO'); 5. Dado o cdigo abaixo, estude as formas de onda dos sinais discretos no tempo. % sinal degrau unitrio

y1 = ones(1,10);

UNIVERSIDADE CATLICA DE GOIS

ENGENHARIA ELTRICA

y2 = 1:10; % sinal rampa x = -4:5; size(x,1) % qtde de linhas do vetor x size(x,2) % qtde de colunas do vetor x stem(x,y1,'r'); xlabel('Amostras'); ylabel('Amplitude'); title('SINAL DISCRETO NO TEMPO'); figure stem(x,y2,'r'); xlabel('Amostras'); ylabel('Amplitude'); title('SINAL DISCRETO NO TEMPO'); 6. Tomando por base os programas apresentados nos itens anteriores, diga o que muda na representao e exibio de sinais de tempo contnuo e discreto no Matlab? Trace o grfico para o sinal contnuo no tempo Trace o grfico para o sinal discreto no tempo Trace o grfico para o sinal discreto no tempo

7. 8. 9.

y (t ) = sen(5 t + / 6) .

y[n] = 2e 0.5n .

y[n] = 2e 2 n .