Está en la página 1de 12

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

PROGRAMA PROFESIONAL DE INGENIERÍA MECANICA, MECANICA-ELECTRICA


Y MECATRONICA

CURSO:

Control Mecatronico 2

PRACTICA 3: Aliasing

PRESENTADO POR:

HUAMANI SAMANAMUD, JHERY ALEXANDER

VALDIVIA BUTRON, JOSWARD MATHEW

GRUPO:

“03”

AREQUIPA – PERÚ
CODIGO N°1

Nota: el código número uno presenta fallas al invocar unas librerías con los comandos por lo cual no se
pudo realizar

CODIGO N°2

clc;
clear all;
close all;

t_end = 0.1;
%buen muestreo
fs=10000; %freuencia del muestreo
t = 0:1/(fs-1):t_end;%tiempo de muestreo de señal
f_vector = (0:1/(length(t)/2-1):1).*fs/2;
x1=2*cos(2*pi*100*t)+(2*pi*1000*t)+0.5*cos(2*pi*2000*t);%ecuacion equivalente
X1=abs(fft(x1));%operacion de valor absoluto
figure
subplot(2,2,1)
plot(t,x1); %operacion plot permite graficar la funcion en continuo
title('buen muestreo - señal')
grid on
subplot(2,2,3)
stem(f_vector,X1(1:end/2));%operacion stem permite graficar la forma discreta de la
funcion
title('buen muestreo - espectro de magnitud')
grid on
%mala muestra
% ahora efectuamo lo anterior
% descrito pero con una frecuencia
% menor mostrando un muestreo no exacto

fs2=3000;
t2 = 0:1/(fs2-1):t_end;
f_vector2 = (0:1/(length(t2)/2-1):1).*fs2/2;
x2=2*cos(2*pi*100*t2)+(2*pi*1000*t2)+0.5*cos(2*pi*2000*t2);
X2=abs(fft(x2));

subplot(2,2,2)
plot(t2,x2);
title('mal muestreo - señal')
grid on
subplot(2,2,4)
stem(f_vector2,X2(1:end/2));
title('mal muestreo - espectro de magnitud')
grid on
CODIGO N°3

F = [0 0.2500 0.5000 0.7500 1.0000];%definir los vectores de frecuenci y magnitud


A = [1.00 0.6667 0.3333 0 0];
Order = 511;%definiendo la variable de orden
B1 = fir2(Order,F,A);%comando que permite trabajar la frecuencia y magnitud
[Hx,W] = freqz(B1,1,8192,'whole');%aplica el comando freqz que retorna el numero de
puntos
Hx = [Hx(4098:end) ; Hx(1:4097)]; %define el parametro de trabajo
omega = -pi+(2*pi/8192):(2*pi)/8192:pi;%defines unos para metros
figure (1)
plot(omega,abs(Hx)) %grafica omega versus el valor abs de Hx
xlim([-pi pi])
grid
title('espectro de magnitud')
xlabel('Radianes/muestra')
ylabel('Magnitud')

%definimos las fu nciones iniciales del codigo anterior


F = [0 0.2500 0.5000 0.7500 1.0000];
A = [1.00 0.6667 0.3333 0 0];
Order = 511;
B1 = fir2(Order,F,A);
[Hx,W] = freqz(B1,1,8192,'whole');
Hx = [Hx(4098:end) ; Hx(1:4097)];
omega = -pi+(2*pi/8192):(2*pi)/8192:pi;
plot(omega,abs(Hx))
xlim([-pi pi])
grid
title('Magnitude Spectrum')
xlabel('Radians/Sample')
ylabel('Magnitude')

y = downsample(B1,2,0);%llama a la señal de entrada


[Hy,W] = freqz(y,1,8192,'whole');
Hy = [Hy(4098:end) ; Hy(1:4097)];

hold on
plot(omega,abs(Hy),'r','linewidth',2)
legend('Original Signal','Downsampled Signal')
text(-2.5,0.35,'\downarrow aliasing','HorizontalAlignment','center')
text(2.5,0.35,'aliasing \downarrow','HorizontalAlignment','center')
hold off

%ocurre lo mismo que el anterior solo que e aprecia mejor el aliazing

% en este programa se trata de reducir el aliazing


% mediante comandos
F = [0 0.2500 0.5000 0.7500 1.0000];
A = [1.00 0.6667 0.3333 0 0];
Order = 511;
B1 = fir2(Order,F,A);
[Hx,W] = freqz(B1,1,8192,'whole');
Hx = [Hx(4098:end) ; Hx(1:4097)];
omega = -pi+(2*pi/8192):(2*pi)/8192:pi;

plot(omega,abs(Hx))
xlim([-pi pi])
grid
title('Magnitude Spectrum')
xlabel('Radians/Sample')
ylabel('Magnitude')

y = downsample(B1,2,0);
[Hy,W] = freqz(y,1,8192,'whole');
Hy = [Hy(4098:end) ; Hy(1:4097)];

