添加行和列主矩阵
Adding row- and columnmajor matrix
本文关键字:添加行 更新时间:2023-10-16
我想在C++中创建一个循环,添加两个矩阵,其中第一个是存储为行主矩阵,第二个存储为列主矩阵。然而,我不确定指数之间的数学关系是什么。我试图为 3x3 矩阵执行此操作。在本例中,索引的排列如下所示:
0 1 2 3 4 5 6 7 8
0 3 6 1 4 7 2 5 8
我可以在迭代时以封闭形式编写它吗,例如:
A[i]+B[f(i)]
首先,以下是结论性公式:
f(i) = 3 * (i % 3) + (i / 3);
这里i
被视为第一个矩阵的迭代索引,它存储为行主要,索引的对应位置是(i / 3, i % 3)
。
因此,第二个矩阵存储为主要列,相应的位置由交换行号和列号(i % 3, i / 3)
。
如Index = 3 * row + column
,所以总之,第二个矩阵的迭代索引,表示为f(i)
,是3 * (i % 3) + (i / 3)
。
如果第一个矩阵中的行数为 r,列数为 c,则
f(i) = i / r + i % c * r
我正在利用第一项的整数除法以及第二项中%
和*
从左到右的结合性(%
和*
具有相同的优先级)。
显式计算 indeces 排列公式的另一种方法是考虑列中属于同一行的元素的距离 主要存储矩阵:
// given rows and cols as the number of rows and columns of the matrices
size_t max_index = rows * cols - 1;
for ( size_t i = 0, j = 0; i <= max_index; ++i ) {
c_rm[i] = a_rm[i] + b_cm[j];
j += rows;
if ( j > max_index )
j -= max_index;
}
这可能比计算整数除法、提醒和每个索引值的乘法更快。
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 如何在OMNET++中添加专门的命令行参数?
- 添加新行时工作代码引发异常.调试技巧?
- 如何在三元条件运算符中添加换行符和连接? :在 C++ 中
- 添加符号 libgtest.so 错误:命令行中缺少 DSO
- libstdc++.so.6:添加符号时出错:命令行中缺少 DSO
- 在 QTextEdit C++ 中为特定行添加下划线
- 在 RCPP 中动态添加行
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- 在 C++ 的二维数组中添加行和列
- 在编译时识别所有调用函数 1 的所有 T,<T>然后添加行函数 2<T>()
- 添加行和列主矩阵
- 添加行的 gtkmm 树模型
- 向打开的文件添加行
- QtableView中添加行的信号
- 使用pugixml和c++在.xml中添加行
- SWIG 添加行以删除不存在的变量
- c++预处理器/宏在函数定义后自动添加行
- Qt tablewidget添加行指针
- 向数组中添加行