|
Blackeagle |
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 06.08.2013, 14:50
Titel: Vektor Delay
|
|
Hallo!
Ich bin recht unerfahren mit Simulink und brauche daher eure geschätze Hilfe.
Ich habe einen Vektor, welcher aus einem Matlab-Function-Block kommt und möchte diesen gerne in einen Delay z^-1 geben.
Dies scheint aber nicht zu funktionieren. Da der Vektor nur fünf Elemente besitzt habe ich ihn nun in die einzelnen Komponenten gesplittet und auf fünf einzelne z^-1 gegeben. Ist natürlich recht aufwändig.
Gibt es eine Möglichkeit, den Vektor in einem Rutsch zu verzögern?
Vielen Dank schon mal für Tipps,
Grüße
|
|
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 06:39
Titel:
|
|
Wieso sollte der Delay Block nicht funktionieren? Der Block verzögert um ein Zeitschritt. Hast du den Eingang mit dem Ausgang vom Delay Block verglichen?
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 09:14
Titel:
|
|
Hi!
Was meinst du mit Vergleichen? Die Anordnung sieht folgerndermaßen aus: Aus einem Embedded-Matlab-Block kommt ein Vektor, geht auf einen Delay und danach sofort wieder in den selben Matlab-Block. Ich probiere die Konstellation noch einmal aus, dann kann ich genau sagen, welche Fehler ich bekomme.
Grüße!
EDIT: So, habe es jetzt noch mal ausprobiert und bekomme im Matlab-Block ein size mismatch:
Zitat: |
Size mismatch (size [5 x 1] ~= size [1 x 5]). |
Jetzt frage ich mich, wieso? Ich habe immer einen Zeilenvektor benutzt und transponiere nirgendwo. Oder macht das Delay aus dem Zeilenvektor einen Spaltenvektor?
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 12:23
Titel:
|
|
EDIT2: Ich glaube, das Problem liegt darin, dass Simulink glaubt, der Vektor, welcher ins Delay gegeben wird, sei eine Art Eingangssignalfolge und nicht ein Vektor, in dem jede einzelne Komponente verzögert werden soll.
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 12:30
Titel:
|
|
Zeig dein (Teil-)Modell wo man etwas sieht. Der Delay Block macht nichts außer einer Verzögerung. Wenn du den Delay Block aus der DSP Toolbox meinst, dann willst du vielleicht bei Input processing die option sample based
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 12:46
Titel:
|
|
Hi!
Habe beide Delays genutzt, also aus normaler und aus der DSP-Bibliothek. Bin jetzt soweit, dass beide wohl nur Spaltenvektoren können, also die, wessen Komponnten durch ; getrennt sind. Habe gerade mal alles transponiert und schon ging es. Da ich zuvor immer mit Zeilenvektoren gearbeitet habe, ist das nun zwar etwas umständlich, aber ok.
Im Anhang noch mal ein Ausschnitt. Es geht um das Delay unterhalb des großen Matlab-Blocks, an welchem auch die fünffach-Displays hängen.
Grüße!
Beschreibung: |
|
Download |
Dateiname: |
Clipboard01.png |
Dateigröße: |
21.98 KB |
Heruntergeladen: |
657 mal |
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 13:17
Titel:
|
|
Vielleicht ist es nicht mehr so wichtig aber ich glaub dem Delay ist wirklich egal ob es Zeilen oder Spalten Vektor ist. Es muss bei dir an etwas anderem gelegen haben.
Hab da mal Zeilen und Spalten Vektor verzögert und es macht kein unterschied.
Beschreibung: |
|
Download |
Dateiname: |
delay_test.png |
Dateigröße: |
12.37 KB |
Heruntergeladen: |
622 mal |
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 13:21
Titel:
|
|
Ok, sieht interessant aus. Bei mir war auch mehr das Problem, dass wenn ich den Spaltenvekor nach dem Delay wieder auf den ursprünglichen Matlabblock geführt habe, hat er mir innerhalb des Blocks den mismatch-Fehler ausgegeben.
Muss ich für ein runderes Verhalten tatsächlich noch mal debuggen.
Hast du an den Optionen im Delay irgendwas verändert? Also Frame-based oder ähnliches ausgewählt?
EDIT: Dieses [1x5] stand bei meinen Signalen nie dran. Vllt hat meine Matlab-Funktion irgendetwas transponiert, ohne dass ich es gemerkt habe.
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 13:23
Titel:
|
|
Nein (delay length auf 1, sample based und sample time auf 0.01 gesetzt)
Edit: Bei Format - > Port/Signal Display -> Signal Dimensions
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 13:42
Titel:
|
|
Ich habe im Ports and Data Manager meine Vektorein- und Ausgänge jetzt auf "5" gesetzt. Hätte ich da "[1x5]" eintragen müssen, um auf Zeilenvektoren umzustellen? Ich frage nach, weil ich es zwar ausprobieren könnte, aber dann wieder alles abändern müsste.
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 14:20
Titel:
|
|
Ja da kannst du 1,5 oder 5,1 schreiben. Die Größe würde ich aber in der Matlab function festlegen. Zu beginn einfach z.B.
schreiben und danach den Komponenten Werte zuweisen.
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 14:46
Titel:
|
|
Tja, ich kann leider nicht innerhalb des Matlabblocks einen Default zuweisen, da dieser dann die richtigen Werte bei jedem Durchlauf überschreibt und das ist unerwünscht. Das mit dem 5,1 bzw. 1,5 ist schon sehr hilfreich.
Vielen Dank dafür!
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2013, 15:10
Titel:
|
|
Ja bei dir müsstest du zeros(5,1) im Delay Block bei initial condition setzen, dann steht die Größe fest.
|
|
|
Blackeagle |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 20
|
|
|
|
Anmeldedatum: 21.01.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 07.08.2013, 15:25
Titel:
|
|
Ah, sehr gut. Alles klar, dann danke für deine Hilfe!
|
|
|
|
|
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.
|
|