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

No continous states in m-function

 

Heber
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 01.02.17
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 16.03.2017, 15:04     Titel: No continous states in m-function
  Antworten mit Zitat      
Hallo,
das ist mein code
Code:
function y = calc(x)
y=0;
while x<-5
     y = -10;
end
while x>5
     y = 10
end
wihle (-5<x)&&(x<0)
     ....
     y=...
end
wihle (0<x)&&(x<5)
     ....
     y=...
end


Das ist mein wie ich finde sehr einfacher Code.

Das Ganze habe ich in eine m-function gepackt und an den Eingang ein Rauschen (Random Number).

Bei der Simulation bekomme ich folgende Fehlermeldungen:
Warning:The model 'Test1' does not have continuous states, hence Simulink is using the solver 'FixedStepDiscrete' instand of 'ode3'. You can disable this diagnostic by explicity specifing a discrete solver in the solver tab of the Configurations Parameters Diagnostics tab of the Configuration Parameters Dialog

sowie eine weitere (siehe beigefügtes Modell)

Ich habe also nun den Solver discrete (no continuous states) und eine variable Schrittweite benutzt. In diesem Fall dauert die Simulation ewig.

Wie kann ich die m-function sinnvoll in das Modell einbeziehen.

Es ist zunächst ein einfaches Testprogramm, um zu sehen, ob das richtige passiert. Als ich die Befehle im command window verwendet hatte, funktionierte es wie geplant.

Es ist im Grunde nur ein Fuzzy Regler, der aus dem Eingangssignal x eine Ausgangssignal y machen soll. Liegt x betragsmäßig außerhalb 5 soll eine 10 bzw -10 ausgegeben werden und innerhalb der Intervalle -5 bis 0 und 0 bis 5 eben die Gewichtete Stellgröße (Höhenformel) berechnen.


Ich hatte noch eine weitere Methode gesehen, mit "newfis" usw., aber da weiß ich nicht, wie man eine sinnvolle übergabe an die Funktion machen könnte.

Test1.slx
 Beschreibung:

Download
 Dateiname:  Test1.slx
 Dateigröße:  14.32 KB
 Heruntergeladen:  335 mal
Private Nachricht senden Benutzer-Profile anzeigen


Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 16.03.2017, 22:58     Titel: Re: No continous states in m-function
  Antworten mit Zitat      
Heber hat Folgendes geschrieben:

Code:
function y = calc(x)
y=0;
while x<-5
     y = -10;
end


Die Simulation dauert ewig, da du hier eine Dauerschleife hast, die while -Bedingung wird hier immer erfüllt, sofern x<-5 ist. Ersetz das while durch ein if , dann solltest du das bekommen, was du haben möchtest.
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.