Pensamentos Vividos

sexta-feira, maio 20, 2005

Manipolaçao de Sinais x(t)

Este trabalho é capaz de provocar um escalonamento no tempo e na amplitude de um sinal e tambem uma rotaçao e translaçao no tempo.
O seguinte código desenvolvido em Matlab apresenta essas potencialidades:


function [d,a]=sinal(x,t,y,k);
%
% Dado um sinal qualquer x(t), este programa altera, se desejavel,
% a sua amplitude, a sua fase e a sua frequencia.
%
% x - Amplitude das amostras
% t - Valor do eixo das Abcissas (eixo dos xx)
% y - Valor do factor de escala da amplitude
% k - Operaçao a desempenhar
% Caso nao deseje fazer qualquer tipo de alteraçao ao sinal original, definir k='x'
% Todos os parametros de entrade devem ser introduzidos no momento de
% executar a funcao, os valores de "x" devem ser inseridos entre
% parentises rectos [] separados por espaços, o parametro "k" e uma
% string, deve ser inserida entre pelicas 'string' e deve conter a
% operaçao a executar ex: k='2*t+1'.
%

f=length(x);

g=length(t);

a=y*x;


if f==g %testa se os vectores tem o mesmo numero de elementos
if k~='x'
w=find(k=='t');
k(w)=' ';
w=find(k=='*');
k(w)=' ';
w=find(k=='+');
k(w)=' ';
h=str2num(k);
d=(t-h(2))/h(1);
else
plot(t,a); % mostra o sinal original caso seja introduzido k='x'

grid on

end

else

disp('OBS: os vectores devem ter o mesmo numero de elementos');

disp('Introduza novos valores para os vectores');

end
subplot(2,1,1);
plot(t,a); % mostra o sinal original
grid on;
subplot(2,1,2);
plot(d,a); % mostra o sinal alterado atraves do factor k
grid on;
end

Trabalho desenvolvido para a disciplina de Teoria do Sinal por:
Nuno Santos & Davide Pimenta