将上三角矩阵变换为全矩阵 C++

发布于 2024-11-24 03:55:52 字数 315 浏览 2 评论 0原文

将上三角矩阵转换为完整矩阵的代码会是什么样子。 矩阵位于向量中,而不是二维数组中...

因此该数组

[ 1 2 3 4
  0 5 6 7
  0 0 8 9
  0 0 0 10 ]

将变成一个数组,例如:

[ 1 2 3 4
  2 5 6 7
  3 6 8 9
  4 7 9 10 ]

您能否提供一些想法,我正在考虑应用一种模块或其他东西...

有一个限制,< strong>我没有使用二维数组 我使用的是向量,所以是一维数组

How would look the code that can transform an upper triangular matrix into a full matrix.
The matrix is in a vector, not in a bidimensional array...

so the array

[ 1 2 3 4
  0 5 6 7
  0 0 8 9
  0 0 0 10 ]

would become an array like:

[ 1 2 3 4
  2 5 6 7
  3 6 8 9
  4 7 9 10 ]

could you provide some ideas, I was thinking in applying a kind of module or something...

There is one restriction, I am not using bidimensional arrays
I am usng a vector, so is a unidimensional array

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不美如何 2024-12-01 03:55:52

首先,您必须了解反射矩阵的基本性质。对于任何 ij,以下断言为真:

m[i][j] ≡ m[j][i]

因此,您需要某种算法来使其成立。我可以建议:

for(int i = 0; i < HEIGHT; ++i)
  for(int j = 0; j < i; ++j)
    m[i][j] = m[j][i];

注意第二个循环的情况。通过确保 j 始终小于 i,我们将活动限制在左下三角形。

接下来,您必须了解如何在一维数组中实现二维矩阵。看来你已经确定了身份:

m[i][j] ≡ v[i*WIDTH+j]

替代的话,我们有:

for(int i = 0; i < HEIGHT; ++i)
  for(int j = 0; j < i; ++j)
    v[i*WIDTH+j] = v[j*WIDTH+i];

First, you must understand the fundemtnal nature of a reflected matrix. For any i, j, the following assertion is true:

m[i][j] ≡ m[j][i]

So, you need some algorithm to make that true. May I suggest:

for(int i = 0; i < HEIGHT; ++i)
  for(int j = 0; j < i; ++j)
    m[i][j] = m[j][i];

Note the condition of the 2nd loop. By ensuring that j is always less than i, we restrict our activity to the bottom-left triangle.

Next, you must understand how you have implemented a two-dimensional matrix in a one-dimensional array. It appears that you have established the identity:

m[i][j] ≡ v[i*WIDTH+j]

Substituting, we have:

for(int i = 0; i < HEIGHT; ++i)
  for(int j = 0; j < i; ++j)
    v[i*WIDTH+j] = v[j*WIDTH+i];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文