|
|
Auslesen/Verwendung von Lookup-Tables ohne Simulink |
|
pimpl |

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 12.03.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 12.03.2015, 12:38
Titel: Auslesen/Verwendung von Lookup-Tables ohne Simulink
|
 |
|
 |
|
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.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.03.2015, 20:06
Titel:
|
 |
Hallo,
das Simulink-Modell mit dem sim-Befehl auszuführen ist keine Option?
Grüße,
Harald
|
|
|
pimpl |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 12.03.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.03.2015, 09:36
Titel:
|
 |
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??
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.03.2015, 10:46
Titel:
|
 |
Hallo,
was genau spricht denn gegen interp1, interp2 etc.?
Grüße,
Harald
|
|
|
pimpl |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 12.03.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.03.2015, 12:41
Titel:
|
 |
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!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.03.2015, 12:51
Titel:
|
 |
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
|
|
|
pimpl |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 12.03.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.03.2015, 13:43
Titel:
|
 |
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.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|