hold on
plot(omega,abs(Hy),'r','linewidth',2)
legend('Original Signal','Downsampled Signal')
text(-2.5,0.35,'\downarrow aliasing','HorizontalAlignment','center')
text(2.5,0.35,'aliasing \downarrow','HorizontalAlignment','center')
hold off

F = [0 0.2500 0.5000 0.7500 7/8 1.0000];


A = [1.00 0.7143 0.4286 0.1429 0 0];
Order = 511;
B2 = fir2(Order,F,A);

[Hx,W] = freqz(B2,1,8192,'whole');
Hx = [Hx(4098:end) ; Hx(1:4097)];
omega = -pi+(2*pi/8192):(2*pi)/8192:pi;

plot(omega,abs(Hx))
xlim([-pi pi])

y = downsample(B2,2,0);
[Hy,W] = freqz(y,1,8192,'whole');
Hy = [Hy(4098:end) ; Hy(1:4097)];

hold on
plot(omega,abs(Hy),'r','linewidth',2)
grid
legend('Original Signal','Downsampled Signal')
xlabel('Radians/Sample')
ylabel('Magnitude')
hold off

F = [0 0.250 0.500 0.7500 1];


A = [1.0000 0.5000 0 0 0];
Order = 511;
B3 = fir2(Order,F,A);
[Hx,W] = freqz(B3,1,8192,'whole');
Hx = [Hx(4098:end) ; Hx(1:4097)];
omega = -pi+(2*pi/8192):(2*pi)/8192:pi;

plot(omega,abs(Hx))
xlim([-pi pi])

y = downsample(B3,2,0);
[Hy,W] = freqz(y,1,8192,'whole');
Hy = [Hy(4098:end) ; Hy(1:4097)];

plot(omega,abs(Hx))
hold on
plot(omega,abs(Hy),'r','linewidth',2)
grid
legend('Original Signal','Downsampled Signal')
xlabel('Radians/Sample')
ylabel('Magnitude')
hold off

CODIGO N°4

function aliasing (f,fm,tmax)%se creo una funcion aliasing


%definicion de variables
f=10;
fm=12;
tmax=1;
%se define las funciones
fmcont = inv(tmax/1000);
t=0:inv(fmcont):tmax;
tk=0:inv(fm):tmax;
%grafica la funcion
figure (1);
plot(t,sin(2*pi*f*t));
hold on;
plot(tk,sin(2*pi*f*tk),'ro-');
hold off;
axis([0 tmax -1.2 1.2]);
grid on;

title(strcat('fm=',num2str(fm),'fm=',num2str(f)));
drawnow;
CODIGO N°5

clear all, close all,clc


% -----------------------------------------------------------------------
% Considere dos señales x1(t) y x2(t)
% -----------------------------------------------------------------------
f1=10; T1=1/f1;
f2=50;
n=1;
%tiempo donde se evalua la señal
t=0:0.001:n*T1;
%señales 1 y 2
x1=cos(2*pi*f1*t);
x2=cos(2*pi*f2*t);
%visualizacion de señales 1 y 2 respecto a t
figure(1)
subplot(211)
plot(t,x1)
subplot(212)
plot(t,x2)
% -----------------------------------------------------------------------
% Muestreando las señales análogas
% -----------------------------------------------------------------------
fs=40;
T=1/fs;
k=0:4;
x1k=cos(2*pi*10*k./fs);
x2k=cos(2*pi*50*k./fs);
% -----------------------------------------------------------------------
% Ploteando las señales
% -----------------------------------------------------------------------
figure(2)
subplot(211)
plot(k,x1k,'o')
subplot(212)
plot(k,x2k,'o')

figure(3)
subplot(211)
plot(t,x1)
hold on
plot(k*T,x1k,'o-r')
subplot(212)
plot(t,x2)
hold on
plot(k*T,x2k,'o-r')

%graficando mas periodos


t=0:0.001:4*T1;
x1=cos(2*pi*f1*t);
x2=cos(2*pi*f2*t);
fs=40;
T=1/fs;
k=0:4*4;
x1k=cos(2*pi*10*k./fs);
x2k=cos(2*pi*50*k./fs);
figure(4)
subplot(211)
plot(t,x1)
hold on
plot(k*T,x1k,'o-r')
subplot(212)
plot(t,x2)
hold on
plot(k*T,x2k,'o-r')

CODIGO N°6

clear all, close all

%frecuencia de las señales


f1=10; %frecuencia de señal 1
f2=50; %frecuencia de señal 2
fs=40; %frecuencia para la señal discreta

%tiempo donde se evalua la señal


t=0:0.001:0.2;

%señal 1 y 2
x1t=cos(2*pi*f1*t);
x2t=cos(2*pi*f2*t);
%visualizacion de señales 1 y 2 en figura 1
figure(1)
subplot(211)
plot(t,x1t)
subplot(212)
plot(t,x2t);
%graficamos el discreto

