Matlab 如果基本工作区中存在结构,请保存它
我试图从Matlab工作区保存一个名为“Sum”的结构。结构(1x1)是在函数内部创建的。 我写了一个小脚本:Matlab 如果基本工作区中存在结构,请保存它,matlab,struct,Matlab,Struct,我试图从Matlab工作区保存一个名为“Sum”的结构。结构(1x1)是在函数内部创建的。 我写了一个小脚本: SumCheck = exist('Sum') if SumCheck == 1; save('SummaryTest','Sum') end 如果我在工作区中运行它,它就会起作用-文件“SummaryTest”是在工作目录中创建的。 当我尝试在我的GUI脚本中运行此脚本时,结构“Sum”出现在工作区中,但测试文件从未保存,并且我没有收到任何错
SumCheck = exist('Sum')
if SumCheck == 1;
save('SummaryTest','Sum')
end
如果我在工作区中运行它,它就会起作用-文件“SummaryTest”是在工作目录中创建的。
当我尝试在我的GUI脚本中运行此脚本时,结构“Sum”出现在工作区中,但测试文件从未保存,并且我没有收到任何错误消息。。。。
有人对我如何将这个结构保存为文件有什么想法吗?
提前感谢您的建议。在GUI中运行时,代码可能会在GUI回调函数工作区而不是基本工作区中检查
Sum
。由于找不到它(Sum
位于基本工作区),SumCheck
为false
,因此save
命令不会执行。在GUI中运行时,代码可能会在GUI回调函数工作区而不是基本工作区中检查Sum
。由于找不到它(Sum
在基本工作区中),SumCheck
为false
,因此save
命令无法执行。您可能需要使用evalin()
GUI正在执行的回调在其作用域中没有变量,但听起来您要么在基本工作区中显式创建了SummaryTest结构,要么在GUI外部手动创建了它
evalin()允许您指定执行“eval”的位置。。。例如,你可以
evalin('base', 'save(''SummaryTest'', ''Sum''')
我的语法有点生疏,请看一下evalin的文档。注“基本”是指基本工作空间
HTH您可能需要使用evalin() GUI正在执行的回调在其作用域中没有变量,但听起来您要么在基本工作区中显式创建了SummaryTest结构,要么在GUI外部手动创建了它 evalin()允许您指定执行“eval”的位置。。。例如,你可以
evalin('base', 'save(''SummaryTest'', ''Sum''')
我的语法有点生疏,请看一下evalin的文档。注“基本”是指基本工作空间
HTH使用
exist
和特定类型:exist('Sum','var')
来检查变量,并跳过对现有文件/函数/目录等的所有测试。@Shai谢谢Shai,对于变量,我没有问题,只有这个d$^%^d结构!谢谢你的意见!你这是什么意思?结构只是一个变量,类似于矩阵或单元格数组。使用exist
和特定类型:exist('Sum','var')
来检查变量,并跳过对现有文件/函数/目录等的各种测试。@Shai谢谢Shai,我对变量的使用没有问题,只有这个d$^%^d结构!谢谢你的意见!你这是什么意思?结构只是一个变量,就像矩阵或单元格数组一样。感谢janh,结构实际上是使用Sum=evalin('base','Sum')发送到工作区的;只要我将文件加载到GUI中,结构就存在,并且可以使用我在问题中编写的脚本保存。问题是,这似乎只有在我将脚本输入到工作区时才起作用,而不是在我将其添加到GUI函数脚本时……不过,感谢您的建议,您的语法比我的好,我想,我会研究一下,看看是否能使其工作。感谢janh,结构实际上是使用:Sum=evalin('base','Sum')发送到工作区的;只要我将文件加载到GUI中,结构就存在,并且可以使用我在问题中编写的脚本保存。问题是,这似乎只在我将该脚本输入工作区时起作用,而不是在我将其添加到GUI功能脚本时起作用……不过,感谢您的建议,您的语法比我的好,我想,我会研究一下,看看是否可以使其工作。谢谢!我担心这实际上可能是我问题的正确答案!我想这可能只是我将保存脚本的几行放在哪里的问题。谢谢你的意见!谢谢我担心这实际上可能是我问题的正确答案!我想这可能只是我将保存脚本的几行放在哪里的问题。谢谢你的意见!