gpt4 book ai didi

c++ - 使用文件将 C++ 数组转换为 matlab 大矩阵

转载 作者:行者123 更新时间:2023-11-30 01:48:39 25 4
gpt4 key购买 nike

在我的代码中,我正在更改我的数组 (int*),然后我想将它与 matlab 结果进行比较。

因为我的数组很大,有 1200 X 1000 个元素。这需要很长时间才能将它加载到 matlab 中

我正在尝试将打印的输出文件复制到 matlab 命令行...

for (int i = 0; i < _roiY1; i++)
{
for (int j = 0; j < newWidth; j++)
{
channel_gr[i*newWidth + j] = clipLevel;
}
}

ofstream myfile;
myfile.open("C:\\Users\\gdarmon\\Desktop\\OpenCVcliptop.txt");
for (int i = 0; i < newHeight ; i++)
{
for (int j = 0; j < newWidth; j++)
{
myfile << channel_gr[i * newWidth + j] << ", ";
}
myfile<<";" <<endl;
}

是否有更快的方法从 C++ 创建可读矩阵数据?进入 MATLAB?

最佳答案

最简单的答案是,以二进制形式传输数据要快得多,而不是像问题中建议的那样呈现为文本并让 Matlab 将其解析回二进制。您可以通过在 C/C++ 端使用 fwrite() 并在 Matlab 端使用 fread() 来实现这一点。

int* my_data = ...;
int my_data_count = ...;

FILE* fid = fopen('my_data_file', 'wb');
fwrite((void*)my_data, sizeof(int), my_data_count, fid);
fclose(fid);

在 Matlab 中:

fid = fopen('my_data_file', 'r');
my_data = fread(fid, inf, '*int32');
fclose(fid);

可能值得注意的是,您可以从 Matlab 中调用 C/C++ 函数,因此根据您正在做的事情,这可能是一个更简单的架构(查找“mex 文件”)。

关于c++ - 使用文件将 C++ 数组转换为 matlab 大矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30177154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com