Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将变量转储为MATLAB源代码?_Matlab - Fatal编程技术网

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

如何将变量转储为MATLAB源代码?,matlab,Matlab,是否有方法转储MATLAB变量作为相应文字初始值设定项的源代码?我正在寻找一些函数x,例如: >> A = zeros(2); >> x(A) ans = [0 0; 0 0] >> class(x(A)) ans = char 有没有这样的功能,或者一个简单的方法来达到同样的效果?(我意识到一些MATLAB项目可能不存在文字初始值设定项;对于这些项目,问题本质上是无法解决的。) 我知道MATLAB提供了许多将数据保存到文件的方法,但我发现的所有方法都不能生

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

>> A = zeros(2);
>> x(A)
ans =
[0 0; 0 0]
>> class(x(A))
ans =
char
有没有这样的功能,或者一个简单的方法来达到同样的效果?(我意识到一些MATLAB项目可能不存在文字初始值设定项;对于这些项目,问题本质上是无法解决的。)


我知道MATLAB提供了许多将数据保存到文件的方法,但我发现的所有方法都不能生成MATLAB源代码,这正是我所追求的。

我知道您正在寻找一个可以实现这一点的函数,而不是交互式过程,但对于任何想手动实现这一点的人来说

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

生成的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操作。

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

例如,(来自MATLAB文档):

以矩阵为例

x=[3.852.91;7.748.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”作为第二个参数传递可以确保答案是正确数字类型的大小写

看,还是跑


在MATLAB中,有关详细信息。

在MATLAB文件交换上似乎有一些脚本可以实现这一点。你试过了吗?还有@TajMorton:还没有;谢谢你的提示!您已经给出的答案似乎运行良好,仅供参考,最新版本的MATLAB(2014a)包含了新功能(),可以完全满足您的要求。功能很好,谢谢您的提示!您知道有一种内置的方法可以对非数值类型(如单元格数组)执行此操作(
C={'one';'two';'three'}
不起作用)?即使是变量编辑器也不会直接保存到单元格的.m文件中,但编辑器的复制/粘贴会给出代码。假设单元格的每个成员本身都是
mat2str
支持的类型,则可以执行
Cs=cellfun(@mat2str,C,'UniformOutput','false');pattern=strrep(mat2str(nan(大小(C)),'nan','%s');A=sprintf(['{'pattern(2:end-1)}]],Cs{:});
doc mat2str