您是否曾尝试检查和修改深度嵌套的结构/单元格变量?当然,MATLAB变量编辑器将有助于可视化这些变量。然而,为了自动创建这样一个变量或定期更改一些深度嵌套的字段,此提交可能很有用。
主要功能是GENCODE。此函数递归遍历输入变量。如果输入变量的当前部分的值可以表示为MATLAB赋值的右侧(通常情况下,这种情况最多适用于2D矩阵、字符或单元格数组),则递归停止。在这种情况下,调用GENCODE_RVALUE为赋值的右侧创建代码,调用GENCODE_SUBSTRUCT为输入变量创建正确的引用。
一个非常简单的例子:
%具有2个字段“a”和“b”的结构变量
x.a=1;
x.b=“somestring”;
%为其生成代码
str=发电机代码(x);
%显示此代码
字符(str)
%清除原始变量
清除x
%通过评估代码重新创建
eval(sprintf(“%s”,str{:}))
hgsave_pre2008a.m中提供了一个更真实的示例。在MATLAB 2008a中,GUIDE将%自动uicontrol回调保存为匿名函数句柄。不幸的是,当加载包含某些匿名函数的.fig/.mat文件时,MATLAB R14SP3崩溃。一个可能的解决方法是
1.在MATLAB 2008a中打开.fig文件
2.为其生成代码
3.在MATLAB R14SP3中运行生成的代码
4.将结果变量保存在新的.fig文件中