MATLAB 中是否有一个函数可以为给定的标量生成以下矩阵r
:
1 r r^2 r^3 ... r^n
0 1 r r^2 ... r^(n-1)
0 0 1 r ... r^(n-2)
...
0 0 0 0 ... 1
Run Code Online (Sandbox Code Playgroud)
其中每一行的行为有点像 CUMSUM 函数的幂模拟?
您可以使用隐式扩展和逐元素幂直接计算每个术语,然后应用triu
:
n = 5; % size
r = 2; % base
result = triu(r.^max((1:n)-(1:n).',0));
Run Code Online (Sandbox Code Playgroud)
或者,也许更快一点,因为它不计算不需要的权力:
n = 5; % size
r = 2; % base
t = (1:n)-(1:n).';
u = find(t>=0);
t = t(u);
result = zeros(n);
result(u) = r.^t;
Run Code Online (Sandbox Code Playgroud)