Я хотел бы знать, как проще всего обновить структуру Matlab из другой структуры с разными полями. Пожалуйста, посмотрите мой пример, чтобы понять, что я имею в виду. У меня две структуры S1 и S2 с разными именами полей, которые я хочу объединить.Структуры конкатенации: обновить поля структуры без перезаписывания существующих полей
S1.a = 1;
S1.b = 2;
S2.c = 3;
S2.d = 4;
Если я пишу S1 = S2;
структура S1, очевидно, будет перезаписана S2. Я хочу, чтобы результат был следующим кодом:
S1.a = 1;
S1.b = 2;
S1.c = 3;
S1.d = 4;
Есть ли простой способ сделать это. Мне удается это сделать, используя цикл for и функцию fieldnames()
, чтобы получить имя поля из S2 и поместить его в S1, но это не совсем опрятное решение.
Matlab файл обмена есть функция [ 'catstruct'] (HTTP: //www.mathworks. com/matlabcentral/fileexchange/7842-catstruct), который, похоже, выполняет требуемую задачу. Возможно, это даст подсказки или даже полное решение. – mikkola
Я не думаю, что использование цикла for здесь недостаточно. Другие возможности - использовать 'struct2cell', если у вас есть какая-то структура в ваших именах полей и может сгенерировать их программно. – rst
Что вы подразумеваете под «не совсем опрятным решением»? Почему именно это не является хорошим решением? –