【发布时间】:2011-07-02 18:05:56
【问题描述】:
由于遗留函数调用,我有时不得不编写像这样丑陋的包装器
function return = someWrapper(someField)
a = someField.a;
b = someField.b;
% and so on, realistically it's more like ten variables that
% could actually be grouped in a struct
save('params.mat', 'a', 'b'); %etc.
% then, on another machine, a function loads params.mat, does the calculations
% and saves the result in result.mat containing the variables c,d,...
load('result.mat', 'c', 'd');
return.c = c;
return.d = d;
% again, it's more than just two return values
所以基本思想是创建与someField 的字段名称相同名称的变量,运行一个函数并使用someFunction 的返回变量名称作为字段名称创建一个return 结构。
有没有办法使用一些循环来简化这个,例如超过fieldnames(someField)?
或者我真的应该使用一些不同的方法吗?由于使用someField 和result 完成了一些进一步的处理,我想继续使用结构,但也许第二个问题是
save 和 load 可以重定向变量名称吗? IE。可以例如params.mat 中的变量a 使用someField.a 作为值存储,而不是必须先分配a = someField.a?
【问题讨论】:
标签: matlab loops struct wrapper