gpt4 book ai didi

c++ - 丢弃二维矩阵中的第一行和第一列 - 对扁平的一维 vector 重复相同的操作

转载 作者:行者123 更新时间:2023-11-28 05:52:28 25 4
gpt4 key购买 nike

对于 2D 矩阵 3x5 或 5x3,我需要执行 2D 矩阵到 1D vector 的映射。映射没问题,但跳过第一行和第一列是我迷路的地方。

我有一个二维矩阵,我正在使用以下代码访问它

for (uint i=0;i < 3; i++)
for (uint j=0;j < 5; j++)
{
if (i == 0 || j == 0)
continue;
else
// result - Do some calculations and store
storage(i,j) = result;
}

现在我必须将 2D 矩阵转换为 1D vector 并执行相同的任务。我只是无法理解 i == 0 || 的条件j== 0 只是省略了二维矩阵的第一行和第一列。也就是说,不执行任何计算。因此,如果将它们排除在外,则意味着存储矩阵应该包含零,就像它在两个 for 循环中一样。

感谢任何帮助!

最佳答案

假设您的矩阵有 R 行和 C 列。根据展平 vector 表示矩阵的方式,您可以计算矩阵条目 (r,c) 和相应的 vector 位置 i 之间的关系,如下所示:

Representation |  (r,c) is in    | Entry i corresponds to...
| vector entry... | row | column
---------------+-----------------+------------+-------------
Row-major | (r*C+c) | (i/C) | (i%C)
Column-major | (c*R+r) | (i%R) | (i/R)

因此,如果您迭代 vector 条目并使用适当的公式计算相应的矩阵行和列,您可以根据计算出的行数和列数检查和跳过条目。

关于c++ - 丢弃二维矩阵中的第一行和第一列 - 对扁平的一维 vector 重复相同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34941355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com