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

embedded Matlab code - Expected a scalar (if - Bedingung)

 

steffen1187
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 19.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2012, 08:32     Titel: embedded Matlab code - Expected a scalar (if - Bedingung)
  Antworten mit Zitat      
Guten Morgen zusammen

ich habe ein kleines Problem. Ich versuche folgendes zu erreichen (es handelt sich zunächst um ein vereinfachtes Beispiel): Ich habe zwei Werte, die sich zunächst unterscheiden. Über einen embedded Matlab - Function mit folgendem Code:

Code:
function Faktor = BerechnungFaktor(Delta_M, Faktor_alt)
%#codegen
persistent Faktor_ber
if isempty(Faktor_ber)
    Faktor_ber = 1
end

if abs(Delta_M) >=100
    summand = 0.1
elseif abs(Delta_M) >=10
    summand = 0.01
elseif abs(Delta_M) >=2
    summand = 0.001
else
    summand = 0.0001
end

if Delta_M > 0
    Faktor_ber = Faktor_alt+summand;
elseif Delta_M < 0
    Faktor_ber = Faktor_alt-summand;
else
    Faktor_ber = 1
end

Faktor = Faktor_ber
 


soll auf Basis der Differenz dieser Werte ein Faktor berechnet werden, der mit einem der Werte multipliziert wird, sodass diese sich nach und nach angleichen bis sie möglichst identisch sind. Das Simulink Modell ist in screen1.jpg (Anhang) zu sehen. Dieses vereinfachte Modell funktioniert auch genau so wie es soll.


In meinem ausführlicheren Simulink Modell (screen2.jpg, anhang) werden zwei Soll - Werte vorgegeben, die über verschiedene Kennfelder umgerechnet werden und aus denen sich so eine Summe ergibt, die von der "richtigen" Summe abweicht. Dies lässt sich in gegebenem Fall nicht vermeiden, tut für mein Problem auch nichts zur Sache. Der embedded code ist identisch zum vereinfachten Beispiel. Beim Ausführen wird folgende Fehlermeldung ausgegeben:

"Expected a scalar. Non-scalars are not supported in IF or WHILE statements, or with logical operators. Instead, use ALL to convert matrix logicals to their scalar equivalents.

Function 'Berechnung Faktor' (#99.138.156), line 8, column 4:
"abs(Delta_M) >=100"
Launch diagnostic report."

Ich habe mich in der Hilfe und auf google informiert und versucht das Problem zu beheben, komme jedoch nicht wirklich auf einen grünen Zweig. Ich hoffe jemand von euch kann mir helfen!

Grüße und Dankeschön
STeffen

screen2.JPG
 Beschreibung:

Download
 Dateiname:  screen2.JPG
 Dateigröße:  47.93 KB
 Heruntergeladen:  785 mal
screen1.JPG
 Beschreibung:

Download
 Dateiname:  screen1.JPG
 Dateigröße:  23.36 KB
 Heruntergeladen:  815 mal
Private Nachricht senden Benutzer-Profile anzeigen


cybbi
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 84
Anmeldedatum: 23.08.11
Wohnort: ---
Version: Alle
     Beitrag Verfasst am: 22.05.2012, 15:07     Titel:
  Antworten mit Zitat      
Ich hab jetzt dein komplettes Modell und den weiteren Quellcode natürlich nicht da. Aber so wie ich das sehe, scheint dein Subsystem "Subsystem" einen Vektor / eine Matrix auszugeben (M_Ges_Ist). Kann das sein? Falls du dir da nicht sicher bist, klick mal auf "Format" --> "Port/Signal Displays" --> "Wide Nonscalar Lines".
Wenn die Linie dann nach erneutem Diagrammupdate fett erscheint, ist das tatsächlich ein Vektor / eine Matrix. Da hat dann natürlich das if-else statement ein Problem damit...
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.