如何将变量转储为MATLAB源代码?

时间:2014-03-02 23:10:32

标签: matlab

有没有办法将MATLAB变量转储为相应文字初始值设定项的源代码? IOW,我正在寻找一些函数x,例如:

>> A = zeros(2);
>> x(A)
ans =
[0 0; 0 0]
>> class(x(A))
ans =
char

是否有这样的功能或简单的方法来达到同样的效果? (我意识到某些MATLAB项目可能不存在文字初始值设定项;对于这些项目,问题本质上是无法解决的。)

我知道MATLAB提供了许多将数据保存到文件的方法,但我发现的方法都没有产生MATLAB 源代码,这就是我所追求的。 / p>

2 个答案:

答案 0 :(得分:3)

对于简单的数值(可能还有char数组,我忘了 - 这完全来自内存和文档,我现在没有MATLAB的副本),MAT2STR函数可以满足您的需求。

例如,(来自MATLAB文档):

  

考虑矩阵

     

x = [3.85 2.91; 7.74 8.99]   x =      3.8500 2.9100      7.7400 8.9900   声明

     

A = mat2str(x)   产生

     

A =     [3.85 2.91; 7.74 8.99]   其中A是一个包含21个字符的字符串,包括方括号,空格和分号。

此外,将字符串'class'作为第二个参数传递,确保答案将是正确的数字类型。

请参阅the MATLAB documentation for MAT2STR或运行

doc mat2str

在MATLAB中,了解更多信息。

答案 1 :(得分:2)

我知道你正在寻找能够做到这一点的功能,而不是一个交互式程序,但是对于其他想要手动执行此操作的人来说......

MATLAB变量编辑器/查看器具有内置的代码生成功能。在编辑器中打开变量,单击保存图标,然后选择MATLAB Script(* .m)文件类型(默认为.mat):

enter image description here

生成的MatrixCode.m:

% -------------------------------------------------------------------
%  Generated by MATLAB on 3-Mar-2014 17:35:49
%  MATLAB version: 8.3.0.73043 (R2014a)
% -------------------------------------------------------------------


M = ...
  [16 2 3 13;
   5 11 10 8;
   9 7 6 12;
   4 14 15 1];

也许拥有Java和逆向工程技能的人可以从命令行中找出如何调用此GUI操作。