目标
在MATLAB中,我们很容易定义两个有限长序列,但是当它们的时间轴不同或者说错位时,就会对序列的基本运算带来麻烦。
举个例子
令x[n]={1,2,3,4,5,6,7,6,5,4,3,2,1},x[n]从n=0时刻开始有值,试画出序列y[n]=x[3-n]+x[n]*x[n-2];
这里的难点在于x[n]已有其坐标范围为0:1:length(xn)-1
,x[n-2]的序列值也不需要改变,其有非零值的坐标范围为2:1:length(xn)+1
,我们可以看到x[n]和x[n-2]的坐标之间有两个单位的错位,则x[n]*x[n-2]的计算需要对两个序列分别进行扩充——x[n]向右扩充两个0值,而x[n-1]向左扩充两个零值。
这在操作起来比较麻烦,于是我写了一个函数帮我专门处理序列坐标的合并。
函数实现
function [t_list, x_list_1, x_list_2] = Combine(t_1, x_1, t_2, x_2, stride)
%COMBINE Editde By yhy_17302803
% 输入两个离散时间序列的信息
% 输出合并(延长后的)时间序列和数值序列,便于后续对两个信号的处理;
% stride: 步长
min_t = min(min(t_1), min(t_2)); % 获取公共时间范围
max_t = max(max(t_1), max(t_2));
posi = - min_t + 1;
t_list_temp = (min_t:stride:max_t) + posi;
x_list_1