WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab Function - fixed-size array als Output

 

AirDevil81
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2019, 22:23     Titel: Matlab Function - fixed-size array als Output
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.09.2019, 22:37     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal an den Anfang der MATLAB Function
Code:
array = zeros(4,25);

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
AirDevil81
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2019, 23:18     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.09.2019, 16:28     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
AirDevil81
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2019, 22:48     Titel:
  Antworten mit Zitat      
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

TestFixedArray.slx
 Beschreibung:

Download
 Dateiname:  TestFixedArray.slx
 Dateigröße:  21.72 KB
 Heruntergeladen:  264 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.09.2019, 10:17     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
AirDevil81
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2019, 13:12     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.09.2019, 13:29     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
AirDevil81
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.09.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2019, 22:33     Titel:
  Antworten mit Zitat      
Very Happy

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. Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.