Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Esta instruccin tiene por objeto suprimir de Matlab la informacin relativa a cualquiera de las variables utilizadas en una determinada rutina, de forma que no se altere inadvertidamente la ejecucin de otra rutina distinta. La sentencia del principio evita la posible influencia de variables procedentes de otras rutinas. Coseno El cdigo adjunto puede utilizarse para generar la funcin coseno mostrada en la figura. Cabe observar que la curva no pasa por el origen de los ejes coordenados porque la fase de la funcin no es nula. Tambin conviene destacar que no deben confundirse el periodo de la funcin (el de cualquier funcin peridica), que es t0 en este caso, con el periodo de muestreo para efectuar la representacin (lo que hemos denominado intervalo ms arriba), que vale 10-9 s en este caso.
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
11
%%%%% % Elimina variables utilizadas en otras rutinas % Base de tiempos % % % % % % Periodo de la funcin Frecuencia de la funcin Frecuencia angular de la funcin Fase de la funcin Amplitud de la funcin Funcin
plot (t, y, 'b', 'LineWidth', 2); % La curva aparece en azul con grosor 2 axis ([-1.5e-6, 1.5e-6, -2.5, 2.5]); % Define el rea de dibujo xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Etiq. abs. ylabel ('coseno de periodo T', 'FontName', 'Times', 'Fontsize', 14) % Etiq. ord. set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto ejes grid on; % Malla set (gca, 'xtick', [-10^(-6) 0 10^(-6)], 'XTickLabel', {'-T'; '0'; 'T'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-2 0 2], 'YTickLabel', {'-A'; '0'; 'A'}); title ('Funcin coseno', 'FontName', 'Times', 'Fontsize', 24) % Ttulo clear all; % Elimina las variables utilizadas en esta rutina
Funcin coseno
A
y = Acos(tt + )
coseno de periodo T
-A
-T
t (segundos)
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
12
Exponenciales reales El cdigo adjunto permite obtener los cuatro tipos posibles de exponenciales reales. Cada exponencial est caracterizada por el coeficiente del exponente y por el coeficiente de la exponencial. Obsrvese que se ha utilizado la sentencia subplot para representar las cuatro curvas en una sola figura. Obsrvese tambin que la base de tiempos es nica para todas las figuras.
%%%%% FUNCIONES EXPONENCIALES clear all; t = linspace (-2, 2, 1000); c = -0.5; A = 2; y1 = A*exp(c*t); %%%%% % Elimina variables utilizadas en otras rutinas % Base de tiempos % Coeficiente del exponente % Coeficiente de la exponencial % Funcin
subplot (2, 2, 1); % Seleccin de recuadro plot (t, y1, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A > 0 c < 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -1, 7]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 2], 'YTickLabel', {'0'; 'A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Exponenciales decrecientes', 'FontName', 'Times', 'Fontsize', 24)% Ttulo c = 0.5; A = 2; y2 = A*exp(c*t); % Coeficiente del exponente % Coeficiente de la exponencial % Funcin
subplot (2, 2, 2); % Seleccin de recuadro plot (t, y2, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A > 0 c > 0', 'FontName', 'Times', 'Fontsize', 14); % Ejee ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -1, 7]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 2], 'YTickLabel', {'0'; 'A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Exponenciales crecientes', 'FontName', 'Times', 'Fontsize', 24) % Ttulo c = 0.5; A = -2; y3 = A*exp(c*t); % Coeficiente del exponente % Coeficiente de la exponencial % Funcin
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
13
subplot (2, 2, 3); % Seleccin de recuadro plot (t, y3, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A < 0 c > 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -7, 1]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-2 0], 'YTickLabel', {'A'; '0'}, 'FontName', 'Times', 'Fontsize', 12) c = -0.5; A = -2; y3 = A*exp(c*t); % Coeficiente del exponente % Coeficiente de la exponencial % Funcin
subplot (2, 2, 4); % Seleccin de recuadro plot (t, y3, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A < 0 c < 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -7, 1]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-2 0], 'YTickLabel', {'A'; '0'}, 'FontName', 'Times', 'Fontsize', 12); clear all; % Elimina las variables utilizadas en esta rutina
A 0
A 0 0
y = Aexp(ct) Datos: c, A
A<0 c>0
t (segundos)
t (segundos)
0 A
A<0 c<0
0
t (segundos)
t (segundos)
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
14
Exponenciales complejas Las dos primeras curvas muestran la variacin con el tiempo de las partes real e imaginaria de una funcin exponencial compleja. Obsrvese que para obtener tales partes se hace uso de las instrucciones real e imag. Obsrvese tambin que tal variacin es muy similar en ambos casos; la nica diferencia significativa es la existencia de un desfase entre ambas representaciones (se alejan en distinta medida del eje de ordenadas). Las restantes cuatro curvas muestran la influencia de los signos de los parmetros en la variacin con el tiempo de las partes real e imaginaria de una funcin exponencial compleja. Obsrvese que en este caso, al contrario que en el anterior, se hace uso de las instrucciones cos y sin, respectivamente, para representar las partes real e imaginaria de una funcin. Obviamente, ambos tipos de representaciones son completamente equivalentes. Obsrvese tambin que en esta rutina aparecen instrucciones de la forma
y = A*exp(sigma*t).*sin(w*t + fase) % Operacin elemento a elemento
Mediante el operador .* se multiplican elemento a elemento los componentes de los dos vectores que figuran en la instruccin. Ms adelante veremos otros casos en los que se utilizan operadores precedidos por puntos.
%%%%% FUNCIN EXPONENCIAL clear all t = -3*10^(-3): 10^(-5): 3*10^(-3) am = 0.5; fase = pi/4; A = am*exp(j*fase); sigma = 0.5*10^3; T = 10^(-3); f = 1/T; w = 2*pi*f; s = sigma + j*w; y = A*exp(s*t); COMPLEJA (partes real e imaginaria) %%%%% % Elimina variables utilizadas en otras rutinas % Base de tiempos % % % % % % % % % Mdulo de la amplitud compleja Fase de la amplitud compleja Amplitud compleja Parte real del coeficiente del exponente Periodo de la funcin Frecuencia Frecuencia angular Coeficiente del exponente Funcin
subplot (2, 1, 1); % Recuadro parte real plot (t, real(y), 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on plot (t, abs(y), 'r'); % Envolvente de la parte superior (en rojo) plot (t, -abs(y), 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('Parte real', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
15
% Ttulo
subplot (2, 1, 2); % Recuadro parte imaginaria plot (t, imag(y), 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on plot (t, abs(y), 'r'); % Envolvente de la parte superior (en rojo) plot (t, -abs(y), 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('Parte imaginaria', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times', 'Fontsize', 12); hold off clear all; % Elimina las variables utilizadas en esta rutina
Exponencial compleja
y = Aexp(st)
Parte real
a -a
Parte imaginaria
a -a
t
%%%%% FUNCIN EXPONENCIAL clear all; COMPLEJA (influencia de los parmetros) %%%%%
t = -3*10^(-3): 10^(-5): 3*10^(-3); % Base de tiempos am = 0.5; fase = 0; % Mdulo de la amplitud compleja % Fase de la amplitud compleja
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
16
A = am*exp(j*fase); % sigma = 0.5*10^3; % T = 10^(-3); % f = 1/T; % w = 2*pi*f; % s = sigma + j*w; % env = A*exp(sigma*t); % y = A*exp(sigma*t).*cos(w*t + fase);%
Amplitud compleja Parte real del coeficiente del exponente Periodo de la funcin Frecuencia Frecuencia angular Coeficiente del exponente Envolvente superior Funcin
subplot (2, 2, 1); % Recuadro parte real plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte real (sigma > 0)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times', 'Fontsize', 12); title ('Exponenciales crecientes', 'FontName', 'Times', 'Fontsize', 24) % Ttulo sigma = -0.5*10^3; % Parte real del coeficiente del exponente env = A*exp(sigma*t); % Envolvente superior y = A*exp(sigma*t).*cos(w*t + fase);% Funcin subplot (2, 2, 2); % Recuadro parte real plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte real (sigma < 0)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times', 'Fontsize', 12); title ('Exponenciales amortiguadas', 'FontName', 'Times', 'Fontsize', 24)% Ttulo sigma = 0.5*10^3; % Parte real del coeficiente del exponente env = A*exp(sigma*t); % Envolvente superior y = A*exp(sigma*t).*sin(w*t + fase);% Funcin subplot (2, 2, 3); % Recuadro parte imaginaria plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte imaginaria (sigma > 0)', 'FontName', 'Times', 'Fontsize', 14);% Ord grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times', 'Fontsize', 12);
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
17
sigma = -0.5*10^3; % Parte real del coeficiente del exponente env = A*exp(sigma*t); % Envolvente superior y = A*exp(sigma*t).*sin(w*t + fase);% Funcin subplot (2, 2, 4); % Recuadro parte imaginaria plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte imaginaria (sigma < 0)', 'FontName', 'Times', 'Fontsize', 14); % Ord grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times', 'Fontsize', 12); hold off; clear all; % Elimina las variables utilizadas en esta rutina
a -a
a -a
f = 1/T Datos: a, , m, T
a -a
t = 2/f
a -a
Pulso rectangular El cdigo que sigue permite representar un pulso rectangular de amplitud y periodo dados, centrado en el origen de coordenadas. Se recomienda prestar una atencin especfica a la forma de definir el intervalo en el que la funcin tiene un valor no nulo.
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
18
%%%%% FUNCIN PULSO RECTANGULAR clear all; t = -4: 0.001: 4; y = zeros (1, length(t)); A = 1; T = 2;
%%%%%
% Elimina variables utilizadas en otras rutinas % Base de tiempos % Comienza anulando la funcin % Amplitud % Periodo
% Rango de valores de t para los que la funcin no es nula rango = find ((t >= -T/2) & (t <= T/2)); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-3, 3, -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [-T/2 0 T/2], 'XTickLabel', {'-T/2', '0', 'T/2'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Pulso rectangular', 'FontName', 'Times', 'Fontsize', 24) % Ttulo clear all; % Elimina las variables utilizadas en esta rutina
Pulso rectangular
y=A Datos: T, A
Amplitud
0
-T/2
T/2
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
19
Pulso triangular El cdigo que sigue permite representar un pulso triangular de amplitud y periodo definidos por el usuario, centrado en el origen de coordenadas.
%%%%% FUNCIN PULSO TRIANGULAR clear all % Base de tiempos tmin = -4; tmax = 4; puntos = 10000; t = linspace (tmin, tmax, puntos); y = zeros (1, length(t)); A = 1; T = 2; % Comienza anulando la funcin % Amplitud % Periodo %%%%%
% Rango de valores de t para los que la funcin no es nula rango = find ((t >= -T/2) & (t <= T/2)); y(rango) = A*(1 - abs(t(rango))/(T/2)); % Funcin en el rango de tiempo no nulo
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-1.5*T, 1.5*T, -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [-T/2 0 T/2], 'XTickLabel', {'-T/2', '0', 'T/2'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Pulso triangular', 'FontName', 'Times', 'Fontsize', 24) % Ttulo clear all; % Elimina las variables utilizadas en esta rutina
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
20
Pulso triangular
Amplitud
-T/2
T/2
Funcin escaln La rutina que sigue permite representar la funcin escaln. Obsrvese que hay dos posibilidades de definirla; en realidad, una es la funcin reflejada de la otra (vase ms adelante otro ejemplo de funciones reflejadas). La rutina tambin permite observar las variaciones de la representacin en funcin de que el parmetro T sea positivo o negativo. Obsrvese que la discontinuidad se halla a la izquierda del cero para valores negativos de T y la derecha para valores positivos.
%%%%% FUNCIN ESCALN clear all; % Base de tiempos tmin = -4; tmax = 4; puntos = 1000; t = tmin: 1/puntos: tmax; y = zeros (1, length(t)); A = 1; % Comienza anulando la funcin % Amplitud %%%%% % Elimina variables utilizadas en otras rutinas
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
21
T = 2;
% Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula rango = find (t >= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 1); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T > 0', 'FontName', 'Times', 'Fontsize', 14);% Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [0 T], 'XTickLabel', {'0', 'T'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Escaln u(t - T)', 'FontName', 'Times', 'Fontsize', 24); % Ttulo y = zeros (1, length(t)); A = 1; T = -2; % Comienza anulando la funcin % Amplitud % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula rango = find (t >= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 3); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T < 0', 'FontName', 'Times', 'Fontsize', 14);% Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [T 0], 'XTickLabel', {'T', '0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); y = zeros (1, length(t)); A = 1; T = 2; % Comienza anulando la funcin % Amplitud % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula rango = find (t <= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 2); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T > 0', 'FontName', 'Times', 'Fontsize', 14) % Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [0 T], 'XTickLabel', {'0', 'T'}, 'FontName', 'Times', 'Fontsize',
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
22
12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Escaln u(T - t)', 'FontName', 'Times', 'Fontsize', 24); % Ttulo y = zeros (1, length(t)); A = 1; T = -2; % Comienza anulando la funcin % Amplitud % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula rango = find (t <= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 4); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T < 0', 'FontName', 'Time & Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [T 0], 'XTickLabel', {'T', '0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); clear all; % Elimina las variables utilizadas en esta rutina
Escaln u(t - T)
Para t < T u(t - T) = 0 u(T - t) = A Para t > T u(t - T) = A u(T - t) = 0 Datos:
T<0
Escaln u(T - t)
T>0
0 0 T
T>0
0 0 T
T, A
0 T 0
T<0
0 T 0
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
23
Signo La rutina siguiente permite representar la funcin signo. En realidad, la rutina, al igual que ocurre con la destinada a representar la funcin coseno, no hace ms que establecer las condiciones de representacin por cuanto la funcin est disponible directamente en Matlab. Obsrvese que, con relacin a esta funcin, podramos obtener cuatro representaciones distintas similares a las obtenidas en el caso de la funcin escaln. Obsrvese tambin que en la representacin grfica aparece una pequea discontinuidad en la lnea vertical, que es debida a que la resolucin utilizada no permite mayor precisin.
%%%%% FUNCIN SIGNO clear all; % Base de tiempos tmin = -4; tmax = 4; puntos = 10000; t = linspace (tmin, tmax, puntos); A = 1; y = A*sign(t); % Funcin %%%%% % Elimina variables utilizadas en otras rutinas
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -2*A, 2*A]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-A 0 A], 'YTickLabel', {' -A'; ' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Funcin signo', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
24
Funcin signo
y = Asign(t) Datos: A
-A
Amplitud
Sinc La funcin sinc tambin est disponible directamente en Matlab, con lo que la rutina que sigue tiene por objeto nicamente establecer las condiciones de la representacin.
%%%%% FUNCIN SINC clear all; % Base de tiempos tmin = -8; tmax = 8; puntos = 10000; t = linspace (tmin, tmax, puntos); A = 1; y = A*sinc(t); % Funcin %%%%% % Elimina variables utilizadas en otras rutinas
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([tmin, tmax, -(1/2)*A, (5/4)*A]); % rea de dibujo set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Font-
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
25
size', 12); title ('Funcin sinc', 'FontName', 'Times', 'Fontsize', 24); clear all;
% Ttulo
Funcin sinc
A
y = Asinc(t) Datos: A
0
Amplitud
-8
-6
-4
-2
Funcin combinada El siguiente ejemplo combina dos funciones en una. A fin de poder utilizar la funcin combinada sin necesidad de repetirla en otros momentos, el ejemplo consta de dos rutinas. La primera es una funcin que puede ser invocada desde otras rutinas; su ejecucin aislada no produce ningn resultado. La segunda es la presentacin de la funcin combinada.
function x = funccomb(t) n = length(t); x = zeros(1,n); i = find(t < 0); x(i) = 0; i = find(t > 0 & t < 1); x(i) = 1 - exp (-t(i)); % Primera funcin i = find(t >= 1); x(i) = -exp(-t(i)) + exp(-t(i) + 1); % Segunda funcin return;
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
26
%%%%% FUNCIN COMBINADA %%%%% clear all; T1 = 0; T2 = 1; % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t); % Llama a la funcin combinada plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(1/3)*max(y), (3/2)*max(y)]); % rea de dibujo set (gca, 'xtick', [T1 T2], 'XTickLabel', {'T1'; 'T2'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0], 'YTickLabel', {' 0'}, 'FontName', 'Times', 'Fontsize', 12); title ('Funcin combinada', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina % Elimina variables utilizadas en otras rutinas % Comienzo de la primera funcin % Comienzo de la segunda funcin
Funcin combinada
Para T1 < t < T2 y = 1 - e-(t-T1) Para t > T2 y = - e-t + e-(t-T2) Datos: T1, T2
0
Amplitud
T1
T2
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
27
Partes par e impar de una funcin La rutina siguiente muestra cmo obtener las partes par e impar de una funcin. La funcin considerada es la funccomb que hemos definido ms arriba. Obsrvese que hemos introducido un pequeo desplazamiento vertical en cada una de las curvas representadas a fin de que puedan ser mostradas todas en la figura.
%%%%% PARTES PAR E IMPAR DE UNA FUNCIN clear all; T1 = 0; T2 = 1; % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t) + 0.02; % Funcin original %%%%%
% Elimina variables utilizadas en otras rutinas % Comienzo de la primera funcin % Comienzo de la segunda funcin
plot (t, y, 'k'); % Funcin en negro hold on; xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Funcin (negro), Par (rojo), Impar (verde), Suma (azul)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo set (gca, 'xtick', [T1 T2], 'XTickLabel', {'T1'; 'T2'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0], 'YTickLabel', {' 0'}, 'FontName', 'Times', 'Fontsize', 12); tt = -t; yy = funccomb(tt); ypar = 0.005 + (y + yy)/2; plot (t, ypar, 'r'); hold on; yimpar = (y - yy)/2 - 0.005; plot (t, yimpar, 'g'); hold on;
ytotal = ypar + yimpar - 0.02; plot (t, ytotal, 'b', 'Linewidth', 2); % Suma en azul de grosor 2 hold off; title ('Partes par e impar de una funcin', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
28
T1
T2
Reflexin, desplazamiento y escalado de una funcin La rutina que sigue permite realizar diversas operaciones (reflexin, escalados horizontal y vertical, desplazamiento) con una funcin, as como combinar todas o algunas de estas operaciones. La funcin elegida como ejemplo es la funccomb descrita anteriormente. En este caso, al contrario que en los precedentes, no se han etiquetado los ejes, a fin de que el etiquetado automtico realizado por Matlab permita comprobar el efecto de cada operacin.
%%%%% OPERACIONES CON UNA FUNCIN clear all; T1 = 0; T2 = 1; %%%%%
% Elimina variables utilizadas en otras rutinas % Comienza la primera funcin % Comienza la segunda funcin
% Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t); subplot (3, 2, 1); % Funcin original % Recuadro
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
29
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Original', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo tt = -t; y = funccomb(tt); % Funcin reflejada subplot (3, 2, 2); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Reflexin', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo V = 0.5; y = V*funccomb(t); % Funcin con escalado vertical subplot (3, 2, 3); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Escalado y', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo H = 2; tt = H*t; y = funccomb(tt); % Funcin con escalado horizontal subplot (3, 2, 4); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Escalado t', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo T = 1; tt = t+T; y = funccomb(tt); % Funcin desplazada subplot (3, 2, 5); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Desplazamiento', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo T = 1; V = 0.5; H = 2; tt = H*(-(t+T)); y = V*funccomb(tt); % Operacin combinada subplot (3, 2, 6); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Combinacin', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo clear all; % Elimina las variables utilizadas en esta rutina
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
30
y(-t)
Original
y(t)
-2
-1
Reflexin
-2
-1
t
Escalado y
0.2 0 -0.2
t
0.8 0.6 0.4 0.2 0 -0.2 -0.4
y(Ht)
-2
-1
Escalado t
Vy(t)
0.4
-2
-1
t
Desplazamiento Combinacin
t
0.4 0.2 0 -0.2
-2
-1
-2
-1
Funciones peridicas La primera funcin que vimos en este apartado es peridica (la funcin coseno). Dicha funcin, como otras trigonomtricas, tiene una definicin establecida en la que la periodicidad est implcita. Sin embargo, para otras funciones la periodicidad ha de ser definida explcitamente. Es el caso, por ejemplo, del paso del pulso rectangular a un tren de pulsos rectangulares. La siguiente rutina ilustra cmo definir esta funcin peridica.
%%%%% TREN DE PULSOS RECTANGULARES clear all; A = 1; P = 2; T = 6; %%%%%
% Elimina variables utilizadas en otras rutinas % Amplitud % Duracin del pulso % Periodo
tmin = -7*P; % Base de tiempos tmax = 7*P; puntos = 10000; t = linspace (tmin, tmax, puntos); y = zeros (1, length(t)); % Anula la funcin
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
31
n = 0; while n*T>tmin n = n - 1; end tc1 = (n: 0)*T; m = 1; while m*T<tmax m = m + 1; end tc2 = (0: m)*T; tc = [tc1 tc2];
k = 1; % Amplitud de cada pulso while k<=length(tc) rango = find((t >= tc(k) - P/2) & (t <= tc(k) + P/2)); y(rango) = A; k = k + 1; end plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([tmin, tmax, -A/3, (3/2)*A]); % rea de dibujo set (gca, 'xtick', [-T/2 -P/2 0 P/2 T/2], 'XTickLabel', {'-T/2'; '-P/2'; '0'; 'P/2'; 'T/2'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize', 12); title ('Tren de pulsos rectangulares', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
32
Amplitud
0
T/2
-T/2
0 t
T/2
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO