|
|
Matlab Function - fixed-size array als Output |
|
AirDevil81 |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.09.2019, 21:23
Titel: Matlab Function - fixed-size array als Output
|
|
|
|
|
Hallo zusammen,
ich benutze in meinem diskreten Simulink-Modell mit fixer Schrittweite einen Matlab-Function-Block, welcher auf Basis mehrerer skalarer Inputs ein fixes 4x25-Array als Ergebnis an den Ausgang liefert.
Obwohl ich die Array-Größe während der Simulationsschleifen nicht verändere, muss ich im Ports&Data Manager des Matlab Function Blocks das Output-Array als variable-size deklarieren um eine rote Fehlermeldung zu vermeiden.
"Data 'array' is inferred as a variable size matrix, while its properties in the Model Explorer specify its size as inherited or fixed. Please check the 'Variable Size' check box and specify the upper bounds in the size field."
Da ich das Array erst in einer Function innerhalb des Matlab Function Block generiere habe ich vermutet, dass der Fehler beim Kompilieren entsteht. Aber auch wenn ich das Array direkt zu Beginn im Matlab-Code mit fixer Größe definiere kommt die gleiche Fehlermeldung.
Daher meine Frage:
Wie kann man in einem Matlab-Function Block ein Array mit fixer Größe definieren?
Hintergrund:
Ich möchte das Output-Array im nächsten Rechenschritt wieder als Input in den Matlab-Function Block bringen (also quasi eine Memory-Function darstellen) und das scheint mit variablen Größen nicht zu funktionieren.
PS.:
Sollte es eine andere, viel einfachere Methode geben um ein Array in einer Matlab Function für die nächste Rechenschleife zwischenzuspeichern bin ich für Tipps dankbar.
Besten Dank und viele Grüße
Oliver
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 14.09.2019, 21:37
Titel:
|
|
Hallo,
versuch mal an den Anfang der MATLAB Function
zu schreiben.
Zitat: |
Sollte es eine andere, viel einfachere Methode geben um ein Array in einer Matlab Function für die nächste Rechenschleife zwischenzuspeichern bin ich für Tipps dankbar. |
Das geht mit persistent.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
AirDevil81 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.09.2019, 22:18
Titel:
|
|
Hallo Harald,
vielen Dank für diese kurze, zielführende Antwort! ...und entschuldige bitte meine verzögerte Rückmeldung - ich wollte es erst testen.
Der Hinweis bzgl. "Persistent" war goldrichtig und hat mir viel umständliche Arbeit erspart. Top!
Trotz der vorangestellten Array-Generierung mit zeros habe ich es nicht geschafft mein Array Matlab als fixed-size schmackhaft zu machen.
Aber dadurch, dass Persistent mein Problem gelöst hat, kann ich die Tatsache verkraften (auch wenn ich es nicht ganz verstehe).
Besten Dank und viele Grüße
Oliver
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 17.09.2019, 15:28
Titel:
|
|
Hallo,
Zitat: |
Trotz der vorangestellten Array-Generierung mit zeros habe ich es nicht geschafft mein Array Matlab als fixed-size schmackhaft zu machen. |
Wenn du ein konkretes Beispielmodell zur Verfügung stellen kannst, versuche ich gerne mein Glück.
Ansonsten hast du ja jetzt eine Lösung.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
AirDevil81 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.09.2019, 21:48
Titel:
|
|
Hallo Harald,
ich habe hier ein simples Simulink-Model (Fixed-step discrete 50ms) erzeugt um das Problem mit dem FixedSize-Array darzustellen.
Wenn ich die Array-Dimension im Code direkt festlege so wie dein zeros(4,25) Beispiel, dann funktioniert es. Wenn ich die Spaltenanzahl als Input verwende, dann kommt der Fehler.
Ich bin gespannt auf deine Analyse.
Viele Grüße
Oliver
Beschreibung: |
|
Download |
Dateiname: |
TestFixedArray.slx |
Dateigröße: |
21.72 KB |
Heruntergeladen: |
302 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.09.2019, 09:17
Titel:
|
|
Hallo,
was spricht denn dagegen, das als "Variable Size" festzulegen?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
AirDevil81 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.09.2019, 12:12
Titel:
|
|
Hallo Harald,
ich möchte das Ergebnis-Array aus dem ersten Block in einem zweiten Block als Input weiterverwenden (siehe Testmodell).
Matlab beschwert sich aber wenn der Input kein FixedSize ist.
Viele Grüße
Oliver
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.09.2019, 12:29
Titel:
|
|
Hallo,
genau, und die Meldung schlägt dir vor, das Array VariableSize zu machen. Bleibt die Frage:
Zitat: |
was spricht denn dagegen, das als "Variable Size" festzulegen? |
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
AirDevil81 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.09.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.09.2019, 21:33
Titel:
|
|
Die Tatsache, dass in dem Fall folgende Fehlermeldung kommt:
Unable to propagate the variable-size mode to the input of 'MATLAB Function1'. This input expects a fixed-size mode. The variable-size mode originates from 'TestFixedArray/MATLAB Function'. Examine the configurations of 'MATLAB Function1' for one of the following scenarios: 1. The block does not support variable-size signals 2. The block supports variable-size signals but needs to be configured for them. You can enable variable-sizing for 'MATLAB Function1' from the Ports and Data Manager dialog.
...und in der Function1 habe ich die Checkbox "Support Variable Size" aktiv und den Input als Variable Size definiert... die Fehlermeldung erscheint dennoch.
|
|
|
|
|
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.
|
|