Ну, eval
, конечно, самый простой, но и самый грязный способ.
"Правильный" способ сделать это, я думаю, будет использовать subsasgn
,Вам нужно будет разобрать частичную команду MATLAB (например, SubjectData(5).fmriSessions{2}.Stats
) в правильное представление для этих функций.Часть работы может быть выполнена с помощью substruct
, но это самая легкая часть.
Так, например, SubjectData(5).fmriSessions{2}.Stats
необходимо будет перевести на
indexes = {'.' , 'SubjectData',
'()', {5},
'.' , 'fmriSessions',
'{}', {2},
'.' , 'Stats'};
indexStruct = substruct(indexes{:});
AnalysisResult = subsasgn(AnalysisResult, indexStruct, DataToBeEntered);
Где вы должны разработать код так, чтобы массив ячеек indexes
был выполнен, как указано выше.Это не должно быть так сложно, но это тоже не тривиально.В прошлом году я портировал некоторый eval
-тяжелый код с аналогичной целью, и это казалось легким, но довольно сложно все сделать правильно.