3
%
if ((n0 < n1) | (n0 > n2) | (n1 > n2))
error('arguments must satisfy n1 <= n0 <= n2')
end
n = [n1:n2];
%x = [zeros(1,(n0-n1)), ones(1,(n2-n0+1))];
x = [(n-n0) >= 0];
该函数产生一个起始位置在 n0,序列范围在 n1 和 n2 之间的单位阶跃序列。
注意:由 function 产生的函数文件,不能直接运行,只能放在当前路径下的文件夹里,
供其他 M 文件调用。
2、序列的基本运算包括:加法、乘法、翻转、移位,分别介绍如下:
(1)加法:x
1
(n)+x
2
(n)
序列的加法运算为对应位置处量值的相加,在 MATLAB 中可用运算符“+”实现,但要
求参与运算的序列的长度必须相等。如果长度不等或者长度相等但采样位置不同,则不能直
接应用该运算符,此时需要先给定参数使序列具有相同的位置向量和长度。下面给出 sigadd
函数实现任意两序列的加法运算。
例:
function [y,n] = sigadd(x1,n1,x2,n2)
% implements y(n) = x1(n)+x2(n)
%
% [y,n] = sigadd(x1,n1,x2,n2)
% y = sum sequence over n, which includes n1 and n2
% x1 = first sequence over n1
% x2 = second sequence over n2 (n2 can be different from n1)
%
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))==1))=x1; % x1 with duration of y
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of y
y = y1+y2; % sequence addition