【发布时间】:2019-04-01 07:34:01
【问题描述】:
我正在努力将一些 MATLAB 代码翻译成 Python,这样我就可以更好地学习 MATLAB(尝试先从 Python 的角度思考),但我对这段代码的作用感到有些困惑。
n = length(a);
S = zeros(n+1,n+1);
S(1,1) = sqrt(1/b(1));
S(2,:) = (S(1,:)-[0,a(1)*S(1,1:end-1)])/sqrt(b(2));
S(3,:) = (S(2,:)-[0,a(2)*S(2,1:end-1)]-[0,0,sqrt(b(2))*S(1,1:end-2)])/sqrt(b(3));
S(4,:) = (S(3,:)-[0,a(3)*S(3,1:end-1)]-[0,0,sqrt(b(3))*S(2,1:end-2)])/sqrt(b(4));
我理解前 2 行(创建一个 n+1 乘 n+1 矩阵 S),但我无法理解接下来的 3 行。
据我了解(n:m) 是矩阵查找符号。所以,S(1, 1) 表示第一行第一列的值,在 Python 中设置为1/math.sqrt(b[0])。这意味着在我们的矩阵 S 中,第一行是数组 who 1/math.sqrt(b[0]),其余的都是 0,对吧?
对于第 4 行,我很难理解 vode。我们是说第二行是第一行减去从 0 到 a(1)*S(1,1:end-1) 的数组吗? a(1)*S(1,1:end-1) 在这里究竟代表什么?
我看到接下来的 2 行是基于 j >= 3 的第 j-1 行和第 j-2 行的递归关系(如果是 Python,则为 2),但我对递归关系计算的内容知之甚少.
任何将这段代码“翻译”成 Python 的帮助(就理解的伪代码而言,而不是实际的硬代码)都会非常有帮助,因为到目前为止学习 MATLAB 对我来说非常棘手。谢谢。
【问题讨论】: