如果struct存在于基础工作区中,请保存它

时间:2013-07-24 10:55:51

标签: matlab struct

我试图保存一个名为' Sum'来自Matlab工作区。 struct(1x1)是在函数内创建的。 我写了一个小脚本:

    SumCheck = exist('Sum')
    if SumCheck == 1;
        save('SummaryTest','Sum')
    end

这是我在工作区中运行的 - 文件' SummaryTest'在工作目录中创建。 当我尝试在我的GUI脚本中运行它时,结构' Sum'出现在工作区中,但测试文件永远不会保存,我没有收到错误消息.... 有没有人对如何将这个结构保存为文件有任何想法? 提前感谢任何建议。

2 个答案:

答案 0 :(得分:2)

您可能需要使用evalin()

您的GUI正在执行的回调在其范围内没有变量,但听起来您已在基本工作空间中显式创建了SummaryTest结构,或者可能在GUI之外手动创建它。

evalin()允许您指定执行“eval”的位置...例如,您可以

evalin('base', 'save(''SummaryTest'', ''Sum''')

我的语法有点生疏,所以看看evalin的文档。注意'base'指的是基础工作区

HTH

答案 1 :(得分:1)

在GUI中运行时,代码可能会检查GUI回调函数工作空间中的Sum,而不是基本工作空间。由于找不到它(Sum在基础工作区中),SumCheckfalse,因此save命令不会被执行。