26 may. 2012

Convolución de una señal coseno

Convolución de una señal coseno de frecuencia 100Hz y una señal escalón.

% Ejemplo de una ffT de una señal exponencial modulada en amplitud% Obtención de la señal en el tiempo a partir de su transformada% Definicion de las señalest = -pi:0.001:pi;g_escalon=[zeros(1,1000*pi+1), ones(1,1000*pi+1)];w = 2*pi;g = cos(w*100*t);g_conv = conv(g,g_escalon);figure(1);subplot(3,1,1);plot(t,g_escalon);title('SEÑAL ESCALON');xlabel('Tiempo (t)');ylabel('e(t)');subplot(3,1,2);plot(t,g);title('cos(2·pi·t)');xlabel('Tiempo (t)');ylabel('cos(2*pi*100*t)');% Convoluciong_conv = conv(g,g_escalon);subplot(3,1,3);plot(t,g_conv(1:length(g)),'r')title('Convolucion');
xlabel('Tiempo (t)');% Transformada y representacion en frecuencia de la convolucion
G_conv=fftshift(fft(g_conv));
% Magnitud de la transformada
Gm_conv=abs(G_conv);
% Base de frecuencias
delta_t = t(2)-t(1);
f = ((1:length(g_conv)) - ceil(length(g_conv)/2)) / length(g_conv) / delta_t;
figure(2);
subplot(2,1,1);
plot(f,Gm_conv,'r');zoom;
title('Transformada de Fourier del producto de convolucion)');
xlabel('frecuencia (Hz)');ylabel('|X(jw)|');
% Obtener G_conv como el producto de los espectros
G_escalon=fftshift(fft(g_escalon));
G=fftshift(fft(g));
G_conv2=G.*G_escalon;
% Base de frecuencias
delta_t = t(2)-t(1);
f2 = ((1:length(t)) - ceil(length(t)/2)) / length(t) / delta_t;
subplot(2,1,2);
plot(f2,abs(G_conv2),'r');zoom;
title('Producto de las transformadas de Fourier)');
xlabel('frecuencia (Hz)');ylabel('|X(jw)|');





Transformada de Fourier de una señal exponencial modulada en amplitud

Transformada de Fourier de una señal exponencial modulada en amplitud con una frecuencia de portadora de 200Hz, x(t)=exp(-2·t)·sin(2·pi·200·t).


% Ejemplo de una ffT de una señal exponencial modulada en amplitud
% con una frecuencia portadora de 200Hz.
% Definicion de la señal
t=-0.25:0.001:0.25;
x=exp(-2*t).*sin(2*pi*200*t);
% Representacion en el tiempo
subplot(3,1,1);
plot(t,x);
title('x(t)=exp(-2t)·sin(2·pi·200·t)');
xlabel('Tiempo (t)');ylabel('x(t)');
% Transformada de Fourier
X=fftshift(fft(x));
% Magnitud y fase de la transformada
Xm=abs(X);
Xf=unwrap(angle(X))*180/pi;
% Base de frecuencias
delta_t = t(2)-t(1);
f = ((1:length(t)) - ceil(length(t)/2)) / length(t) / delta_t;
% Representacion en frecuencia
subplot(3,1,2);
plot(f,Xm,'r');
title('Módulo de transformada de Fourier de x(t)');
xlabel('frecuencia (Hz)');ylabel('|X(jw)|');
subplot(3,1,3);
plot(f,Xf,'r');zoom;
title('fase de la transformada de Fourier de x(t)');
xlabel('frecuencia (Hz)');ylabel('fase X(jw)');

armónicos de una señal cuadrada

n armónicos de una señal cuadrada de periodo 0.2s y amplitud 1.
% Desarrollo en serie de Fourier de una señal cuadrada de periodo 0.2s y amplitud 1
clear;
% frecuencia de la señal cuadrada (=1/T)
f=5;
T=1/f;
% Indice de los coeficientes
n=1:10;
% Generamos la serie de Fourier
t=-1:0.01:1; % vector de tiempos
for i=1:50
for k=1:size(t,2)
s(i,k)=(2*(1-cos(pi*i))/(pi*i))*sin(2*pi*i*f*t(k));
end
end
for k=1:size(t,2)
st(k)=sum(s(:,k));
end
st(1)=st(1)+1;
plot(t,st,'r');
hold on;
% Señal cuadrada original
f_cuadrada=square(2*pi*f*t,50);
plot(t,f_cuadrada);
xlabel('tiempo');
ylabel('Amplitud');

Hallando los coeficientes de una señal cuadrada

Proporciona los coeficientes de Fourier de una señal cuadrada de periodo 0.2s (frecuencia 5Hz) y amplitud igual a 1V.


% Obtener los coeficientes de Fourier para una señal cuadrada de periodo
% 0.2s y amplitud 1.
clear;
% frecuencia de la señal cuadrada (=1/T)
f=5;
T=1/f;
% Indice de los coeficientes
n=1:10;
% Coeficientes de Fourier
cn=2*(cos(n*pi)-1)./(-2*j*n*pi);
co=1;
subplot(2,1,1);
stem(n,abs(cn));
ylabel('Magnitud de cn');
subplot(2,1,2);
stem(n,angle(cn));
ylabel('fase de cn');
xlabel('n');

