将双**一维矩阵转换为双**二维方形矩阵
Convert a double* one-dimensional matrix to double** 2D square matrix
我有一个矩阵的一维表示:类型
double *A1d;
您可以假设此数据结构为malloc'd
,并填充有双值,长度为MATRIX_SIZE * MATRIX_SIZE
。
我想将此数据结构转换为具有行/列长度MATRIX_SIZE
的double**
类型的二维方形矩阵
我正在寻找类似的东西:
double** A2D = vector_to_matrix(int sz, double* matrix_1d);
double** vector_to_matrix(int sz, double* matrix_1d) {
// The output 2d matrix to be returned.
double** matrix_2d = (double**)malloc(sz * sizeof(double*));
// Allocate memory.
for (int i = 0; i < sz; i++)
matrix_2d[i] = (double*)malloc(sz * sizeof(double));
// Copy from 1d matrix.
for (int i = 0; i < sz; i++)
for (int j = 0; j < sz; j++) matrix_2d[i][j] = matrix_id[i * sz + j];
return matrix_2d;
}
可以应用一个简单的算法将一维矩阵转换为二维方形矩阵。
假设1D矩阵的大小适合此映射,则以下函数将完成此操作:
double** vector_to_matrix(int sz, double* matrix_1d)
{
double** matrix_2d;
matrix_2d = (double**) malloc(sz*sizeof(double*));
for (int k = 0; k < sz; k++) {
matrix_2d[k] = (double*) malloc(sz*sizeof(double));
}
for (int i = 0; i < sz; i++) {
for (int j = sz * i; j < sz * (i+1); j++) {
matrix_2d[i][j%sz] = matrix_1d[j];
}
}
return matrix_2d;
}
相关文章:
- 将二维矢量传递给类
- 将值从二维数组输出到文本文件
- 我在二维向量中是否正确分配了内存
- 带结构的二维矢量:如何存储元素
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- C++ 传递二维字符数组
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中的二维整数数组,每行中的元素数量不均匀
- C++ 中动态二维数组的访问冲突
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 二维矢量数据成员
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 将双**一维矩阵转换为双**二维方形矩阵