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索要。
温馨提示:答案为网友推荐,仅供参考
相似回答