jueves, 14 de marzo de 2019

EJEMPLOS DE SEÑALES singulares EN MATLAB

%EJEMPLOS DE SEÑALES singulares EN MATLAB
% Autor: Alexander Arias
% Fecha: 14 de marzo de 2019
%http://5minutosdematlab.blogspot.com/2011/09/ejemplos-de-codigo-para-forma
%r-senales.html
% SEÑAL CUADRADA
% Consideremos primero la generación de una onda cuadrada de amplitud A, frecuencia fundamental w (medida en radianes por segundo) y ciclo útil rho. Recordemos que el ciclo útil es la fracción de cada periodo en donde la señal es positiva.

disp('Señal Cuadrada');
A = 1;
w = 10 * pi;
rho = 0.5;
t = 0:0.001:1;
sq = A*square(w*t+rho);
plot(t,sq);
axis([0 1 -1.5 1.5]);

d=input('ingrese una tecla para continuar');
%SEÑAL diente de sierra
%Consideremos ahora la generación de una onda triangular de amplitud A, frecuencia fundamental w y ancho Wdt . El periodo de la onda triangular será T con el máximo valor de la señal ocurriendo en t = WT . El comando básico para generar esta señal es:
% A * sawtooth(w * t + Wdt)
disp('Señal Diente de sierra');
A = 1;
w = 10 * pi;
t = 0:0.001:1;
Wdt=0;
sw=A * sawtooth(w * t + Wdt);
plot(t,sw);
axis([0 1 -1.5 1.5]);

d=input('ingrese una tecla para continuar');

%SEÑAL ESCALÓN CONTINUA
%En Matlab, el comando ones(M, N) genera una matriz de unos de tamaño MxN, y el comando zeros(M, N) es una matriz de ceros del mismo tamaño. Se puede hacer uso de estas dos matrices para generar dos señales comúnmente usadas: la señal escalón y la señal impulso.
%Una señal paso de amplitud uno, puede ser generada con el siguiente comando.
%U = [zeros(1, 10), ones(1, 11)];
%Para la versión continua creamos un vector que represente el tiempo el cual tenga muestras de un intervalo separados por valores muy pequeños. Los comandos y los resultados se muestran a continuación:
disp('Señal Escalón Continua');
u=[zeros(1,10),ones(1,11)];
t=-1:0.1:1;
plot(t,u)
axis([-1 1 -0.5 1.5]);

d=input('ingrese una tecla para continuar');
disp('Señal Escalón Continua con Heaviside');
t=-10:0.1:10;
yh=heaviside(t);
plot(t,yh);
axis([-10 10 -0.5 1.5]);

d=input('ingrese una tecla para continuar');
%SEÑAL RAMPA CONTINUA
%Para generar la señal rampa, tan solo es necesario recordar que esta función puede ser creada, como la composición de una recta Y(x) = x a partir de cero y de la recta Y(x) = 0 para valores de x menores de cero, así la versión discreta se muestra a continuación:
disp('Señal Rampa Continua');
t1=0:0.1:10;
rampa1=t1;
rampa=[zeros(1,101),rampa1];
t2=-10:0.1:0;
t=[t2,t1];
plot(t,rampa);

d=input('ingrese una tecla para continuar');
%SEÑAL RAMPA CONTINUA con heaviside
disp('Señal Rampa Continua con Heaviside');
t=-10:0.1:10;
yr=t.*heaviside(t);
plot(t,yr);
axis([-10 10 -0.5 1.5]);


d=input('ingrese una tecla para continuar');
%Señal escalón discreta
%Como se menciono anteriormente, una señal generada en Matlab es inherentemente de naturaleza discreta. Para visualizar una señal en tiempo discreto se puede hacer uso del comando stem. Específicamente stem(n, x), bosqueja los datos contenidos en el vector x como una señal de tiempo discreto con los valores de tiempo definidos por el vector n. Los vectores n y x deben tener dimensiones compatibles, es decir deben tener el mismo número de elementos. Así, para este caso para obtener la representación de esta señal en tiempo discreto creamos un vector-tiempo el cual debe tener valores separados por una unidad.
disp('Señal Escalón Discreta');
u=[zeros(1,10), ones(1,11)];
n=-10:10;
stem(n,u);

d=input('ingrese una tecla para continuar');
%SEÑAL IMPULSO Discreta
%La versión discreta de la señal impulso se puede también generar con ayuda de las funciones zeros y ones, realizando una composición como sigue:
disp('Señal Impulso');
delta = [ zeros( 1 ,10 ), 1 , zeros( 1 ,10 ) ];
n = -10:10;
stem(n,delta);

% Ejercicios:
% 1) Desarrollar un conjunto de comandos Matlab para aproximar las siguientes señales periódicas en tiempo continuo, dibujando 5 ciclos de cada una:
% a) Onda Cuadrada, de amplitud 5 Volts, frecuencia fundamental 20 Hz y ciclo útil del 60%.
% b) Señal diente de sierra, amplitud 5 Volts y frecuencia fundamental 20Hz


d=input('ingrese una tecla para continuar');
%Desde la página de mathworks
%https://es.mathworks.com/help/signal/gs/impulse-step-and-ramp-functions.ht
%ml
disp('Varias Señales en una sola gráfica');
t = (-1:0.01:1)';  impulse = t==0; unitstep = t>=0; ramp = t.*unitstep; quad = t.^2.*unitstep;
plot(t,[impulse unitstep ramp quad])

No hay comentarios:

Publicar un comentario