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

Auslesen/Verwendung von Lookup-Tables ohne Simulink

 

pimpl
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2015, 12:38     Titel: Auslesen/Verwendung von Lookup-Tables ohne Simulink
  Antworten mit Zitat      
Guten Tag.

Ich habe mehrdimensionale Lookup-Tables mit Parameterwerten für mein Systemmodell.
Ich kann das Modell, bzw. die Lookup-Tables mithilfe von Simulink und den entsprechenden Funktions-Blöcken ('Lookup Table (n-D)') verwenden.

Nun möchte ich jedoch unabhängig von Simulink mein Modell innerhalb eines Matlab-Skriptes verwenden und benötige eine Matlab-Funktion, welche äquivalent zum 'Lookup Table'-Block in Simulink den zum Zustand passenden Parameterwert des Modells aus meiner Lookup-Table ausliest, bzw. interpoliert.

.. Nun ist es ja möglich selber solch eine Funktion zu schreiben, indem ich sequentiell entlang jeder Tabellendimension nach dem jeweils passenden Eintrag suche und interpoliere, jedoch vermute ich, dass meine Funktion nicht so effizient arbeiten wird, wie das Simulink-Äquivalent.

Der Ansatz für die selbstprogrammierte Matlabfunktion würde beispielsweise auf der Funktion "find()" beruhen..

Zu erwähnen ist, dass ich die Lookup-Table am liebsten NICHT äquidistant haben möchte, um den Speicherbedarf zu senken.
(momentan ist die LUT mithilfe der Funktion 'interp1()' äquidistant formatiert).


Also, gibt es eine entsprechende Matlab Funktion?

Ich bedanke mich für eure Hinweise und Anregungen schon im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2015, 20:06     Titel:
  Antworten mit Zitat      
Hallo,

das Simulink-Modell mit dem sim-Befehl auszuführen ist keine Option?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
pimpl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2015, 09:36     Titel:
  Antworten mit Zitat      
Alles ist eine Option, aber wie gesagt, ich möchte eine 'saubere', von Simulink unabhängige Lösung haben.
.. Es verwundert mich doch sehr, dass es offenbar keine Lookup-Table-Funktion in Matlab gibt.. Wieso hinterlegt Mathworks nicht einfach die im Simulink-Block arbeitende Routine in eine Funktion??
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.03.2015, 10:46     Titel:
  Antworten mit Zitat      
Hallo,

was genau spricht denn gegen interp1, interp2 etc.?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
pimpl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2015, 12:41     Titel:
  Antworten mit Zitat      
Vielleicht habe ich da was falsch verstanden, aber 'interpn()' ist geeignet um eine LUT zu erstellen und nicht diese auszulesen. Irre ich mich da?

.. Kannst du mir vielleicht ein konkretes Beispiel geben, wie ich mit dem Input-Vektor [a,b,c] die passenden Werte einer 3d-LUT mit interpoln auslese?

Recht herzlichen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.03.2015, 12:51     Titel:
  Antworten mit Zitat      
Hallo pimpl,

Zitat:
Vielleicht habe ich da was falsch verstanden, aber 'interpn()' ist geeignet um eine LUT zu erstellen und nicht diese auszulesen. Irre ich mich da?

INTERPN verwendet die Input-Daten als Lookup-Table um die Output Werte zu berechnen. Es wird also nicht zwischendurch eine Tabelle "erstellt", das wäre aus Matlab Sicht kein sinnvoller Schritt.

Hast Du schon die Dokumentation von INTERPN gelesen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
pimpl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 12.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2015, 13:43     Titel:
  Antworten mit Zitat      
Ich habe mir schon vor einiger Zeit die Hilfe zu der 'interpln'-Funktion durchgelesen und mit dieser Funktion aus meinem dünn besetzten Cell-Array eine äquidistante, dichtere LUT erstellt.
Nun möchte ich auf die Elemente, d.h. die bereits berechneten Werte dieser derart erstellten LUT zugreifen. ich möchte keine neuen/weiteren Werte mehr berechnen.
Idealerweise gibt mir die von mir gesuchte/gewünschte Funktion die LUT Indizes der Einträge zurück, die zu den Input-Werte passen, bzw. direkt die entsprechenden LUT-Einträge/-Werte.

.. Ich glaube wir deren aneinander vorbei, und hoffe, dass ich mich nun etwas deutlicher ausgedrückt habe.
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 - 2025 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.