Я думаю, что основная проблема в этом коде заключается в том, как вы получаете доступ к функциям myStruct
. Взгляните на следующий фрагмент кода:
function configureChannel(obj, Channel)
myStruct.Channel = Channel;
...
end
Что вы предназначены для того, чтобы сделать, чтобы назначить Channel
в Channel
области Channel
собственности myStruct
«s текущего объекта. Что фактически делает эквивалентно вызову:
myStruct = struct('Channel', Channel);
То есть, вы создаете новую локальную переменную в текущем рабочем пространстве/объем configureChannel
, без фактического обновления свойство объекта, obj
,
Таким образом, первая поправка вам нужно сделать, как получить доступ к myStruct
в вашем setter:
obj.myStruct.Channel = Channel;
Далее это вопрос экономии.
При демпинг копию поля объекта в файл, я ожидал бы save
лечить ваш произвольный объект как struct
и так struct
saving conventions должны применяться:
'-struct',structName
| Store the fields of the scalar structure specified by structName
as individual variables in the file. For example, save('filename.mat','-struct','S')
saves the scalar structure, S
.
Таким образом, я хотел бы ожидать следующее работать отказ от ответственности: я не проверял это:
save('filename.mat','-struct','obj.myStruct');
Другие варианты в случае, если это не поможет:
save('filename.mat','obj.myStruct'); % Alternative #1
tmp = obj.myStruct; save('filename.mat','tmp'); % Alternative #2
Одна последней вещи - как вы, возможно, заметили, я использую функцию форму save
, потому что я считаю, что это более ремонтопригодно/читаемыми/дурак:
save(filename,variables,'-append');
Вам необходимо добавить свойство класса с именем класса. – excaza
Вы имеете в виду вот это? save -append registers.mat myClass.myStruct Не работает. – user1876942
Попробуйте 'save -append registers.mat obj.myStruct;'. Если он не работает - поместите его во временную переменную, затем сохраните переменную ('a = obj.myStruct; save ...'). Кроме того, я уверен, что вы создаете новую локальную переменную, когда вы выполняете 'myStruct.Channel = Channel;' Вместо этого вы должны использовать 'obj.myStruct.Channel = Channel;'. –