|
|
Matrizenrechnung mit struct |
|
ansc |

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 05.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.11.2015, 15:16
Titel: Matrizenrechnung mit struct
|
 |
|
 |
|
Hallo alle miteinander,
neue Woche, neues Problem
Ich habe ein struct mit 8 Feldern und einigen tausend Zeillen. Für die Rechnung die ich durchführen möchte benötige ich nur 3 dieser Felder(azAng,elAng und radVel). Hierbei sind in den einzelnen Feldern von azAng und elAng immer nx1 double array und in radVel nxm.
Als Ausgangsformel habe ich diese kurze Übung geschrieben.
So ist das ja alles noch schön einfach. Ich möchte diese Rechnung nun mit meinen oben benannten Spalten ausführen.
Der Inhalt der Spalte radVel ist dabei das V aus dem vereinfachten Beispiel.
Mein derzeitiges Problem liegt bei der Matrix A.
Diese müsste ja nun auf grund meines Datensatzes wieder über 1000 Zeilen haben, da werde ich sicher eine Schleife anwenden müssen.
Ich habe mal so angefangen:
Hier bekomme ich jetzt die Fehlermeldung:
Error using *
Inner matrix dimensions must agree.
Könnte das daran liegen, das ich noch auf die einzelnen Felder zugreifen muss?
Ich bin mir einfach sehr unsicher, ob das was ich versucht habe so überhaupt Sinn ergibt, oder ob man diese Berechnung auch so ausführen kann, dass ich nicht wieder die Spalten aus meinem struct in eine Matrix umwandeln muss.
Ich bedanke mich schonmal für Anmerkungen und Hilfe von Euch
Und falls ich mich zu undeutlich ausgedrückt hab, dann tut mir das leid und ich werde gerne nochmal versuchen mein Problem genauer zu schildern.
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 02.11.2015, 15:39
Titel: Re: Matrizenrechnung mit struct
|
 |
Hallo ansc,
Zitat: |
Hier bekomme ich jetzt die Fehlermeldung:
Error using *
Inner matrix dimensions must agree. |
Die Fehlermeldung ist eindeutig: Die Multiplikation von Arrays benötigt Matrizen mit passenden Dimensionen. Die Multiplikation eines [1xN] Vektors mit einem [1xN] Vektor ist z.B. nicht definiert. [1xN] * [Nx1] ist dagegen das normale DOT-Produkt.
Nun ist noch nicht klar, welchen Wert Du denn für A(k) erwartest.
Gruß, Jan
|
|
|
ansc |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 05.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.11.2015, 15:50
Titel:
|
 |
Hallo Jan,
wenn ich nochmal von dem einfachen Beispiel ausgehe bekomme ich ja für A eine 3x3 Matrix raus. Also müsste ich meines Erachtens nach für mein jetziges A eine wesentlich größere Matrix rausbekommen. y und z sind derzeit beide 90000x1 double darauf basierend müsste ich dann ja ein 90000x3 double für A rausbekommen.
Ich hoffe, dass das deine Frage beantwortet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.11.2015, 16:04
Titel:
|
 |
Hallo,
du verwendest k in der rechten Seite der for-Schleife nicht.
Die Frage ist nicht nur, welche Dimensionen A haben soll, sondern auch welchen Inhalt. Ich könnte mir z.B. vorstellen
Wenn y und z Vektoren der Länge 90000 sind, ist A dann 90000x3.
Grüße,
Harald
|
|
|
ansc |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 05.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.11.2015, 11:59
Titel:
|
 |
Hallo nochmal und schonmal danke für die Antworten,
ich habe mittlerweile festgestellt, dass ich einen Denkfehler begangen habe. Deswegen jetzt nochmal von vorne:
Phi kommt aus der elAng Spalte des structs und Teta aus der azAng Spalte.
A sollte jetzt jede menge Zeilen bekommen und es sollte so aussehen, das in der ersten Zeile die Phi und Teta Werte aus der ersten Zeile und daraus der erste Wert sind, also Zb. in der ersten zeile von azAng und elAng steht 160x1 double dann sollen aus diesen 160 Werten jeweils der erste für die Rechnung benutzt werden, in der nächsten Zeile von A dann der zweite Wert und soweiter bis alle 160 Werte durch sind und danach soll es in die nächste Zeile von azAng und elAng springen (80x1) und dann dort genauso vorgehen.
Ich hoffe ihr versteht was ich meine. Ich dachte das wäre einfacher mit Matrizen, so wie gestern beschrieben, aber ich glaube da habe ich einen großen Denkfehler begangen.
Lieben Gruß
|
|
|
|
|
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.
|
|