Componentes par e impar de x(n)

Componentes par e impar de x(n)

clc, clear all, close all

 

disp(‘Variable independiente -tiempo (nx = nxi:nxf) para la señal x(n)’);

nx=input(‘nxi:nxf :  ‘);

 

sw=input(‘Para ingresar muestras de x(n), teclee 1, ecuación matemática de x(n), teclee 2:  ‘);

 

if sw == 1,

    disp(‘Ingrese las muestras de la señal x(n)’);

    x=input(‘Utilizar corchetes [x(nxi) … x(nxf)]: ‘);

else

    disp(‘Ingrese la expresión matemática de la señal x(n)’);

    disp(‘Ejemplo: cos(0.3*pi*nx)’);

    x=input(‘Señal x(n) :  ‘);

end

 

xdn=sx(nx,x);

[xp,xi,npi]=parimp(xdn,nx);

 

subplot(3,1,1), stem(nx,xdn,‘LineWidth’,2),

    axis([min(npi)-1,max(npi)+1,min(xdn)-2,max(xdn)+2]);

    xlabel(‘n’); ylabel(‘x(n)’); title(‘Señal x(n)’);

    ntick = [npi(1):npi(length(npi))];

    set(gca,‘XtickMode’,‘manual’,‘XTick’,ntick,‘FontSize’,10)

subplot(3,1,2), stem(npi,xp,‘LineWidth’,2),

    axis([min(npi)-1,max(npi)+1,min(xdn)-2,max(xdn)+2]);

    xlabel(‘n’); ylabel(‘x(n)’); title(‘Componente par de la señal x(n)’);

    ntick = [npi(1):npi(length(npi))];

    set(gca,‘XtickMode’,‘manual’,‘XTick’,ntick,‘FontSize’,10)

subplot(3,1,3), stem(npi,xi,‘LineWidth’,2),

    axis([min(npi)-1,max(npi)+1,min(xdn)-2,max(xdn)+2]);

    xlabel(‘n’); ylabel(‘x(n)’); title(‘Componente impar de la señal x(n)’);

    ntick = [npi(1):npi(length(npi))];

    set(gca,‘XtickMode’,‘manual’,‘XTick’,ntick,‘FontSize’,10)

 

    % Señal x(n) expresada con la función delta(n)

function y=sx(nx,x),

y=zeros(1,length(nx));

 for k=1:length(x);

     y = y + x(k)*delta(nx-nx(k));

 end

end

 

function y=delta(n),

y = 1.*(n==0);

end

 

function [xp,xi,m]=parimp(xdn,nx)

[xc,nc] = sigfold(conj(xdn),nx);

[xp,m]  = sigadd(0.5*xdn,nx,0.5*xc,nc);

[xi,m]  = sigadd(0.5*xdn,nx,-0.5*xc,nc);

end

 

function [y,n] = sigfold(x,n)

% implements y(n) = x(-n)  Fuente: J.G.Proakis

y = fliplr(x); n = -fliplr(n);

end

 

function [y,n] = sigadd(x1,n1,x2,n2)

% implements y(n) = x1(n)+x2(n)  Fuente: J.G.Proakis

% —————————–

% [y,n] = sigadd(x1,n1,x2,n2)

%   y = sum sequence over n, which includes n1 and n2

%  x1 = first sequence over n1

%  x2 = second sequence over n2 (n2 can be different from n1)

%

n = min(min(n1),min(n2)):max(max(n1),max(n2)); % duration of y(n)

y1 = zeros(1,length(n)); y2 = y1;              % initialization

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;     % x1 with duration of y

y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;     % x2 with duration of y

y = y1+y2; 

end

 

function y=escalon(n),

    y=1.*(n>=0);

end

 

Nota. Cambiar la comilla simple por apóstrofe en la hoja de editor de Matlab.

Ejemplo 1. Calcular las componentes par e impar de [-2.5, 0.5, 1*, -1.5, 0.5, 2.5].

Solución.
Se ingresan los siguientes datos:
Variable independiente -tiempo (nx = nxi:nxf) para la señal x(n)
nxi:nxf : -2:3
Para ingresar muestras de x(n), teclee 1, ecuación matemática de x(n), teclee 2: 1
Ingrese las muestras de la señal x(n)
Utilizar corchetes [x(nxi) … x(nxf)]: [-2.5 0.5 1 -1.5 0.5 2.5]

No Comments Yet.