Posibles formas de representar en MATLAB algunas señales

SEÑAL ESCALÓN
% Ejemplo de señal escalon
>> t=-10:0.01:10;
>> f_escalon=[zeros(1,1000),ones(1,1001)];
>> plot(t,f_escalon);

SEÑAL PULSO
% Ejemplo de señal pulso
>> t=-10:0.01:10;
>> f_pulso=[zeros(1,950),ones(1,101),zeros(1,950)];
>> plot(t,f_pulso);


SEÑAL SAMPLING
% Ejemplo de señal sampling
>> t=-10:0.01:10;
% Señal sampling nula en t=n*pi, n=1,2,...
>> f_sampling=sin(t)./t;
>> plot(t,f_sampling);
% Señal sinc nula en t=n, n=1,2,...
>> f_sinc=sinc(t);
>> plot(t,f_sinc);


SEÑAL IMPULSO O DELTA DE DIRAC
% Ejemplo de señal impulso
>> t=-10:0.01:10;
>> f_impulso=[zeros(1,1000),1,zeros(1,1000)];
>> plot(t,f_impulso);




SEÑAL DIENTE DE SIERRA
% Ejemplo de señal diente de sierra de periodo 0.1Hz
% sawtooth(x,width) señal en diente de sierra con periodo 2*pi para los
% elementos del vector x. El parámetro “width” es un escalar entre
% 0 y 1, y describe la fracción del periodo 2*pi en el que ocurre el
% máximo.
>> t=-10:0.01:10;
>> width=0.10;
>> f_sierra=sawtooth(2*pi*0.1*t,width);
>> plot(t,f_sierra);


SEÑAL TRIANGULAR
% Ejemplo de señal triangular de periodo 0.1Hz
% Es un caso particular de señal diente de sierra con width=0.5
>> t=-10:0.01:10;
>> f_triangular=sawtooth(2*pi*0.1*t,0.5);
>> plot(t,f_triangular);


SEÑAL EXPONENCIAL
% Ejemplo de señal exponencial decreciente
>> t=-10:0.01:10;
% tau: constante de tiempo (RC)
>> tau=200e-2;
>> f_expon=exp(-t/tau);
>> plot(t,f_expon);


SEÑAL CUADRADA
% Ejemplo de señal cuadrada de frecuencia 0.5Hz
% square(x,duty) genera una onda cuadrada de periodo 2*pi con un duty cycle dado
>> t=-10:0.01:10;
>> duty=50; % porcentaje del periodo en el que la señal es positiva
>> f_cuadrada=square(2*pi*0.5*t,duty);
>> plot(t,f_cuadrada); 

Secuencia de Instantes de tiempos con función seno

Generando una secuencia de instantes de tiempo que parta de t=0s y llegue hasta t=0.25s en intervalos de 1ms. Usando una función seno en esa base de tiempo de amplitud 1 y frecuencia 5Hz.

>> Tinicial=0; % Definimos el tiempo inicial
>> Tfinal=0.25; % Definimos el tiempo final
>> step=0.001; % Definimos el paso entre instantes de tiempo
>> t=Tinicial:step:Tfinal-step; % Se genera el vector de tiempos
>> y=1*sin(5*2*pi*t); % Se genera y
>> plot(t,y); hold on; % Dibujamos y
>> plot(t,y,’*’); % Dibujamos las muestras de y 

17 may. 2012

Aliasing y una señal muestreada coseno

f = 60;  % Hz
tmin = -0.05;
tmax = 0.05;
t = linspace(tmin, tmax, 400);
x_c = cos(2*pi*f * t);
plot(t,x_c)
xlabel('t (seconds)')

T = 1/800;
nmin = ceil(tmin / T);
nmax = floor(tmax / T);
n = nmin:nmax;
x1 = cos(2*pi*f * n*T);
hold on
plot(n*T,x1,'.')
hold off

T = 1/400;
nmin = ceil(tmin / T);
nmax = floor(tmax / T);
n = nmin:nmax;
x1 = cos(2*pi*f * n*T);
plot(t, x_c)
hold on
plot(n*T, x1, '.')
hold off

T = 1/120;
nmin = ceil(tmin / T);
nmax = floor(tmax / T);
n = nmin:nmax;
x1 = cos(2*pi*f * n*T);
plot(t, x_c)
hold on
plot(n*T, x1, 'o')
hold off


T = 1/70;
nmin = ceil(tmin / T);
nmax = floor(tmax / T);
n = nmin:nmax;
x1 = cos(2*pi*f * n*T);
plot(t, x_c)
hold on
plot(n*T, x1, 'o')
hold off


T = 1/70;
x_c = cos(2*pi*10 * t);
nmin = ceil(tmin / T);
nmax = floor(tmax / T);
n = nmin:nmax;
x1 = cos(2*pi*f * n*T);
plot(t, x_c)
hold on
plot(n*T, x1, 'o')
hold off

Entrada destacada

Control de aparatos electricos con mando a distancia

  DESCRIPCION GENERAL DEL PROYECTO Con un mando a distancia de una televisión de marca Sony, un receptor infrarrojo de esa misma televisi...