Verfasst am: 11.09.2020, 19:40
Titel: Matlab Live Scribt
Hallo zusammen,
mir wurde der Typ gegeben den Output meines Interfaces (meiner Gui) per Live Function auszugeben. Ich habe meine Function (Output_Generator) auch ganz schön programmiert und fertig gemacht und sie einfach in meine GUI eingefügt. Aber leider habe ich folgende Probleme:
1. Muss ich, wie bei einer normalen Function, auch die Input Argumente anhängen? woher soll die Function sonst die "Variabeln" bekommen
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
JP2020
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 11.09.2020, 20:52
Titel:
Danke Harald für die schnelle Antwort!
zum ersten Teil:
aktuell sieht meine Function in der Gui wie folgt aus
ich weiß nicht, ob es nur der Fehler hier ist, aber im Namen fehlt ein r:
Output_generator
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
JP2020
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.09.2020, 17:10
Titel:
danke Harald,
du hattest absolut Recht mit dem fehlendem "R" Ein dummer Fehler, danke!
ich habe jetzt vieles probiert und auch schon vieles gegoogelt (sowohl im Forum als auch in der matlab doc oder ähnlichem).
Ich habe ein Live Script mit meinem Report fertig gemacht. Wenn ich die Gui mittels debugger stoppe und dann das Live-Script laufen lasse funktioniert alles. Wenn ich aber das Live-Script in der Gui aufrufe und mit dem Befehl "publish" versuche in pdf zu speichern kommt immer ein Fehler, dass die Variabeln fehlen.
Ich brauche ca. 20 bis 30 Variablen für den Report. Mein Plan war es, die Variabeln mittels "codeToEvaluate" dem Livescript zur Verfügung zustellen. Dafür habe ich ein Struct mit allen Variablen erstellt, jedoch kommt immer eine Fehlermeldung, das es kein "string scalar" ist.
Da die doc für publish nur foldenges zum Thema "codeToEvaluate" angibt:
Code:
'codeToEvaluate' — Additional code to run
character vector
Additional code to run during publishing, specified as a character vector. Use this option to run code that is not included in the MATLAB file. For example, you can set the value of an input argument for a function being published.
If this option is unspecified, MATLAB only runs the code in the MATLAB file you are publishing.
Falls du bei publish bleiben willst: wortreiche Beschreibungen sind extrem schwierig nachzuvollziehen.
CodeToEvaluate muss Code (z.B. ein Aufruf einer Funktion) sein, kein Struct. Ob das nun nur ungünstig ausgedrückt war oder schlicht falsch verstanden, kann ich nicht sagen.
Ein reproduzierbares Minimalbeispiel ist deutlich hilfreicher.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
JP2020
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.09.2020, 20:41
Titel:
danke für die schnelle Antwort Harald.
Du hattest mir den Link ja schon einmal mitgeschickt und da habe ich mich damit auch schon auseinander gesetzt, jedoch fand ich keine Lösung den Code nicht mit anzeigen zu lassen. Aufgrund dessen habe ich auf publish gewechselt.
es sieht wie folgt aus:
ich habe meine GuI in der die Schrittlängen und Zeiten von importierten Datenmaterial berechnet und angezeigt werden. So sind danach die Variabeln in Form von structs wie points (1x1 struct, 40 fields), metadat (1x1 struct, 4 fields) .... und ca. 9 weitere structs global als app.points, app.metadat ... abgespeichert und sollen im LiveScript in Tabellen aufgeführt werden, sobald der "Safe" Button gedrückt wird.
Code:
% get stored data
points = app.points_1;
metadat = app.metadat_1;
segc = app.segc_1;
segm = app.segm_1;
CoM = app.CoM_1;
...
% make Output Sheet
publish('Output_generator.mlx','showCode',false,'format','pdf','codeToEvaluate',app);
CodeToEvaluate muss Code (z.B. ein Aufruf einer Funktion) sein, kein Struct.
und
Zitat:
Ein reproduzierbares Minimalbeispiel ist deutlich hilfreicher.
... mit Betonung auf reproduzierbar.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
JP2020
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.09.2020, 22:08
Titel:
tut mir leid Harald, ich hatte reproduzierbar im Sinne von nachvielziehbar aufgenommen..
ich habe dir im Anhand ein m.File und ein mlx.File getan. Das eine File soll meine GUI darstellen und das andere mein Live Script (natürlich aufs einfachste runtergebrochen...)
Ich hoffe, das ist jetzt für dich Verständlicher und Nachvollziehbar und das ist das, was du haben wolltest.
Ich habe auch versucht deinen Hinweis mit
Code:
CodeToEvaluate muss Code (z.B. ein Aufruf einer Funktion) sein, kein Struct.
umzusetzen. Jedoch verstehe ich nicht ganz (liegt aber wahrscheinlich an meinen verminderten Programmierkenntnissen) inwiefern ich eine Funktion da dranhängen soll und wie das ganze aussehen soll. Habt es jetzt einfach mal nach Bauchgefühl gemacht. Folgende Fehlermeldung bekomme ich dann:
du warst fast am Ziel ;)
Hauptprobleme:
* die lokale Funktion ist für publish nicht sichtbar, also entweder eine separate Funktion oder ein Function Handle darauf generieren.
* die Funktion sollte das Live Script auch aufrufen.
Insgesamt und mit kommentierten Änderungen:
Code:
%% Ergebnisse visualisieren
f = @daten_auslesen; % Function Handle, wird in der nächsten Zeile verwendet
publish('test_publish_livescript','showCode',false,'format','pdf','codeToEvaluate','f(app)'); % Function Handle in codeToEvaluate
function daten_auslesen(app)
v_ms = app.parameter.v_ms; % falsches Feld
Alter = app.metadaten.Alter;
Geschlecht = app.metadaten.Geschlecht;
Masse = app.metadaten.Masse;
Groesse = app.metadaten.Groesse;
test_publish_livescript % Aufruf des Live Scripts end
Das schöne an reproduzierbaren Beispielen: ich kann basteln, testen, basteln, testen, ... so gut, dass ich immer im Kopf weiß, wie MATLAB auf was reagieren wird, bin ich nämlich auch nicht. ;)
Vielleicht sehe ich irgendwas nicht, aber das sind doch die gleichen Ergebnisse wie mit
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Spiderman
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 05.10.2020, 14:38
Titel:
ich dachte, der Post würde mir helfen mein ähnliches Problem zu lösen, doch leider ist dem nicht so...
Ich habe das Testbeispiel von JP2020 ausprobiert mit der publish function und das hat auch Functioniert, jedoch ist der OUTPUT nicht so wie ich ihn gerne hätte. Gibt es eine Möglichkeit, das man auch die im LIVE Script vordesignten Texte und co. abgebildet bekommt?
Oder habt ihr sonst einen Tip, wie man einen schönen Report (in pdf) ohne den Report Generator (den hat unsere Uni nicht) erstellen kann?
Gibt es eine Möglichkeit, das man auch die im LIVE Script vordesignten Texte und co. abgebildet bekommt?
Das ist eigentlich die Default-Einstellung. Das bekommt man nur dann nicht, wenn man es über die Option
'showCode',false
explizit abwählt.
Der Thread ist ja nun etwas länger. Was genau hast du ausgeführt?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Spiderman
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 07.10.2020, 08:49
Titel:
Guten Morgen,
Ich habe ein Interface, wo Personal Felder mit Zaheln von vorherigen Tests von Porbanden ausfüllen müssen, damit das Programm anhand der eingegebenen Zahlen einen schnöne Auswertung erstellt.
In der Auswertung sollen sowohl Bilder als auch Tabellen und Sätze drin sein.
Hänge mal e beispiel an! in dem Beispiel ist auch ein Foto, so wie ich es gerne hätte. Nur will ich das test_1 = 4x2 table nicht da stehen haben, geht das irgendwie weg?
(PS. ja der mittelwert Links und der Gesamtmittelwert stimmen nicht)
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Spiderman
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.10.2020, 11:56
Titel:
danke Harald, das löst aufedenfall schonmal das eine Problem...
aber ich verzweifel an meinem eigentlichen problem und mein Cheff will morgen einen Zwischnbericht sehen...
da es es aber mit dieser publish function nicht funktioniert:
Code:
%% Daten abspeichern unter h
h.name = m.name;
h.bd = m.bd;
h.sports = m.sports;
h.d = d;
Problem ist, dass das System einerseits meine Variabeln (die im Appdesigner berechnet worden sind, im LiveScript nicht gefunden werden). Und dass der Code trotzdem noch sicherbar ist. Da der Bericht so an Kunden raus soll, darf kein Code mehr sichtbar sein...
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
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.