大三第二学期开设了《数字信号处理》这门课,这是一门理论和实践并重的一门课,学校教育一般重理论而忽视了实践,为了将这门课和实践结合起来,也为了让学习不那么乏味,我打算此将自己的实践过程记录下来。希望自己能坚持下去。题目:设序列x1(n)=[1,-1,0,2,3,-1],起始位置为-2,序列x2(n)=[2,1,1,0,1],起始位置为-2,参数a=2,k=2。利用matlab计算:(1)y(n)=x1(n)+x2(n) ; (2)y(n)=x1(n)x2(n) ; (3))y(n)=ax1(n);(4)y(n)=x1(n-k); (5)y(n)=x1(-n); (6)x1(n)的能量Ex代码如下:x1=[1,-1,0,2,3,-1];x2=[2,1,1,0,1];n1=[-2,-1,0,1,2,3];
n2=[-2,-1,0,1,2];k=2;a=2;
n=min(min(n1),min(n2)):max(max(n1),max(n2));
z1=zeros(1,length(n));z2=z1;
z1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
z2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y1=z1+z2;
y2=z1.*z2;
figure(1)
subplot(2,2,1),stem(n,z1,'.');xlabel('n');ylabel('x1')
subplot(2,2,3),stem(n,z2,'.');xlabel('n');ylabel('x2')
subplot(2,2,2),stem(n,y1,'.');xlabel('n');ylabel('y1')
subplot(2,2,4),stem(n,y2,'.');xlabel('n');ylabel('y2')
y3=a*x1;
figure(2)
subplot(2,2,1),stem(n,y3,'.');xlabel('n');ylabel('y3')
y4=x1;n=n1+k;
subplot(2,2,2),stem(n,y4,'.');xlabel('n');ylabel('y4')
y5=fliplr(x1);n=-fliplr(n1);
subplot(2,2,3),stem(n,y5,'.');xlabel('n');ylabel('y5')
Ex=sum(x1.*conj(x1))
函数说明:find 找出非零元素的索引和值1、ind=find(x)---找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。
2、 ind = find(X, k) 或 3. ind = find(X, k, 'first')
返回第一个非零元素k的索引值。
k必须是一个正数,但是它可以是任何数字数值类型。 4. ind = find(X, k, 'last')
返回最后一个非零元素k的索引值。
。。。