%cantidad de puntos para evaluar las señales


k=1:8;
%8 / 40------ 0.2(valor hasta donde se valua la señal)
k=k/fs;
%señal 1 y 2 discreta
x1k=cos(2*pi*f1*k);
x2k=cos(2*pi*f2*k);

%visualizacion de señales 1 y 2 en tiempo discreto


figure(2)
subplot(211)
plot(k,x1k,'o')
subplot(212)
plot(k,x2k,'o');

%visualizacion de la señal 2 analizada en alta frecuencia para coincidir


%con la señal 1
figure(3)
subplot(211)
plot(t,x1t)
hold on
plot(k,x1k,'or')
hold off
CODIGO N°7

clear all
close all
%Se crea un vector de tiempos de 10000 puntos tomados cada milisegundo.
ts=1e-4;
t=0:ts:1-ts;
%frecuencias de las señales de entrada
w1=10;
w2=30;
%frecuencias de muestreo
f1=50/2/pi; f2=300/2/pi;
%señal de entrada
y=sin(w1*t)+sin(w2*t);
y1 = muestra(y,ts,f1);
y2 = muestra(y,ts,f2);
plot(t,y)
figure(2)
plot(t,y1)
figure(3)
plot(t,y2)
%Borro todas las gráficas
close all
%Para dibujar los espectros, donde podemos ver si hay aliasing o no,
%usamos el comando psd(señal,N.puntos para fft, frecuencia de muestro de la
%señal)
psd(y,2^14,1/ts);
psd(y1,2^14,1/ts);
psd(y2,2^14,1/ts);

nota: el código anterior al querer correrlo vota un error sobre la variable muestrea
la cual suponemos es por el código mismo que ya definió esa variable.

CODIGO N°8

%podemos imitar el comportamiento de una onda con otra utilizando solo


%algunos puntos de su señal

%tiempo donde se evalua la señal


t = [0:0.05:1]; %20Hz sampling

%señal senoidal de 2 Hz
a = sin(2*pi*2*t); %2Hz sine wave

%señal senoidal de 18 Hz
b = sin(2*pi*18*t); %18Hz sine wave

plot(t, a);
hold on;
plot(t, b, 'red');

t = [0:0.05:1]; %20Hz sampling


a = sin(2*pi*2*t); %2Hz sine wave
b = sin(2*pi*18*t); %18Hz sine wave
plot(t, a, 'bo');
hold on;
plot(t, b, 'ro');

T = [0:0.001:1]; %1000Hz sampling frequency


A = sin(2*pi*2*T);
B = sin(2*pi*18*T);
% plot for 1000Hz sampling frequency
plot(T, A, 'b');
plot(T, B, 'r');

legend({'2Hz @ 20 Hz f_s', '18Hz @ 20 Hz f_s', '2Hz @ 1000 Hz f_s', '18Hz @ 1000 Hz


f_s'})

CODIGO N°9

%podemos imitar el comportamiento de una onda con otra utilizando solo


%algunos puntos de su señal

%tiempo donde se evalua la señal


t = [0:0.05:1]; %20Hz sampling

%señal senoidal de 2 Hz
a = sin(2*pi*2*t); %2Hz sine wave

%señal senoidal de 18 Hz
b = sin(2*pi*18*t); %18Hz sine wave

%visualizar la señal a respecto al tiempo t


plot(t, a, 'bo');
hold on;
%visualizar la señal a respecto al tiempo t
plot(t, b, 'ro');

%tiempo diferente de evaluacion de señales (intervalos mas pequeños)


T = [0:0.001:1]; %1000Hz sampling frequency
A = sin(2*pi*2*T);
B = sin(2*pi*18*T);

% visualiazacion de graficas en tiempo diferente


plot(T, A, 'b');
plot(T, B, 'r');

%legenda de las 4 señales 2 con diferente intervalo de tiempo


legend({'2Hz @ 20 Hz f_s', '18Hz @ 20 Hz f_s', '2Hz @ 1000 Hz f_s', '18Hz @ 1000 Hz
f_s'})
CODIGO N°10

%podemos imitar el comportamiento de una onda con otra utilizando solo


%algunos puntos de su señal

%tiempo donde se evalua la señal


t = [0:0.05:1]; %20Hz sampling

%señal senoidal de 2 Hz
a = sin(2*pi*2*t); %2Hz sine wave

%señal senoidal de 18 Hz
b = sin(2*pi*18*t); %18Hz sine wave

%señal senoidal de 22 Hz
c = sin(2*pi*22*t); %22Hz sine wave
%señal senoidal de -2 Hz
d = sin(2*pi*-2*t); %%-2Hz sine wave

% visualizar 4 señales
plot(t, a);
hold on;
plot(t, b, 'r');
plot(t, c, 'ko');
plot(t, d, 'g*');

%indicador de puntos (comando leyenda )


legend('2 Hz','18 Hz','22 Hz','-2 Hz')

También podría gustarte