0

我正在尝试从 c++ 中获取一个矩阵并将其导入 Matlab 以在该矩阵上运行 bintprog,称之为 m。我的 c++ 代码生成了这些特定类型的矩阵,我需要在它们上快速运行 bintprog,最好使用数百万个矩阵。

因此,以下任何一项都会很棒:一种一次导入一堆矩阵的方法,这样我就可以通过我的 Matlab 代码运行大量迭代。或者,如果我可以很好地在 C++ 中实现 Matlab 代码。

如果不清楚,请给我评论,我会更新我能做的。

4

2 回答 2

1

我建议使用简单的解决方案,假设您的矩阵保存在 3 维数组中:

在 C++ 中构建一个循环,以保存您的矩阵......这样的事情:

ofstream arquivoOut0("myMatrices.dat");
  for(int m=0;m<numberMatrices;m++){ 
      for (int i=0; i< numberlines;i++){
           for(int j=0;j<numberColumns;j++)
               if(j!=numberColumns-1) arquivoOut0<< matrices[m][i][j] << "\t";
               else arquivoOut0<< matrices[m][i][j] << "\n";
           }
       }
  }
arquivoOut0.close();

好的。您已将矩阵保存在 ascii 文件中!现在你必须在 Matlab 中阅读它!

load myMatrices.dat

  for m=1:numberMatrices
      for i=1:numberLines
           for j=1:numberColumns
               myMatricesInMatlab(m,i,j)=myMatrices((m-1)*numberLines+i,j);
           end
       end
  end

现在,您可以使用所需的工具箱:

for i=1:numberMatrices
    Apply the toolbox for myMatricesInMatlab(i,:,:);
end

我认为它有效,处理时间不是问题!

于 2013-02-21T21:07:40.490 回答
1

您可以从 C++ 代码调用 Matlab 命令(反之亦然):

  1. 将 C++ 代码编译为mex函数并bintprog使用mexCallMatlab.

  2. 正如 Mark 所提议的,您可以使用matlab engine 从本机 C++ 代码调用 Matlab 引擎

  3. 您可以将您的 C++ 代码编译为共享库,并使用calllib.

于 2013-02-20T17:53:07.947 回答