Chciałbym poznać najłatwiejszy sposób aktualizacji struktury Matlab z innej struktury o różnych polach. Zobacz mój przykład, aby zrozumieć, co mam na myśli. Mam dwie struktury S1 i S2 z różnymi nazwami pól, które chcę połączyć.Połączone struktury: Zaktualizuj pola struct bez nadpisywania istniejących pól
S1.a = 1;
S1.b = 2;
S2.c = 3;
S2.d = 4;
Jeśli piszę S1 = S2;
struktura S1 będzie oczywiście być nadpisane przez S2. Chcę, aby wynik był następujący:
S1.a = 1;
S1.b = 2;
S1.c = 3;
S1.d = 4;
Czy istnieje prosty sposób na zrobienie tego. Udaje mi się to zrobić za pomocą pętli for i funkcji fieldnames()
, aby uzyskać nazwę pola od S2 i umieścić ją w S1, ale nie jest to naprawdę zgrabne rozwiązanie.
Wymiana plików Matlab posiada funkcję o nazwie [ 'catstruct'] (http: //www.mathworks. com/matlabcentral/fileexchange/7842-catstruct), który wydaje się wykonywać wymagane zadanie. Być może dostarczy wskazówek, a nawet kompletne rozwiązanie. – mikkola
Nie sądzę, że użycie pętli for nie jest wystarczająco dobre. Inne możliwości to użycie 'struct2cell', jeśli posiadasz jakąś strukturę w nazwach pól i możesz je programowo wygenerować. – rst
co masz na myśli mówiąc "niezbyt porządne rozwiązanie"? Dlaczego właściwie nie jest to dobre rozwiązanie? –