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

Variabel im Matlab-Fcn Block - keine Größenänderung mögl

 

nochmotivierteranfänger
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 07.05.13
Wohnort: Kaiserslautern
Version: ---
     Beitrag Verfasst am: 09.06.2013, 23:23     Titel: Variabel im Matlab-Fcn Block - keine Größenänderung mögl
  Antworten mit Zitat      
Hallo,

in einem Matlab-functionblock habe ich eine Matrix, die im Laufe der Simulation Zeilen dazugewinnen soll.
ungefähr so:
Code:
A=[A; neu];
....(A & neu beide 1x2 )
folgende Fehlermeldung:
Size mismatch (size [1 x 2] ~= size [2 x 2]).
The size to the left is the size of the left-hand side of the assignment.

zuvor habe ich dann auch noch etwas in der Art
Code:
A=B(1:a,:);

a wird vorher durch eine Schleife berechnet; (A soll die ersten Zeilen von B bis zeile a enthalten)
Fehlermeldung:
Dimension 1 is fixed on the left-hand side but varies on the right ([1 x 2] ~= [: ? x 2]).

Da das in Matlab funktioniert, nur nicht in Simulink, glaube ich jetzt, dass Simulink selbt in fcn Blöcken nicht mit Variablen klarkommt, die ihre Größe ändern. Ist das so?
Diese Variablen sind noch nicht einmal Signale die aus dem Block in die Simulation laufen, daher dachte ich, dass es so funktionieren müsste, aber was nun..?
Private Nachricht senden Benutzer-Profile anzeigen


cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 14.06.2013, 15:21     Titel:
  Antworten mit Zitat      
In MATLAB Function Blöcken ist es so, dass diese in C-Code übersetzt werden. Es ist Natur eines (normalen) C-Codes, dass dieser relativ unflexibel auf dynamische Speichergrößen ist. Abhilfe gibts im Prinzip wie folgt:
- Speicher vorallokieren durch einen Befehl, der eine leere Matrix gleich am Anfang mit der schon richtigen Größe erzeugt: >> A = zeros(2,2);
- Schau dir in der Doku mal die Einträge zu coder.varsize an. Das hilft auch häufig, macht aber deine Simulation langsamer.
Private Nachricht senden Benutzer-Profile anzeigen
 
nochmotivierteranfänger
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 07.05.13
Wohnort: Kaiserslautern
Version: ---
     Beitrag Verfasst am: 17.06.2013, 07:39     Titel:
  Antworten mit Zitat      
Dankeschön : )
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.