【问题标题】:Matlab/ GNU octave syntaxMatlab/ GNU 八度语法
【发布时间】:2026-01-03 07:55:02
【问题描述】:

我需要理解用这些语言编写的GMRES algorithm 的一部分。让我感到困扰的是以下部分:

y = H(1:k,1:k) \ beta(1:k);
x = x + Q(:,1:k)*y; 

谁能解释一下扩展形式是什么意思。

提前谢谢你。

【问题讨论】:

  • @JörgWMittag 如此敌对的态度......我发布了一个简洁的问题,并得到了快速的答案。这不是SO的目的吗?但是我非常想知道如何在不包含这两行代码的情况下制定问题?糟糕的一天?
  • 这是很长一段时间以来的新SO方式。每个问题都是重复的或其他的,或者只是不合适的。显然,它更接近于结构化的常见问题解答档案,而不是人们通过提问获得帮助的网站。
  • @TommasoBelluzzo 唉,这正是 SO 的意图。我对 yarchik 表示同情,但问题是 SO 不是解决问题的服务,而是用于交换信息的存储库,理想情况下,它应该是可搜索的并且对未来的访问者有用。 Yarchik:很高兴您解决了您的问题,如果您想帮助未来的用户,请编辑您的标题,使其对遇到完全相同问题的人更有用(例如“matlab 中的 GMRES 算法”或“matlab 反斜杠运算符” ”)。事实上,当你这样做时,我怀疑 SO 会提出之前讨论过的类似问题。

标签: matlab indexing octave matrix-indexing


【解决方案1】:

关于第一个等式的内容:

H(1:k,1:k) = sub-matrix of matrix H that you obtain by taking rows from 1 (beginning) to k and columns from 1 (beginning) to k
beta(1:k) = sub-vector of vector beta that you obtain by taking elements from 1 (beginning) to k
y = is a matrix obtained by solving a symbolic matrix left division between sub-matrix of H and the sub-vector of beta

关于第二个等式的内容:

Q(:,1:k) = sub-matrix of matrix Q with all the rows and columns from 1 (beginning) to k
x = a matrix that is obtained by adding to it's previous value the result of the multiplication between the sub-matrix of matrix Q and y

Matlab 中的索引是从 1 开始的,而不是从 0 开始的。因此,索引 1 对应于您正在使用的任何内容的第一个元素。通过索引的子矩阵示例:

A = [
  2 3 4;
  1 2 3;
  3 4 4
];

B = A(1:2,1:2);

B is then equal to:

[
  2 3;
  1 2
];

C = A(:,1:2);

C is then equal to:

[
  2 3;
  1 2;
  3 4
];

那个奇怪的除法符号代表一个矩阵左除法(更多信息:mathworks.com/help/symbolic/mldivide.html):X = A\B 以矩阵形式求解线性方程组的符号系统:A*X = B for @987654327 @。

【讨论】:

  • 谢谢,但是这个奇怪的“\”操作是什么?
  • 这是一个矩阵左除法:it.mathworks.com/help/symbolic/mldivide.html(X = A\B 以矩阵形式求解线性方程组的符号系统,A*X = B 表示 X)。
  • 请将此有用的解释添加到您的答案中,我会接受。