Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
由于遗留函数调用,有时我不得不像这样写丑包装
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做了一些进一步的处理, result我想继续使用结构,但是第二个问题可能是 可以save和load重定向变量名称吗?即例如可以使用someField.a作为值存储someField.a的变量a ,而不必首先分配a = someField.a ? 回答: 为什么不这样呢? 如果是s: sa=1 sb=2 sc=3 然后,此命令使用变量a,b,c创建一个名为“参数”的matfile: save arguments.mat -struct s 然后此命令将matfiles变量加载到结构中 r = load('arguments.mat') 更多&回答... |
![]() |
![]() |