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

größtes/kleinstes Signal auswählen

 

tkrhiman
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.03.2013, 15:59     Titel: größtes/kleinstes Signal auswählen
  Antworten mit Zitat      
Hallo,

ich suche eine Möglichkeit aus mehreren Signalen in Simulink das größte auszuwählen. Wichtig hierbei ist jedoch nicht nur der Wert, sondern ich muss auch wissen, welches Signal das größte ist.

Wenn ein bestimmter Grenzwert überschritten wird, soll eine Matlabfunktion ausgelöst werden, an die der Signalname (oder ähnliches um das Signal zu identifizieren) des größten Signals übergeben wird.

Ich komme bei der Lösung des Problems nicht weiter und wäre dankbar für Hilfe.

Schönen Gruß
Simon
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 08.03.2013, 08:09     Titel:
  Antworten mit Zitat      
"nicht weiter" suggeriert is gibt schon was. Da gehört es zum guten Ton das bisher versuchte zu dokumentieren. Ich geben gleich mal ein paar Vorschläge.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 08.03.2013, 08:17     Titel:
  Antworten mit Zitat      
Also da der MinMax Block nicht eine Signalbezeichnung ausgibt reicht der nicht.

Mit "grösser" Operatoren und "If" und Statemachines rumzuhampeln ist aber komplizierte und nicht skalierbar. Wenn man weiss es sind nur 3 oder 4 Signale und es bleibt dabei, dann sollte es gehen.

Diese MATLAB Funktion bei Überschreiten eines Schwellwertes kann man einfach mittels eine Enabled/Triggered Subsystems auslösen. Falls die ganze Simulation dann vorbei sein soll ist es einfach. Einfach alle Signalwerte zu dem letzten Zeitpunkt per MATLAB Code vergleichen und auch den Signalnamen des grössten Signals zu erhalten.

Fpr den allgemeineen und komplizerten Fall: Vielleicht beides machen, den MinMax Block den höchsten Wert ausspucken lassen und dann dieses Ausgangssignal mit JEDEM Eingangssignal vergleichen (Differenz=0) und dadurch sieht man dann welchese Signal das grösste ist.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
tkrhiman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2013, 11:45     Titel:
  Antworten mit Zitat      
Erstmal vielen Dank für die Antwort.

Andreas Goser hat Folgendes geschrieben:
"nicht weiter" suggeriert is gibt schon was. Da gehört es zum guten Ton das bisher versuchte zu dokumentieren.


Ja ich hätte wohl etwas genauer beschreiben sollen was ich genau mache.

Ich mache mit Hilfe von Simulink Fehlerdiagnose in linearen Systemen.
Dazu verwende ich jeweils einen Beobachter für den fehlerfreien und einen für jeden Fehlerfall. Die Beobachter sind Subsysteme die ich mittels einem m.file und der add_block Funktion generiere. D.h. es ist vorher nicht sicher, wie viele Beobachter benötigt werden.
Die Ausgänge des Beobachters werden dann von den Ausgängen des linearen Systems abgezogen.
Ein Fehler ist dann aufgetreten, wenn die Abweichung eines "Fehler"beobachters kleiner als die des fehlerfreien Beobachters ist. Am wahrscheinlichsten ist dann der Fehler aufgetreten, bei dem der Ausgabewert am kleinsten ist.
Im Fehlerfall soll dann eine Matlabfunktion ausgelöst werden. Es wäre gut wenn die Simulation trotzdem weiterlaufen würde, allerdings wäre das wohl nicht unbedingt zwingend.

Ich hatte versucht mit dem MinMax-Operator zu arbeiten, aber wie du schreibst, ist dabei nicht ersichtlich woher das Maximum kommt.
Außerdem hatte ich überlegt, ob sowas mit einer S-Funktion zu lösen ist. Da ich damit aber bisher kaum gearbeitet habe, waren alle versuche, damit etwas zu realisieren schon im Ansatz gescheitert.

Ich werde das jetzt mal mit dem MinMax-Operator und mit jedem Signal vergleichen probieren.

Simon
Private Nachricht senden Benutzer-Profile anzeigen
 
tkrhiman
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.03.2013, 14:08     Titel:
  Antworten mit Zitat      
Als ich mir noch mal etwas in Richtung s-function angeschaut habe, ist mir aufgefallen, dass es auch noch den Simulinkblock MATLAB Function gibt. In diesem kann man einfache Matlabbefehle ausführen ohne mit s-functions hantieren zu müssen.

Der Matlabbefehl min kann im Gegensatz zum Simulinkblock auch den Index des kleinsten Wertes ausgeben. Also fasse ich alle Ausgangssignale zu einem Vektor zusammen gebe sie auf den Matlabfunktionsblock und lass mir den Index des kleinsten Wertes ausgeben.

Jetzt muss ich nur noch schauen, wie ich beim Wechsel des Wertes bestimmte Funktionen auslöse, aber das sollte hoffentlich nicht so schwer sein.
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.