我正在使用 Matlab 在 C++ 中调用一些外部调用,然后返回一个巨大的计算矩阵。矩阵非常大,我无法访问这个 C++ 程序的源代码。(如果我有,我会立即从 C++ 中保存)
现在,在我的系统上,这个 C++ 程序只用了 1 秒来计算给定的数据并发送回 Matlab,而 Matlab 的 dlmwrite 需要 200-300 秒才能将这个巨大的数组保存在磁盘上。我还有数千个要计算,我想缩短时间。
那么在Matlab中保存最快的方法是什么?
我正在使用 Matlab 在 C++ 中调用一些外部调用,然后返回一个巨大的计算矩阵。矩阵非常大,我无法访问这个 C++ 程序的源代码。(如果我有,我会立即从 C++ 中保存)
现在,在我的系统上,这个 C++ 程序只用了 1 秒来计算给定的数据并发送回 Matlab,而 Matlab 的 dlmwrite 需要 200-300 秒才能将这个巨大的数组保存在磁盘上。我还有数千个要计算,我想缩短时间。
那么在Matlab中保存最快的方法是什么?
如果您想要仅使用 Matlab 的解决方案,我可能会将 fwrite 用于二进制或 fprintf 用于 ASCII。但是,我喜欢在 IO 方面混合使用 Matlab 和 Java,因为这通常更快。我会做类似的事情
Java Code
package mypackage.release;
import java.io.DataOutputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException
public class MatrixWriter {
public static void write(String fileName, double[] matrix) throws IOException {
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(fileName)));
for (double d : matrix)
dos.writeDouble(d);
dos.close();
}
}
Matlab Code
import mypackage.release.MatrixWriter;
M = get matrix from c++;
MatrixWriter.write('myfile.dat', M(:));
这是我的想法,但我一直在使用它的变体。希望能帮助到你。