如何创建随行索引和数据变化的三角矩阵?

sil*_*bob 2 matlab for-loop while-loop sqrt

我需要计算一些积分.首先,我要解释这个问题.我有一个名为X的数据向量.

X=[20 50 100 150 200 300]
Run Code Online (Sandbox Code Playgroud)

我需要生成一些数据,我正在使用此方法:

a11=sqrt(1-0/20)-sqrt(1-20/20);
Run Code Online (Sandbox Code Playgroud)

这是20或X(1)的结果.然后我需要计算一下:

a21=sqrt(1-0/50)-sqrt(1-20/50);
a22=sqrt(1-20/50)-sqrt(1-50/50);
Run Code Online (Sandbox Code Playgroud)

这是50或X(2)的结果.

对于X(3)我需要a31,a32,a33,对于X(4)我需要a41,a42,a43,a44 ......然后我需要将这些值放在矩阵中相对于X.

矩阵应如下所示:

20 a11
50 a21 a22
100 a31 a32 a33
150 a41 a42 a43 a44
.
.
.
Run Code Online (Sandbox Code Playgroud)

谢谢.

And*_*eak 7

只是添加一个无循环的解决方案:

X = [20 50 100 150 200 300];
X2 = [0 X];
outmat = [X.', tril(-diff(sqrt(1-(1./X).'*X2),1,2))];
Run Code Online (Sandbox Code Playgroud)

输出矩阵的非平凡的部分是这样的:它首先计算sqrt(1-X(k)/X(l))类型的值的在一个矩阵,基本上创建矩阵的二元产物XX2(后者X延伸具有前导0元素).然后,我们diff沿着它的第二维计算这个矩阵:注意第二个输入参数diff给出了数值导数的数.然后我们切出下三角形部分tril.