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

Matlab Live Scribt

 

JP2020
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 18.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2020, 20:40     Titel: Matlab Live Scribt
  Antworten mit Zitat      
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

ich habe es aktuell so angegeben
Code:

Output_generator
Code:


würde es aber sonst so machen
Code:

Output_generator(points,metadat,segc,segm,CoM,freq,a,events_gait,gait_parameters,stability,CoM_step)



2. Man kann die Live Function ja per Menüleiste in pdf/ html oder so konvertieren. Gibt es dafür auch einen Befehl?
mit
Code:
publish('Output_generator.mlx','format','pdf') ('

kriege ich leider immer nur meinen Code ausgegeben, selbst wenn ich den Befehl noch mit
Code:
'evalCode'
erweitere

beste Grüße und herzlichen Dank
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.09.2020, 21:28     Titel:
  Antworten mit Zitat      
Hallo,

1.
Der Code ist zerschossen. Generell werden Live Funktionen aber genauso aufgerufen wie Funktionen im klassischen Editor.

2.
https://www.mathworks.com/matlabcen.....un-and-export-live-script

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JP2020
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 18.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2020, 21:52     Titel:
  Antworten mit Zitat      
Danke Harald für die schnelle Antwort!

zum ersten Teil:

aktuell sieht meine Function in der Gui wie folgt aus
Code:
Output_geneator
 


ich habe vorhin auch auch dies ausprobiert
Code:
Output_geneator(points,metadat,segc,segm,CoM,freq,a,events_gait,gait_parameters,stability,CoM_step)
 


dabei habe ich aber diese Fehlermeldung bekommen:

Code:
Undefined function 'Output_geneator' for input arguments of type 'struct'.

Error in MA_Tool/safeButtonPushed (line 712)
                Output_geneator(points,metadat,segc,segm,CoM,freq,a,events_gait,gait_parameters,stability,CoM_step);
Error using matlab.ui.control.internal.controller.ComponentController/executeUserCallback (line 382)
Error while evaluating Button PrivateButtonPushedFcn.


für den zweiten Teil der Frage, herzlichen Dank, dass ich genau das, was ich gesucht habe!

Ps. ich habe das Livescript mal in den Anhang geworfen, vielleicht ist ja auch dort der Fehler, dass ich nicht darauf zugreifen kann...

Output_generator.mlx
 Beschreibung:

Download
 Dateiname:  Output_generator.mlx
 Dateigröße:  4.33 KB
 Heruntergeladen:  288 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JP2020
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 18.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2020, 18:10     Titel:
  Antworten mit Zitat      
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.


wende ich mich an euch und wollte mal hören, ob mir einer helfen kann!

Ich hoffe, ihr könnt mein Problem verstehen! Ich komme einfach nicht weiter...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.09.2020, 19:23     Titel:
  Antworten mit Zitat      
Hallo,

publish ist primär für klassische Skripte (.m) gedacht. Für Live Skripte würde ich "Export to PDF" im Save - Menü verwenden. Wenn du das programmatisch ansteuern möchtest, siehe hier:
https://www.mathworks.com/matlabcen.....un-and-export-live-script

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JP2020
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 18.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2020, 21:41     Titel:
  Antworten mit Zitat      
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);
                       
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.09.2020, 21:57     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt:
Zitat:
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JP2020
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 18.03.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2020, 23:08     Titel:
  Antworten mit Zitat      
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:

Code:
test_publish
Error using evalin
Undefined function 'daten_auslesen' for input arguments of type 'struct'.


Beste Grüße und Herzlichen Dank!

test_publish.m
 Beschreibung:

Download
 Dateiname:  test_publish.m
 Dateigröße:  1.32 KB
 Heruntergeladen:  271 mal
test_publish_livescript.mlx
 Beschreibung:

Download
 Dateiname:  test_publish_livescript.mlx
 Dateigröße:  3.82 KB
 Heruntergeladen:  257 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.09.2020, 09:21     Titel:
  Antworten mit Zitat      
Hallo,

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
Code:
matlab.internal.liveeditor.executeAndSave('test_publish_livescript.mlx');
matlab.internal.liveeditor.openAndConvert('test_publish_livescript.mlx','report.pdf');

(ich habe es eben in R2020b ausprobiert)

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Spiderman

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2020, 15:38     Titel:
  Antworten mit Zitat      
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?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.10.2020, 21:49     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Spiderman

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2020, 09:49     Titel:
  Antworten mit Zitat      
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)

try and error.zip
 Beschreibung:

Download
 Dateiname:  try and error.zip
 Dateigröße:  35.6 KB
 Heruntergeladen:  215 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.10.2020, 17:17     Titel:
  Antworten mit Zitat      
Hallo,

verwende
Code:


statt
Code:


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Spiderman

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2020, 12:56     Titel:
  Antworten mit Zitat      
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;
       
         
             f = @daten_auslesen;
             
             publish('Handout.mlx','showCode',false,'format','pdf','codeToEvaluate','f(h)');
 
            function daten_auslesen(h)
                 name                = h.name;
                 bd                  = h.bd;
                 sports              = h.sports;
                 d                   = h.d;
                 
                 Handout % Aufruf des Live Scripts
             end

 


und ich immer diese Fehlermeldung bekomme

Code:

Error using evalin
Unrecognized function or variable 'h'.

            function daten_auslesen(h)
            ↑
Error: Function definition not supported in this context. Create functions in code file.
 


habe ich es mit der anderen Lösungsidee aus diesem Chat und dem Link probiert, ich musste den Code etwas anpassen aber dann lief es.

Code:

            import matlab.internal.liveeditor.LiveEditorUtilities
            [javaRichDocument, cleanupObj, executionTime] = LiveEditorUtilities.openAndExecute(which('Handout.mlx'));
            LiveEditorUtilities.saveas(javaRichDocument, 'report.pdf');  
 


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...


ich hoffe ich bin nicht einfach nur zu dumm...
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.