如何在Matlab中创建表示指数平均系统的矩阵?

时间:2016-11-26 09:13:20

标签: matlab matrix exponential

w(n)表示为(1 - a)^n

我想创建一个以下NxN矩阵:

// Note that 1 = w(0)
1       0       0  ...  0       0
w(1)    1       0  ...  0       0
w(2)    w(1)    1  ...  0       0
.................................
w(n-1)  w(n-2)  ...     w(1)    1

问题:对于案例a = 1/2,在matlab中这样做的简短方法是什么?

1 个答案:

答案 0 :(得分:2)

这是一种使用bsxfun -

的方法
r = (1-a).^(0:N-1)
out = tril(bsxfun(@rdivide,r.',r))

示例运行 -

>> a = 1/2;
>> N = 5;
>> r = (1-a).^(0:N-1);
>> tril(bsxfun(@rdivide,r.',r))
ans =
            1            0            0            0            0
          0.5            1            0            0            0
         0.25          0.5            1            0            0
        0.125         0.25          0.5            1            0
       0.0625        0.125         0.25          0.5            1

在MATLAB 2016b版本以及自动广播之后,最后一步将是 -

out = tril(r.'./r)