|
Heber |
Forum-Fortgeschrittener
|
|
Beiträge: 64
|
|
|
|
Anmeldedatum: 01.02.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013a
|
|
|
|
|
|
Verfasst am: 14.10.2017, 12:36
Titel: M-function spinnt
|
|
Hallo ich benutze eine m-function in einem Simulink Modell. Und meiner Meinung nach macht sie nur Mist. Zunächst zeigt sie mir Fehler aufgrund von angeblich nicht passenden Dimensionen bei Multiplikationen von Matrizen und Vektoren. Ändere ich hier eine Matrix (bsw Spaltenvektor ) in jeweils die Transponierte erlischt die Fehlermeldung. Mathematisch macht es kein Sinn, da die Dimensionen nun nicht mehr passen bzw eine Multiplikation nicht möglich ist. Was kann flasch sein?
das ist mein Code. Als Eingangsgröße sind die Matrizen Phi (2x2), H (2x1) und C (1x2) und die Koavrianzmatrizen R (skalar) Q (2x2). xkm1 ukm1 und yk sind die Zustände zum k-1ten, die Eingangsgröße zum k-1ten und yk die Ausgangsgröße zum kten Schritt.
Ich habe jeweisl den eigentlich richtigen Code und den falschen Code dargelegt.
Wo könnte mein Fehler liegen? Ich bin ratlos, gerade weil Matlab einen falschen Code alsrRichtig interpretiert...
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.10.2017, 19:08
Titel:
|
|
Hallo,
ich würde dir mal den Debugger empfehlen. Es ist extrem unwahrscheinlich, dass MATLAB bei so elementaren Operationen falsch rechnet.
Bitte Fehlermeldungen generell kopieren und nicht übersetzen / interpretieren.
Grüße,
Harald
|
|
|
Heber |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 64
|
|
|
|
Anmeldedatum: 01.02.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013a
|
|
|
|
|
|
Verfasst am: 15.10.2017, 10:18
Titel:
|
|
Die Matrizen sind devinitiv richtig definiert! Es kann normalerweise keine Meldungen aufgrund von Dimensionen geben...
Ich habe mal den Debugger benutzt: Siehe Anhang.
Leider wird es so lang gezogen...
Fehlermeldung im Anhang.
Betrefflicher Codeauszug(m-file):
Was ich noch probiert hatte ist die Ps_k Matrix auf persistent zu stellen und zunächst via if isempty() einen Startwert vorzugeben, was allerdings auch nichts half.
[EDITED, Jan, Bitte keine vollständigen Zitate der vorhergehenden Nachricht - Danke!]
Beschreibung: |
|
Download |
Dateiname: |
Fehlermeldungen.png |
Dateigröße: |
25.44 KB |
Heruntergeladen: |
386 mal |
Beschreibung: |
|
Download |
Dateiname: |
Debug.png |
Dateigröße: |
21.94 KB |
Heruntergeladen: |
389 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.10.2017, 08:16
Titel:
|
|
Hallo,
es wäre hilfreich, ein komplett reproduzierbares Beispiel zu haben. Auch bei deinem Beispielskript fehlt noch die Hälfte der Parameter.
Grüße,
Harald
|
|
|
Heber |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 64
|
|
|
|
Anmeldedatum: 01.02.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013a
|
|
|
|
|
|
Verfasst am: 16.10.2017, 15:54
Titel:
|
|
Es fehlt nichts, außer b0, a1 und a0. Diese kannst du so wählen: b0 =1; a1 = 7 und a0 =30. Der Rest ist bekannt.
[EDITED, Jan, Bitte keine vollständigen Zitate der vorhergehenden Nachricht - Danke!]
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.10.2017, 19:23
Titel:
|
|
Hallo,
mir zumindest erschließt sich nicht, was die konkreten Werte von
C, H, R, Pkm1, xkm1, ukm1, yk
sein sollen.
Du hast zwar zu einigen der Variablen die Dimensionen angeben, aber warum soll ich ein Beispiel konstruieren, das vielleicht dann doch nicht das selbe Verhalten hat wie bei dir, wenn du leicht ein solches Beispiel zur Verfügung stellen kannst?
Hast du die Funktion denn mal als reine MATLAB-Funktion getestet? Treten die Probleme schon dort auf oder erst, wenn du das in Simulink einzubinden versuchst? In letzterem Fall wäre ein Beispielmodell hilfreich.
Grüße,
Harald
|
|
|
Heber |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 64
|
|
|
|
Anmeldedatum: 01.02.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013a
|
|
|
|
|
|
Verfasst am: 16.10.2017, 19:55
Titel:
|
|
C = C1 aus dem Skript
H = H2 aus dem Skript
Pkm1 (gesprochen Pk minus 1) ist die zurückgefürte Kovarianz einen Schritt vorher (delay zwischen Aus- und Eingang)
xkm1 ist die zurückgefürte Kovarianz einen Schritt vorher (delay zwischen Aus- und Eingang)
yk gemessener Systemausgang zu k-Schritt
Skript samt Modell und Datei im Anhang.
[EDITED, Jan, Bitte keine vollständigen Zitate der vorhergehenden Nachricht - Danke!]
Beschreibung: |
|
Download |
Dateiname: |
KF.zip |
Dateigröße: |
1.07 MB |
Heruntergeladen: |
409 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 16.10.2017, 21:34
Titel:
|
|
Hallo,
ich habe mir mal den "diagnostic report" angesehen. Da wird C interessanterweise als 2x1 aufgeführt, obwohl es von außen scheinbar als 1x2 reinkommt. Als Dimension wird auch 2 angegeben, nicht etwa 1x2.
Wenn du im Constant-Block den Haken bei "Interpret vector parameters as 1-D" entfernst, wird ein Zeilenvektor daraus.
Vielleicht bringt dich das ja weiter.
Falls nicht, bitte noch angeben, wie zAdd und zAdd19 (und ggf. weitere) definiert werden müssen, damit das Modell lauffähig ist.
Grüße,
Harald
|
|
|
Heber |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 64
|
|
|
|
Anmeldedatum: 01.02.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013a
|
|
|
|
|
|
Verfasst am: 20.10.2017, 16:03
Titel:
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 22.10.2017, 12:40
Titel:
|
|
Hallo Heber,
Bitte füge nicht die gesammte vorhergehende Nachricht als Zitat ein, denn das halbiert nur die Informationsdichte des Threads. Danke!
Gruß, Jan
|
|
|
Heber |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 64
|
|
|
|
Anmeldedatum: 01.02.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2013a
|
|
|
|
|
|
Verfasst am: 24.10.2017, 09:38
Titel:
|
|
Der Verzicht auf derartige Hinweise, würde ebenfalls einen Beitrag leisten...
|
|
|
|
|
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 - 2024
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.
|
|