daten (matrix mit messwerten)in ein gui importieren
blicknix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 31.01.2012, 17:40
Titel: daten (matrix mit messwerten)in ein gui importieren
Hallo,
ich habe hier ein Problem mit em ich nicht klarkomme. ich hab jetzt den ganzen tag mit recherchen verbracht aber in anderen beiträgen nichts gefunden was mir weitergeholfen hat.
ich hab es nicht wirklich drauf mit matlabprogrammierung und deswegen wird sich mein problem vielleicht etwas dumm anhören, ich lege mal los:
ein matlab skript von mir (Druckindizierung.m) verarbeitet mir messdaten, filtert usw., diese werden dann in eine 3-dim matrix geschrieben, diese hat
die dimensionen 7200x104x3, genannt habe ich sie T
ich über ein gui einzelne spalten der matrix adressieren und auswählen können um diese dann plotten zu können. aber ich weiß nicht wie ich diese matrix T so an dieses gui übergeben kann, dass ich dann darauf zugreifen kann. geht das überhaupt?
natürlich geht soetwas. Nur weiß ich gerade nicht wo dein 7200x104x3 Matrix ausgegeben wird. Liegt die im matlab Workspace oder wo? Prinzipiell kannst du die Matrix aus deinem Skript in die GUI übergeben indem du aus deinem Skript heraus die GUI z.B. startest, also:
Du kannst natürlich dein Berechnungsskript auch in der GUI implementieren indem du die Berechnung in einem Button Callback definierst oder aufrufst.
Du kannst die Matrix auch via Menu oder Pushbutton über load in deine GUI laden, die du bereits als File auf der Festplatte gespeichert hast...
Greetings
blicknix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.02.2012, 10:47
Titel:
ich habe das versucht, aber ich bin nicht so ganz weitergekommen.
vllt mach ich auch einen fehler im code (ich beschäftige mich mit matlab "learning by doing", daher sind bei mir grundlegende programmierkenntnisse leider nicht ausgeprägt vorhanden und deswegen werde ich höchstwahrscheinlich simple fehler machen... )
das ist die matrix T, die ich dem Gui übergeben will , dazu noch den vektor kwi der die dimension (7200x1) hat
mit diesem Befehl versuche ich dann T und kwi an das gui zu übergeben und dieses aufzurufen.
versuchs2_gui(T,kwi);
jetztz weiss ich nicht wie ich diese daten im code des versuchs2_gui aufrufen kann.
und wenn ich es geschafft hätte die daten ins gui zu laden, in welchen teil muss ich sie laden?
bisher habe ich eine methode gewählt die mich nur kurzfristig zum erfolg geführt hat:
ich habe die untermatrizen von T einfach abgespeichert in meinem skript, so dass diese dann extern auf der festplatte abgelegt werden:
Code:
save pzyl_1_glatt_korrigiert pzyl_1_glatt_korrigiert;
save pzyl_1_roh_korrigiert pzyl_1_roh_korrigiert;
save pzyl_1_klopfen pzyl_1_klopfen;
save q_zyl_1_einzel q_zyl_1_einzel;
save kwi kwi;
save filename_ohne_endung filename_ohne_endung;
dann, habe ich gui diese daten einfach weider in jede Funktion die ich "programmiert" habe reingeladen:
zum beispiel für den button um einen geglätteten zylinderdruckverlauf auszugeben:
Code:
function druckverlauf_glatt_button_Callback(hObject, eventdata, handles) % hObject handle to druckverlauf_glatt_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) load kwi;
Aufloesungsfaktor=0.1;
SliderWert2 = get(handles.slider,'Value');
SliderWert = round(SliderWert2);
load pzyl_1_glatt_korrigiert;
plot(kwi(1/Aufloesungsfaktor*320 : 1/Aufloesungsfaktor*430),pzyl_1_glatt_korrigiert(1/Aufloesungsfaktor*320 : 1/Aufloesungsfaktor*430,SliderWert),'Color',[001],'LineWidth',1);
xlabel('alpha [°KW]','FontSize',14,'FontWeight','bold');
ylabel('ZylinderdruckVerlauf [bar]','FontSize',14,'FontWeight','bold');
set(gca,'LineWidth',2,'FontSize',12,'FontWeight','bold');
axis([-40700100]);
da ich Dieses Programm jetzt so erweitern muss, so dass ich nicht weiter in der lage bin die externen daten zu erzeugen und dann ins gui zu laden, brauche ich eine methode die besser funktioniert...
konnte ich mich irgendwie verständlich machen?
(also wie komme ich an die ans gui übergebenen daten mit
versuchs2_gui(T, kwi);
ran?)
vielen dank für eure hilfe!!
edit by denny: bitte die Codeformatierung verwenden. Danke!
Setze doch mal einen Haltepunkt in der Opening fcn, dann kannste nachvollziehen, wie die Variablen aussehen...
Greetings
blicknix
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.02.2012, 12:38
Titel:
ja, das mit den grundlegenden fragestellungen stimmt schon, und ich verbringe auch stunden in der matlab help.... werde aber recht oft einfach erschlagen von den ergebnissen meiner suchanfragen und verliere mich dann im weiteren nachlesen von dingen die ich nicht verstehe....
wenn ich den Code so schreibe wie du mir empfiehlst, bekomme ich in der Console eine Fehlermeldung:
Code:
??? Index exceeds matrix dimensions.
Error in ==> versuchs3_gui>versuchs3_gui_OpeningFcn at 55
handles.T=varargin{1};
Error in ==> gui_mainfcn at 221 feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
Error in ==> versuchs3_gui at 42
gui_mainfcn(gui_State, varargin{:});
Ich danke dir für deine hilfe!
gibt es denn so eine art how-to, in dem die funktionen und syntax von grundlegenden gui-anwendungen für einsteiger erklärt werden?
wenn du das so machst wie ich es oben beschrieben habe, dann bekommst du ne Fehlermeldung, wenn du der GUI nix übergibst. Dann ist varargin empty. Das musst du entsprechend abfangen...
der gui meine daten übergebe und zumindes mal der vektor "kwi" auf jeden fall vorhanden ist und nicht nichts ist, versteh ich nicht weiso ich die fehlermeldung bekomme.....
ich glaube ich werde einfach die berechnung selbst in das gui per button integrieren, das scheint mir leichter...
wenn s nicht klappen sollte heule ich weiter rum, aber ich danke dir in jedem fall für deine hilfe!
ja das ist richtig dann bekommste auch ne Fehlermeldung. Wenn du 2 Variablen übergibst is varargin entsprechend length(varargin)=2. Wenn du eine Variable übergibst entsprechend 1. Da ich im obigen Beispiel 2 Parameter übergeben habe und die auch ohne zusätzliches abfragen einfach verwende ist es kein wunder, dass varargin{2} bei übergabe von nur einem Parameter nicht existiert und ein Fehler entsteht.
Setze doch einfach ein Haltepunkt in der Opening_FCN und schau dir varargin im Workspace an bzw. lies es in der Hilfe nach. Ist eigentlich ein Cell indem die übergebenen Parameter enthalten sind...
Greetings
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
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.