将3D Matlab矩阵以1D形式写入文件,然后用C++读回的过程可以通过以下步骤完成:
matrix = reshape(matrix, 1, []);
fid = fopen('filename', 'w');
fwrite(fid, matrix, 'double');
fclose(fid);
#include <iostream>
#include <fstream>
#include <vector>
int main() {
std::ifstream file("filename", std::ios::binary);
if (file) {
// 获取文件大小
file.seekg(0, std::ios::end);
std::streampos fileSize = file.tellg();
file.seekg(0, std::ios::beg);
// 读取文件内容到vector
std::vector<double> data(fileSize / sizeof(double));
file.read(reinterpret_cast<char*>(data.data()), fileSize);
// 还原1D数组为3D矩阵
int dim1 = 3; // 第一维大小
int dim2 = 4; // 第二维大小
int dim3 = 5; // 第三维大小
std::vector<std::vector<std::vector<double>>> matrix(dim1, std::vector<std::vector<double>>(dim2, std::vector<double>(dim3)));
int index = 0;
for (int i = 0; i < dim1; i++) {
for (int j = 0; j < dim2; j++) {
for (int k = 0; k < dim3; k++) {
matrix[i][j][k] = data[index++];
}
}
}
// 输出还原后的矩阵
for (int i = 0; i < dim1; i++) {
for (int j = 0; j < dim2; j++) {
for (int k = 0; k < dim3; k++) {
std::cout << matrix[i][j][k] << " ";
}
std::cout << std::endl;
}
std::cout << std::endl;
}
}
return 0;
}
以上代码将读取之前写入的文件,并将1D数组还原为3D矩阵。请确保文件名与之前写入时的文件名一致。还原后的矩阵将通过控制台输出。
注意:以上代码仅为示例,实际应用中可能需要根据具体情况进行适当修改和优化。
领取专属 10元无门槛券
手把手带您无忧上云