0% found this document useful (0 votes)
285 views6 pages

Función Impseq: Function

The document contains MATLAB code definitions for various functions used to analyze and process signals including: impseq() to generate an impulse sequence, stepseq() to generate a step sequence, sigadd() to add two signals, sigmult() to multiply two signals, sigshift() to shift a signal, sigfold() to fold a signal, and conv_m() which is a modified convolution function. It also includes examples applying these functions to analyze sequences.

Uploaded by

Bryan Yepez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
285 views6 pages

Función Impseq: Function

The document contains MATLAB code definitions for various functions used to analyze and process signals including: impseq() to generate an impulse sequence, stepseq() to generate a step sequence, sigadd() to add two signals, sigmult() to multiply two signals, sigshift() to shift a signal, sigfold() to fold a signal, and conv_m() which is a modified convolution function. It also includes examples applying these functions to analyze sequences.

Uploaded by

Bryan Yepez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

Función Impseq

function [x,n] = impseq(n0,n1,n2)

% Generates x(n) = delta(n-n0); n1 <= n,n0 <= n2

% ----------------------------------------------

% [x,n] = impseq(n0,n1,n2)

if ((n0 < n1) | (n0 > n2) | (n1 > n2))

error('arguments must satisfy n1 <= n0 <= n2')

end

n = [n1:n2];

%x = [zeros(1,(n0-n1)), 1, zeros(1,(n2-n0))];

x = [(n-n0) == 0];

Función Stepseq
function [x,n] = stepseq(n0,n1,n2)
% Generates x(n) = u(n-n0); n1 <= n,n0 <= n2
% ------------------------------------------
% [x,n] = stepseq(n0,n1,n2)
%
if ((n0 < n1) | (n0 > n2) | (n1 > n2))
error('arguments must satisfy n1 <= n0 <= n2')
end
n = [n1:n2];
%x = [zeros(1,(n0-n1)), ones(1,(n2-n0+1))];
x = [(n-n0) >= 0];

Funcion Sigadd
function [y,n] = sigadd(x1,n1,x2,n2)
% implements y(n) = x1(n)+x2(n)
% -----------------------------
% [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; % sequence additio

Funcion Sigmult
function [y,n] = sigmult(x1,n1,x2,n2)
% implements y(n) = x1(n)*x2(n)
% -----------------------------
% [y,n] = sigmult(x1,n1,x2,n2)
% y = product 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; %
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; % sequence
multiplication

Función Sigshift
function [y,n] = sigshift(x,m,n0)
% implements y(n) = x(n-n0)
% -------------------------
% [y,n] = sigshift(x,m,n0)
%
n = m+n0; y = x;

Función Sigfold
function [y,n] = sigfold(x,n)
% implements y(n) = x(-n)
% -----------------------
% [y,n] = sigfold(x,n)
%
y = fliplr(x); n = -fliplr(n);

Función Convm
function [y,ny] = conv_m(x,nx,h,nh)
% Modified convolution routine for signal processing
% --------------------------------------------------
% [y,ny] = conv_m(x,nx,h,nh)
% [y,ny] = convolution result
% [x,nx] = first signal
% [h,nh] = second signal
%
nyb = nx(1)+nh(1); nye = nx(length(x)) + nh(length(h));
ny = [nyb:nye]; y = conv(x,h);

Example 2.1
n = [-5:5];
x = 2*impseq(-2,-5,5) - impseq(4,-5,5);
subplot(2,2,1);
stem(n,x); title('Secuencia de problema 2.1a')
xlabel('n'); ylabel('x(n)');
%PARTE B
n = [0:20]; x1 = n.*(stepseq(0,0,20)-stepseq(10,0,20));

x2 = 10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));
x = x1+x2;
subplot(2,2,3);
stem(n,x); title('Sequence in Problem 2.1b')
xlabel('n'); ylabel('x(n)');
%PARTE C
n = [0:50]; x = cos(0.04*pi*n)+0.2*randn(size(n));
subplot(2,2,2); stem(n,x); title('Sequence in Problem 2.1c')
xlabel('n'); ylabel('x(n)');

%PARTE D
n = [-10:9]; x = [5,4,3,2,1];
xtilde = x' * ones(1,4); xtilde = (xtilde(:))';
subplot(2,2,4); stem(n,xtilde); title('Sequence in Problem 2.1d')
xlabel('n'); ylabel('xtilde(n)');

Example 2.2
n = -2:10; x = [1:7,6:-1:1];
[x11,n11] = sigshift(x,n,5); [x12,n12] = sigshift(x,n,-4);
[x1,n1] = sigadd(2*x11,n11,-3*x12,n12);
subplot(2,1,1); stem(n1,x1); title('Sequence in Example 2.2a')
xlabel('n'); ylabel('x1(n)');
%PARTE B
[x21,n21] = sigfold(x,n); [x21,n21] = sigshift(x21,n21,3);
[x22,n22] = sigshift(x,n,2); [x22,n22] = sigmult(x,n,x22,n22);
[x2,n2] = sigadd(x21,n21,x22,n22);
subplot(2,1,2); stem(n2,x2); title('Sequence in Example 2.2b')
xlabel('n'); ylabel('x2(n)');

Example 2.3
n = [-10:1:10]; alpha = -0.1+0.3j;
x = exp(alpha*n);
subplot(2,2,1); stem(n,real(x));title('real part');xlabel('n')
subplot(2,2,2); stem(n,imag(x));title('imaginary part');xlabel('n')
subplot(2,2,3); stem(n,abs(x));title('magnitude part');xlabel('n')
subplot(2,2,4); stem(n,(180/pi)*angle(x));title('phase
part');xlabel('n')
Example 2.4
n = [0:10]; x = stepseq(0,0,10)-stepseq(10,0,10);
[xe,xo,m] = evenodd(x,n);
subplot(2,2,1); stem(n,x); title('Rectangular pulse')
xlabel('n'); ylabel('x(n)'); axis([-10,10,0,1.2])
subplot(2,2,2); stem(m,xe); title('Even Part')
xlabel('n'); ylabel('xe(n)'); axis([-10,10,0,1.2])
subplot(2,2,4); stem(m,xo); title('Odd Part')
xlabel('n'); ylabel('xe(n)'); axis([-10,10,-0.6,0.6])
Example 2.7
x = [3, 11, 7, 0, -1, 4, 2]; h = [2, 3, 0, -5, 2, 1];
y = conv(x, h)

Example 2.9
x = [3, 11, 7, 0, -1, 4, 2];
nx = [-3:3];
nh = [2, 3, 0, -5, 2, 1];
ny = [-1:4];
[y,ny] = conv_m(x,nx,h,nh);

You might also like