如何将变量转储为MATLAB源代码?
是否有方法转储MATLAB变量作为相应文字初始值设定项的源代码?我正在寻找一些函数如何将变量转储为MATLAB源代码?,matlab,Matlab,是否有方法转储MATLAB变量作为相应文字初始值设定项的源代码?我正在寻找一些函数x,例如: >> A = zeros(2); >> x(A) ans = [0 0; 0 0] >> class(x(A)) ans = char 有没有这样的功能,或者一个简单的方法来达到同样的效果?(我意识到一些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