|
|
Ergebnis aus Simulink über GUI an Excel-Datei übergeben |
|
saveprob |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.07.2013, 07:46
Titel: Ergebnis aus Simulink über GUI an Excel-Datei übergeben
|
|
Hallo,
Simulink gibt vier Kurven über die Variable simout an das Workspace (Time, data1, data2, data3, data4), die ich anschließend in meiner GUI folgendermaßen plotte:
Ich möchte dieses Ergebnis per xlswrite in eine entsprechende Excel-Datei abspeichern und habe bisher diese Ansatz probiert:
Es wird keine .xls-Datei erzeugt, sondern bloß folgende Fehlermeldung im Commandfenster ausgegeben:
Error using xlswrite (line 166)
Input data must be a numeric, cell, or logical array.
Das ist meine erste GUI und ich kann noch nicht die Auswirkungen jedes Befehls vollständig durchblicken, ein paar erklärende Worte würden mich freuen.
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 24.07.2013, 10:51
Titel: Re: Ergebnis aus Simulink über GUI an Excel-Datei übergebe
|
|
Hallo saveprob,
Das Problem betrifft nicht das GUI, sondern den Befehl XLSWRITE. Wie die Fehlermedlung besagt, scheint der Input kein Cell-Array zu sein:
Was enthält "handles.simout" genau? Das kannst Du herausfinden, wenn Du einen Breakpoint in diese Zeile setzt, das Programm startest bis es am Breakpoint anhält, und dann dies eingibst:
Gruß, Jan
|
|
|
saveprob |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.07.2013, 11:59
Titel:
|
|
|
|
|
Hallo Jan,
danke für die schnelle Antwort.
Wenn ich den Break;-Befehl eine Zeile nach dem xlswrite-Befehl mit simout setze, erhalte ich folgende Fehlermeldung:
Error: File: simulation.m Line: 799 Column: 1
A BREAK statement appeared outside of a loop. Use RETURN instead.
Mit return; kommt diese Fehlermeldung nicht, aber wenn ich dann class(handles.simout) und size(handles.simout) im Commandwindow eingebe, schreibt er folgendes:
Undefined variable "handles" or function "handles.simout".
Ist das hilfreich, oder wo soll ich diese Befehle eingeben?
Ich definiere diese variable simout in der function plotbutton (siehe erster Code ganz oben). Dabei zieht er simout aus dem base-workspace, wo eine Variable mit dem Ergebnis der Simulink-Simulation hinterlegt ist. Simout im Workspace enthält bloß vier Spalten: time, data1, data2, data3, data4 und wird scheinbar richtig ins GUI geladen, da das plotten wie gewünscht funktioniert. Auch der Import der Daten einer Excel-Datei ins GUI inklusive Plot funktioniert. Nur beim Export der Daten und der Erstellung einer Excel-Datei (2. Code oben) beschwert er sich, obwohl in der Variablen selbst abgesehen von der ersten Zeile alle Werte numerisch sind.
Liegt es an dieser Titelzeile mit Buchstaben? Wie gebe ich ihm vor ab Zeile 2 zu beginnen?
xlswrite(outname, handles.simout, 2, Inf); ???
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 24.07.2013, 12:10
Titel:
|
|
Zitat: |
Wenn ich den Break;-Befehl eine Zeile nach dem xlswrite-Befehl mit simout setze, |
break befehl und breakpoint für den debugger sind 2 unterschiedliche sachen.
_________________
richtig Fragen
|
|
|
saveplot |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.07.2013, 12:30
Titel:
|
|
Auch wenn ich...
breakpoint;
oder
breakpoint;
class(handles.simout);
size(handles.simout);
... in meiner .m-Datei direkt hinter den xlswrite-Befehl setze, ändert sich die Fehlermeldung nicht:
Muss vielleicht vorher die Vorgabe erfolgen, dass es sich in der workspace-variable simout um fünf Spalten handelt oder das in der Titelzeile Buchstaben enthalten sind?
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 24.07.2013, 12:33
Titel:
|
|
ok dir ist anscheinend die funktion des debuggers unbekannt.
das bild ist aus einem anderen thread von gestern aber den breakpoint setzt man da forne
grüße
p.s. der debugger ist ein sehr hilfreiches tool und am besten machst du dich damit kurz vertraut. er hilft einem in vielen sachen schnell weiter und ist in großen projekten unverzichtbar.
_________________
richtig Fragen
|
|
|
saveprob |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.07.2013, 13:10
Titel:
|
|
Problem gelöst.
Der "To Workspace"-Block in Simulink hat die Variable standardmäßig als Timeseries ans Workspace übergeben. Das war mir nicht bewusst. Wenn ich im Block auf Array umstelle, funktioniert es wie gewollt. Danke.
|
|
|
Verschoben: 24.07.2013, 14:03 Uhr von denny Von GUIs nach Simulink |
|
|
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 - 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.
|
|