signal processing--matlab--6,综合运算

z信号处理的过程中,常常要是用到多种运算法则:

例如:求解x(n)=x(3-n)+x(n)x(n-2)

在这个案例中有许多的计算法则。

例如我们求解x=[1 2 3 4 5 6 7 6 5 4 3 2 1]。

matlab代码如下所示:

移位代码:

function [y,n]=LST_2_2_b_sigshift(x,m,n0)

n=m+n0;

y=x;%序列的数值大小是不变的,但是位置发生了改变

反转代码:

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

y=fliplr(x);

n=-fliplr(n);%反转函数fliplr

相乘代码:

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

n=min(min(n1),min(n2)):max(max(n1),max(n2));

y1=zeros(1,length(n));

y2=y1;

y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;

y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;

y=y1.*y2;

求解:

n=-2:10;

x=[1:7,6:-1:1];

[x11,n11]=LST_2_2_b_sigfold(x,n);

[x12,n12]=LST_2_2_b_sigshift(x11,n11,3);

[x33,n33]=LST_2_2_b_sigshift(x,n,2);

[x23,n23]=LST_2_2_b_sigmult(x,n,x33,n33);

[y,m]=LST_2_2_a(x12,n12,x23,n23);

stem(m,y);

xlabel(\'n\');

ylabel(\'x(n)\');