首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在运行MATLAB函数的过程中保存struct

在运行MATLAB函数的过程中保存struct
EN

Stack Overflow用户
提问于 2015-09-07 21:02:45
回答 2查看 55关注 0票数 0

我有一个函数,它遍历一堆代码大约10-20次,得到一个n*1的结构,结构的每一行都有大量数据。它需要一段时间来遍历每一行代码,当我运行它时,有可能我犯了一个错误,或者需要一些手动更正。我不想停止代码的运行,因为那样我将不得不丢失我以前所做的所有工作。有没有可能将结构的每次迭代保存到工作区中,即使函数还没有运行完,然后在下一次迭代中用较新的版本覆盖该版本?

(例如,如果我运行了第一次迭代,我有一个1*1的结构,这将保存,然后函数继续,给出一个2*1的结构。我是否可以让它覆盖第一个版本,然后继续这样做,以防我在中间停止函数?)

EN

回答 2

Stack Overflow用户

发布于 2015-09-07 22:40:56

您可以在循环中包含save fileName myStruct,其中myStruct表示您的结构变量,filename是您要保存到的名称。

如果程序在保存时停止或崩溃,最好在覆盖旧文件之前对其进行复制。你可以用copyfile做到这一点。

因此,代码应该是:

代码语言:javascript
运行
复制
%// ...
fname = 'filename'; %// string contianing the file name
fid = fopen([fname '.mat'],'w'); %// create file, even if myStruct doesn't exist yet
fclose(fid); %// close file
for [...] %// your loop
    %// loop operations
    copyfile([fname '.mat'], [fname '.bak'], 'f') %// back up file
    save(fname, 'myStruct') %// overwrite file with updated myStruct 
end
票数 0
EN

Stack Overflow用户

发布于 2015-09-07 23:16:05

我将使用try/catch控制结构。这允许您定义在出现错误或运行时异常的情况下应该发生什么。

假设您的函数返回有问题的结构,

代码语言:javascript
运行
复制
function foo = bar(baz)

try
    % your code here
catch some_exception
    warning(some_exception.msg);% print the exception so you can correct the error later. 
    return % instead of exiting with an error message, return to the caller, the last value of foo is returned 
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32439464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档