格式化二进制双精度二维矩阵以读入 IDL 的最基本方法是什么?
What's the most basic way to format a 2D matrix of doubles in binary for reading into IDL?
所以我在 C++ 中有一个 i x j 的双精度矩阵,我想将其读入 IDL 程序。
假设矩阵称为数据,大小为 ROWS by COLS,名称字符串保存到文件名。我只是将流中的值写入二进制文件。
ofstream myfile (filename, ios::binary);
if(myfile.isopen())
{
for (int i = 0; i < ROWS; i++){
for (int j=0; j < COLS; j++){
myfile<<data.at(i,j);
}
myfile.close();
然后我想将它读回到 IDL 中,但我是在 IDL 中使用二进制文件的新手,并且按照文档将我带到了这里,但它不起作用。
function read_binmatrix, filename, ROWS, COLS, thetype
mat = READ_BINARY(filename,DATA_TYPE=thetype,DATA_DIMS=[ROWS-1,COLS-1])
return, mat
end
...
...
matrix = read_binmatrix(file2,num_rows,num_cols,5)
...但是我得到这个错误作为输出。
% READ_BINARY: READU: End of file encountered. Unit: 100, File:
...
% Execution halted at: READ_BINMATRIX 21
...
myfile<<data.at(i,j);
将文本写入文件,而不是二进制数据。要以二进制格式写入数字,请使用 std::ofstream::write()
:
myfile.write(reinterpret_cast<char*>(&data.at(i,j),sizeof(decltype(data.at(i,j))));
所以我在 C++ 中有一个 i x j 的双精度矩阵,我想将其读入 IDL 程序。
假设矩阵称为数据,大小为 ROWS by COLS,名称字符串保存到文件名。我只是将流中的值写入二进制文件。
ofstream myfile (filename, ios::binary);
if(myfile.isopen())
{
for (int i = 0; i < ROWS; i++){
for (int j=0; j < COLS; j++){
myfile<<data.at(i,j);
}
myfile.close();
然后我想将它读回到 IDL 中,但我是在 IDL 中使用二进制文件的新手,并且按照文档将我带到了这里,但它不起作用。
function read_binmatrix, filename, ROWS, COLS, thetype
mat = READ_BINARY(filename,DATA_TYPE=thetype,DATA_DIMS=[ROWS-1,COLS-1])
return, mat
end
...
...
matrix = read_binmatrix(file2,num_rows,num_cols,5)
...但是我得到这个错误作为输出。
% READ_BINARY: READU: End of file encountered. Unit: 100, File:
...
% Execution halted at: READ_BINMATRIX 21
...
myfile<<data.at(i,j);
将文本写入文件,而不是二进制数据。要以二进制格式写入数字,请使用 std::ofstream::write()
:
myfile.write(reinterpret_cast<char*>(&data.at(i,j),sizeof(decltype(data.at(i,j))));