|
|
| Florian |

Forum-Anfänger
|
 |
Beiträge: 27
|
 |
|
 |
Anmeldedatum: 21.10.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.04.2010, 11:41
Titel: Addieren von Strukturen
|
 |
Hallo,
ich hab ein Problem mit der "Addition" von Strukturen.
Ich habe mehrere Struktuen (im Beispiel X1, X2) vom gleichen Typ.
Diese Strukturen enthalten Vektoren (X1_G1, X1_G2 bzw. X2_G1, X2_G2) mit verschiedenen Elementen.
Nun möchte ich die Summe der beiden Strukturen bilden.
Also im Prinzip die Vektoren X1_G1 und X2_G1 bzw. X1_G2 und X2_G2 addieren.
Mein Problem vereinfacht dargestellt ergibt sich zu:
Das einfache Addieren der Strukturen (X1+X2) funktioniert nicht.
Ist das überhaupt so allgemein möglich ohne auf die einzelnen Elemente der Sturkturen zuzugreifen?
Da mein echtes Problem eine Vielzahl von Strukturen beinhaltet wäre dies extem schreib aufwändig.
Danke für eure Hilfe
Florian
|
|
|
|
|
|
| josekamara |

Forum-Meister
|
 |
Beiträge: 529
|
 |
|
 |
Anmeldedatum: 26.04.08
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.04.2010, 12:05
Titel:
|
 |
Servus,
Strukturen kann man was i weiss jedenfalls nicht summieren.
Was Du vielleicht machen kannst, den Inhalt der Strukturen z.B mit :
feststellen und dadurch ein kleines Programm schreibst, das die Vektoren
der verschiedenen Strukturen automatisch summiert.
Gruß
Jose
_________________
Simulation
|
|
|
|
| Germanus |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 15.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.8.0 (R2009b), Linux
|
 |
|
|
 |
|
Verfasst am: 07.10.2010, 17:47
Titel:
|
 |
| |
 |
|
Hallo,
nachdem diese Diskussion hier lange Zeit nicht vorgeführt wurde, möchte ich sie wieder aufnehmen, da dieser Beitrag am exaktesten zu meiner Fragestellung passt.
Auch ich möchte in einem struct ein Unterelement um Elemente erweitern. Für eine Struktur (struct) deren Form bekannt ist, werden Lösungsansätze in folgendem Beitrag geannt:
"Erweitern eines structs:"
http://www.gomatlab.de/vorhandene-s.....486,highlight,struct.html
Allerdings möchte ich das ganze deutlich variabler (dynamischer) gestalten, d.h. meine Struktur hat keine feste Form. Die Form möchte ich vielmehr in Listen (Cells) übergeben. Daher die Diskussion und darin genannte Lösungsansätze unter:
http://www.gomatlab.de/korrekter-gebrauch-von-fprintf-t2825.html
Nach diesem Abriss nun der Versuch, meine Wünsche kurz zu umreißen:
Ich habe ein struct, dessen Struktur komplex aber bekannt ist. Mit kompley meine ich:
> eine Tiefe größer als 2 - z.B.: A.B.C
> mehrdimensional - z.B.:A(1:10)
Nun bearbeite ich ein unterstruct, indem ich z.B. weitere Elemente (substructs) hinzufüge. Dies mache ich der Komplexität wegen gerne gesondert in einem Skript. Gedanklich hänge ich den Unterknoten aus, bearbeite ihn und möchte ihn dann wieder komfortabel zurückhängen.
Manuell geschah dies biesher durch z.B. folgenden Beispielcode:
In der täglichen Arbeit habe ich allerdings festgestellt, dass diese Hin- und Rückübergabe sehr langwierig werden kann und fehleranfällig ist. Daher habe ich mir, wie schon so manch anderer hier im Forum gedacht, dass ich eine Funktion schreiben kann, die ein substruct um Elemente erweitert.
In einem ersten Schritt bastle ich mir einen Struct-Pointer zusammen:
Darauf aufbauend kann ich mir dann die unterstructs auslesen. Anmerkung: auch mein temp soll variabel sein dürfen, sprich temp -> A_neu(1). ..., daher die Bezeichnung Ersatz.
Den Listenvergleich habe ich auch hinbekommen (s.u.), nur die Rückgabe an mein Originalstruct im 'base' funktioniert nicht. Daher meine Nachfragen unter
http://www.gomatlab.de/viewtopic,p,53454.html#53454
Konkret scheitere ich an dem gleichen Problem wie unter folgendem Beitrag beschrieben:
http://www.gomatlab.de/struct-im-ba.....257,highlight,struct.html
| Zitat: |
... das Problem ist, dass man structs glaub ich nicht so einfach an Funktionen übergeben kann, auch der assignin Befehl funktioniert bei structs nicht.
|
Anbei noch der etwas ausschweifend geschriebene Quellcode mit dem ich die Elemente vergleiche:
Es würde genügen "struTempOriginalKurz" wieder an die richtige Stelle zu übergeben, ohne dabei alle weiteren Zweige (z.B. A(1).B(3)) zu überschreiben - aber das habe ich bisher noch nicht hinbekomen.
Meine Denkweise hat unter anderem auch noch den Haken, dass sie Symmetrie in structs nicht genügend beachtet.
Mit obigen Ausführungen habe ich wohl alle Klarheiten beseitigt
Vielleicht kann mir trotzdem jemand weiterhelfen.
MFG, Germanus
|
|
|
|
| Germanus |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 15.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.8.0 (R2009b), Linux
|
 |
|
|
 |
|
Verfasst am: 08.10.2010, 15:10
Titel:
|
 |
So,
inzwischen ist meine Funktion fast vollständig, wenn auch vielleicht nicht sauber programmiert.
Allerdings scheitert es momentaqn beim Überschreiben noch an folgendem Error:
??? Subscripted assignment between dissimilar structures.
Das Minimalbeispiel zum Problem lautet:
Hat jemand ne Idee wie ich dieses Problem der Unsymmetrie lösen kann? Damit ist nicht die unten angegebene Lösung gemeint, bei der man noch eine Ebene weiter in den struct geht, denn damit kann man keine ganzen Unterzweige überschreiben/umhängen?
Mit freundlichem Gruß
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.10.2010, 00:33
Titel:
|
 |
Hallo Germanus,
Bei mir erscheint da kein error.
Jan
|
|
|
|
| Germanus |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 15.12.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.8.0 (R2009b), Linux
|
 |
|
|
 |
|
Verfasst am: 11.10.2010, 13:48
Titel:
|
 |
Sorry,
da ist mir ein kleiner Fehler unterlaufen, denn ich habe da etwas vergessen:
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|