Из-за устаревших вызовов функций мне иногда приходится писать такие уродливые обертки, как этот
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
, запустить функцию и создать структуру return
, используя имена возвращаемых переменных someFunction
в качестве имен полей.
Есть ли какой-то способ упростить это с помощью некоторого цикла, например свыше fieldnames(someField)
?
Или я действительно должен использовать другой подход? Поскольку дальнейшая обработка выполняется с помощью someField
и result
, я бы хотел продолжать использовать структуры, но, возможно, второй вопрос будет
Могут ли save
и load
перенаправлять имена переменных? То есть может, например, переменная a
в params.mat должна быть сохранена с использованием someField.a
в качестве значения вместо необходимости присваивать a = someField.a
сначала?