Você está na página 1de 8

SISTEMAS LINEARES

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 em Matlab 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 representa informaes. Nesta disciplina trabalharemos apenas com sinais unidimensionais (funes de uma varivel), nos domnios dos nmeros REAIS e COMPLEXOS.

Procedimento Prtico
1. Criao e Armazenamento de Sinais em Matlab
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 dimenses 1 x N (vetor linha) ou N x 1(vetor coluna), 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-se a transposio do vetor x = [1 2 3 4 5] Vetores colunas podem ser estendidos naturalmente para o caso de sinais multi-canais (multidimensionais), no qual cada canal representado por uma coluna de um arranjo tipo matriz. Outra forma de se criar vetores de dados usar o operador dois pontos. Considere o tempo de um segundo de um sinal amostrado a 1000 Hz. Um vetor de tempo apropriado para esse sinal seria t = 0:1e-3:1; ou t = 0:0.001: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,1000);

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

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

O que fez o cdigo mostrado acima?

2. Sinais Amostrados
Fontes de sinais analgicos incluem geradores eletromagnticos, de udio, sonar, biomdico e outras. Sinais analgicos precisam ser amostrados e quantizados 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 o seguinte trecho de programa Matlab (script): 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) Quantos ciclos so mostrados em cada um dos sinais plotados pelo cdigo acima? Uma alternativa criao de sinais usar uma funo das diversas caixas de ferramentas do Matlab (toolbox). Uma variedade de funes Matlab gera formas de onda. Cada uma delas requer que voc inicie com um vetor representando uma base temporal. Algumas dessas funes sero descritas mais adiante. 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 for maior do que duas vezes a mxima freqncia do sinal contnuo a ser 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); % sinal analogico plot(t,xa), hold on fs = 15; ts = 0:1/fs:2; xs1 = sin(2*pi*5*ts); % sinal amostrado 15Hz plot(ts,xs1,bo-) fs = 7.5; ts = 0:1/fs:2; xs2= sin(2*pi*5*ts); % sinal amostr. em 7,5Hz plot(ts,xs2,ro-), hold off

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

Existe aliasing em algum dos sinais amostrados? Qual? Porque?

3. 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))

% .* => multiplic. elemento a elemento

Para que serve o comando strips? (dica: digite na linha de comandos help strips.) O que faz o operador .* ? Ferramenta de Processamento de Sinais (sptool): A aplicao da caixa de ferramentas de processamento de sinais, denominada SPTool (Signal Processing Tool), disponibiliza um ambiente grfico para visualizao de sinais, projeto de filtros, e anlise espectral. Essa ferramenta utiliza a interface grfica com o usurio (GUI) para facilitar a execuo das tarefas citadas. O SPTool constitudo por: Paginador de sinais (Signal Browser) usado para se analisar sinais. Voc pode tambm partes de sinais usando o hardware de udio do seu computador. Projetista de filtros (Filter Designer) usado para se projetar ou editar filtros digitais do tipo FIR ou IIR. A ferramenta FDATool outra aplicao GUI mais especfica para se projetar filtros. Visualizador de filtros (Filter Viewer) usado para se analisar as caractersticas dos filtros. Visualizador de espectro (Spectrum Viewer) usado para se fazer anlise espectral dos sinais. Para carregar e abrir a aplicao SPTool, comande: 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 no SPTool Voc pode usar o SPTool para analisar sinais, filtros ou espectros que voc 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;

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

ts = 0:1/fs:0.5; f = 250 + 240*sin(2*pi*ts); x = sin(2*pi*f.*ts); Importe os sinais f e x para dentro do SPTool e use a ferramenta para examin-los. 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.

4. 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: Degrau unitrio fs = 10; ts = [0:1/fs:5 5:1/fs:10]; x = [zeros(1,51) ones(1,51)]; stairs(ts,x) Impulso com largura w: fs = 10;

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

w = 0.1; ts = [-1:1/fs:-w 0 w:1/fs:1]; x = [zeros(1,10) 1 zeros(1,10)]; plot(ts,x) 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); Ampl = 5; freq = 2; fase = pi/8; senoide = Ampl * sin(2*pi*freq*t + fase); plot(t, senoide)

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); squad1 = square(2*pi*4*t); plot(t,squad1) axis([-0.1 1.1 -1.1 1.1]) Exemplo: Duty cycle de 75% e freqncia de 4 Hz. t = linspace(0,1,1001); squad2 = square(2*pi*4*t,75); plot(t,squad2) 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 a localizao do pico da onda. Exemplo: Pico no final do perodo (padro do Matlab) e freqncia de 3 Hz. t = linspace(0,1,1001); ds1 = sawtooth(2*pi*3*t); plot(t,ds1) Exemplo: Pico na metade do perodo e freqncia de 3 Hz. t = linspace(0,1,1001); ds2 = sawtooth(2*pi*3*t,1/2); plot(t,ds2)

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

Sinais Complexos: sinais peridicos podem ser representados por exponenciais complexas: x(t) = ej2ft = cos(2ft) + j sen(2ft) = cos( t) + j sen( 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: f = 0.1; t = 0:0.05:10; x = exp(2*pi*j*f*t); plot(t,real(x),t,imag(x),'r'); grid title('\bfExponencial Complexa'); xlabel('\itt ylabel('Amplitude'); legend('Parte Real','Parte Imaginria'); axis([0 10 -1.1 1.1])

\rm(s)');

O Matlab reconhece as letras j ou i como sendo a raiz quadrada de -1, desde que voc no defina essas variveis, j ou i, com valores diferentes, por exemplo: j = 0; i = 15; Funes do Matlab para manipulao de dados complexos: real, imag, abs, angle

5. 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 variaveis clear load variaveis t x3

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

6. Modulao e Demodulao
A Modulao varia a amplitude, a fase, ou a freqncia de um sinal portador (portadora) da informao, o sinal mensagem. A funo Matlab denominada modulate faz a modulao de um sinal mensagem com um determinado mtodo 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 Matlab 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.

Exerccios: 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, inicialmente, um arquivo .m, e posteriormente usando o SPTool. As linhas de cdigo mostradas abaixo esboam dois sinais elementares contnuos no tempo, quais so? t = -10:0.01:10; % tempo (abscissas) y1 = (t >= 0); % sinal 1 y2 = 0.2*t; % sinal 2 h = plot(t,y1,'r',t,y2,'b'); set(h,'linewidth',3); xlabel('Tempo'); ylabel('Amplitude'); title('SINAL CONTNUO NO TEMPO'); grid 4. Dado o cdigo abaixo, estude as formas de onda dos sinais discretos no tempo. y1 = ones(1,10); y2 = 1:10; x = -4:5; size(x,1) size(x,2) % sinal degrau unitrio % sinal rampa % qtde de linhas do vetor x % qtde de colunas do vetor x

2. 3.

PROF. CLUDIO A. FLEURY

SISTEMAS LINEARES

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'); 5. 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

6. 7. 8. 9.

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

y[n] = 2e 0.5n .

y[n] = 2e 2 n .

Trace o grfico do produto dos sinais gerados no exerccio 3.

PROF. CLUDIO A. FLEURY