【发布时间】:2019-07-16 03:09:51
【问题描述】:
所以对于我的应用程序,我需要创建一个三对角矩阵。这对任何语言都很容易做到,循环遍历所有行和列,然后设置主对角线值、子对角线值和超对角线值。通常,这是在二维数组上执行的。
对于我的应用程序,我需要创建一个“三对角线”的一维数组。换句话说,就是:取 2d 三对角矩阵,然后把它变成 1d。我可以从 2d 开始,然后编写一些将 2d 数组转换为 1d 数组的函数。这个,我可以。我想知道我们是否可以直接进入一维“三对角线”?例如,假设 2D 数组是 10*10,那么我的 1D 数组将是 100 个元素长,那么我需要找出哪个索引是主对角线、超对角线和子对角线。
可以这样做吗?请告诉我,谢谢
【问题讨论】:
-
您要存储所有元素(包括所有零)还是只存储三对角元素(在 10x10 示例中为 28)。
-
我想存储所有元素
-
那么,只是一个简单的序列化?喜欢
idx1d = col + row * columnCount? -
差不多。我首先将一维数组清零,然后循环遍历它并选择哪个索引具有主对角线、超对角线和子对角线值。问题是我不知道如何获取这些索引。
-
这就是我在上一条评论中所写的。主对角线有
col = row,所以idx1d = i * (1 + columnCount),其中i是行/列。下对角线在前,上对角线在后。
标签: c++ algorithm matrix fortran