作业帮 > 综合 > 作业

matlab程序求教,编了一个移位的通用函数,但是运行了没效果,程序如下,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/29 10:29:29
matlab程序求教,编了一个移位的通用函数,但是运行了没效果,程序如下,

n=0:9;

x1=[(n-0)==0];
x2=2*[(n-1)==0];
x3=3*[(n-2)==0];
x4=4*[(n-3)==0];
x5=5*[(n-4)==0];
x=x1+x2+x3+x4+x5;

 
y=seqshift(x,n,3);

subplot(2,1,1);
stem(n,x);
xlabel('n');
ylabel('x');
axis([0,12,0,6]);
title('x(n)');

 
subplot(2,1,2);

stem(n,y);
xlabel('n');
ylabel('y');
axis([0,12,0,6]);
title('x(n-3)');
 
 
 
 
 
 

 
这是移位的子程序
function [y,ny] = seqshift(x,nx,n0)
% [y,ny] = seqshift(x,nx,n0)
% -------------------------
% 实现 y(n) = x(n-n0)
% n0为平移样本数
ny = nx + n0; % 位置向量移位
y = x; % 序列的值不变
楼主大致思路是对的.
第一:移位程序是对的.
第二,失误在调用y=seqshift(x,n,3)返回量选择与stem(n,x)选择错误的横纵标量.
修订如下:
%赋初始序列
n=0:9;
x1=[(n-0)==0];
x2=2*[(n-1)==0];
x3=3*[(n-2)==0];
x4=4*[(n-3)==0];
x5=5*[(n-4)==0];
x=x1+x2+x3+x4+x5;

%画原始信号序列
subplot(2,1,1);
stem(n,x);
xlabel('n');
ylabel('x');
axis([0,12,0,5]);
title('x(n)');

%画移位序列
[y,ny]=seqshift(x,n,3);
subplot(2,1,2);
stem(ny,y);
xlabel('n');
ylabel('y');
axis([0,12,0,5]);
title('x(n-3)');

网速不给力,图就不粘上去了,自己运行下.
结果可详询qq814468671索要.