function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

11
function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2 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))))=x1; %x1 with duration of y y2(find((n>=min(n2))&(n<=max(n2))))=x2; %x2 with duration of y y=y1+y2;

Upload: iman

Post on 05-Feb-2016

29 views

Category:

Documents


0 download

DESCRIPTION

function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2 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

TRANSCRIPT

Page 1: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

function[y,n]=sigadd(x1,n1,x2,n2)%n1:index vector for x1%n2:index vector for x2 n=min(min(n1),min(n2)):max(max(n1),max(n2));%duration of y(n)y1=zeros(1,length(n)); y2=y1; %initializationy1(find((n>=min(n1))&(n<=max(n1))))=x1; %x1 with duration of yy2(find((n>=min(n2))&(n<=max(n2))))=x2; %x2 with duration of yy=y1+y2;

Page 2: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

>> x1=[1 1 1];>> n1=[2 3 4];>> x2=[2 2 2];>> n2=[4 5 6]; >> [y,n]=sigadd(x1,n1,x2,n2)

y =

1 1 3 2 2

n =

2 3 4 5 6

Page 3: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

function[y,n]=sigmult(x1,n1,x2,n2)%n1:index vector for x1%n2:index vector for x2 n=min(min(n1),min(n2)):max(max(n1),max(n2));%duration of y(n)y1=zeros(1,length(n)); y2=y1; %initializationy1(find((n>=min(n1))&(n<=max(n1))))=x1; %x1 with duration of yy2(find((n>=min(n2))&(n<=max(n2))))=x2; %x2 with duration of yy=y1.*y2;

Page 4: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

>> [y,n]=sigmult(x1,n1,x2,n2)

y =

0 0 2 0 0

n =

2 3 4 5 6

Page 5: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

function [y,n]=sigshift(x,m,k)%implements y(n)=x(n-k)%m: index vector for x n=m+k;y=x;

>> xn=0:20;x=stepseq(0,0,20);>> [y,yn]=sigshift(x,xn,5);>> subplot(2,1,1),stem(xn,x),title('u(n)'),axis([0 30,0,1])>> subplot(2,1,2),stem(yn,y),title('u(n-5)'),axis([0 30,0,1])

0 5 10 15 20 25 300

0.2

0.4

0.6

0.8

1u(n)

0 5 10 15 20 25 300

0.2

0.4

0.6

0.8

1u(n-5)

Page 6: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

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

>> xn=0:6;x=rampseq(0,0,6);>> [y,yn]=sigfold(x,xn);>> subplot(2,1,1),stem(xn,x),title('ur(n)'),axis([-10,10 ,0,6])>> subplot(2,1,2),stem(yn,y),title('ur(-n)'),axis([-10,10 ,0,6])

-10 -5 0 5 100

2

4

6ur(n)

-10 -5 0 5 100

2

4

6ur(-n)

Page 7: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

>> n=-2:10;x=[1:7, 6:-1:1];>> [x11,n11]=sigfold(x,n);[x11,n11]=sigshift(x11,n11,3);>>[x12,n12]=sigshift(x,n,2);[x12,n12]=sigmult(x,n,x12,n12);>> [x1,n1]=sigadd(x11,n11,x12,n12);>> stem(n1,x1)

-10 -5 0 5 10 150

5

10

15

20

25

30

35

40

Page 8: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

-10 -5 0 5 10 150

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

N=7

>> x=[2 1.5 1 0.5 0 0 0];>> n=-6:14;>> stem(n,[x x x])

Page 9: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

function [xe,xo,l]=evenodd(x,n)%Real signal decomposition into even and odd parts if any(imag(x)~=0) error('x is not a real signal')end[y,m]=sigfold(x,n);[xe,l]=sigadd(x,n,y,m);xe=xe/2;[xo]=sigadd(x,n,-y,m);xo=xo/2;

Page 10: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

>> 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('X(n)'); axis([-10,10,0,1.2])>> subplot(2,2,2); stem(m,xe);title('Xe(n)'); axis([-10,10,0,1.2])>> subplot(2,2,4); stem(m,xo);title('Xo(n)'); axis([-10,10,-0.6,0.6])

-10 -5 0 5 100

0.2

0.4

0.6

0.8

1

X(n)

-10 -5 0 5 100

0.2

0.4

0.6

0.8

1

Xe(n)

-10 -5 0 5 10

-0.4

-0.2

0

0.2

0.4

0.6Xo(n)

Page 11: function[y,n]=sigadd(x1,n1,x2,n2) %n1:index vector for x1 %n2:index vector for x2

>> nx=-3:3;X=[1:7];[Y,ny]=sigfold(X,nx);>> [Y1,ny1]=sigshift(Y,ny,1);>> [X1,nx1]=sigshift(X,nx,1);[Y2,ny2]=sigfold(X1,nx1);>> subplot(2,1,1); stem(ny1,Y1); title('y(n-1)');axis([-4,4,0,8])>> subplot(2,1,2); stem(ny2,Y2); title('y(n,1)');axis([-4,4,0,8])

-4 -3 -2 -1 0 1 2 3 40

2

4

6

8y(n-1)

-4 -3 -2 -1 0 1 2 3 40

2

4

6

8y(n,1)

y(n)=x(-n) is TIME VARIANT