Verfasst am: 27.06.2012, 08:14
Titel: Diverse Anfängerprobleme
Hallo zusammen,
ich will ein ganz simples Auswertungsprogramm mit Hilfe eines GUI etwas benutzterfreundlicher machen.
Die GUI mit Programm sollen nachher mit Hilfe des Compilers auch zu einer .exe Datei kompeliert werden, falls das geht?
So nun zu den Fragen bezüglich der GUI:
1) Wie schaffe ich es, dass die Variable a oder irgendeine andere Variable die Werte aus dem Edit-Feld "Text1" übernimmt. Ich habe da extra einen Pushbutton gemacht, bekomme das aber irgendwie nicht hin.
2) Wenn ich die Datei auswähle würde ich die gewählte Datei auch gerne im Textfeld darüber anzeigen lassen. Leider weiß ich nicht, wie ich von der "externen" Funktion wieder auf den Workspace des GUI zugreife. Kann man die Funktion auch irgendwie direkt in das GUI schreiben?
Fehlermeldung hierzu:
Zitat:
"Reference to non-existent field 'text2'.
Error in pushbutton1_Callback (line 1
set(handles.text2,'string',num2str(Datei));
Error while evaluating uicontrol Callback"
3) Die Auswertung funktioniert im normalfall wunderbar, aber für die GUI musste ich das ein bisschen umschreiben - glaube ich zu mindest. Jetzt gibt es aber leider eine Fehlermeldung:
Zitat:
"Error using Annegret_gui
Too many input arguments.
Error while evaluating uicontrol Callback"
Kann ich eventuell auch die ursprüngliche Funktion benutzten?
4) Warum wird die Tabelle nicht angezeigt? Hier sollen im Endeffekt mal die Ergebnisse der Auswertung dargestellt werden; das ist allerdings nicht so wichtig und ich würde das erstmal aufschieben.
Hier der Code der Gui:
Code:
%Erstellen einer Gui
%Zunächst öffnen eines Fensters ohne Toolbar und Menu
f = figure('units', 'normalized','position', [.2 .2 .5 .5],'toolbar', 'none','menu', 'none','name', 'Auswertungsprogramm');
a=[];
%ERstellen des Start-Buttons und der Input-fenster:
% %Datei einlesen % % --- Executes on button press in pushbutton2sa. function pushbutton1_Callback(hObject, eventdata, handles) % % hObject handle to pushbutton1 (see GCBO) % % eventdata reserved - to be defined in a future version of MATLAB % % handles structure with handles and user data (see GUIDATA) [name,pfad] = uigetfile('*.xls', 'Bitte gewünschte xls-Datei auswählen');
if name==0 return,
end
% Übergabe der Matrix 'matrix' in den Workspace
Datei = strcat(num2str(pfad),num2str(name));
assignin('base','Datei',Datei);
handles.data1 = Datei;
guidata(hObject, handles);
set(handles.text2,'string',num2str(Datei));
end
l=(max(Weg)-Weg(1));
x=1;
while Weg(x)<l*0.2+Weg(1)
x=x+1;
end
y=max(size(Weg));
while Weg(y)>l*0.8+Weg(1)
y=y-1;
end
Mittelwert(i)=mean(Kraft(x:y));
Maximum(i)=max(Kraft(x:y));
Minimum(i)=min(Kraft(x:y));
disp(num2str(Probenarray(i)));
end
Ergebnisse=[Probenarray;Mittelwert;Maximum;Minimum];
disp(Ergebnisse);
xlswrite(strcat(['Auswertung_',num2str(Exceldatei)]),Ergebnisse','Ergebnisse');
end
function Mittelwert=Annegret_test
Probenarray=[];
whileisempty(Probenarray)
Probenarray=input('Eingabe der Probennummern als array (Beispiel:[1,2,3,4,5])');
end
Exceldatei=[];while isempty(Exceldatei), Exceldatei=input('Eingabe des Dateinamen:', 's');end
lMess=max(size(Probenarray));
Mittelwert=1:lMess;
Maximum=Mittelwert;Minimum=Maximum;
for i=1:lMess
clear Kraft Weg untitled raw a e Messung
Messung=strcat(['Probe ',num2str(Probenarray(i))]);
%% Import the data [~, ~, raw] = xlsread(Exceldatei,num2str(Messung));
raw = raw(4:end,1:2);
l=(max(Weg)-Weg(1));
x=1;
while Weg(x)<l*0.2+Weg(1)
x=x+1;
end
y=max(size(Weg));
while Weg(y)>l*0.8+Weg(1)
y=y-1;
end
Mittelwert(i)=mean(Kraft(x:y));
Maximum(i)=max(Kraft(x:y));
Minimum(i)=min(Kraft(x:y));
disp(num2str(Probenarray(i)));
end
Ergebnisse=[Probenarray;Mittelwert;Maximum;Minimum];
disp(Ergebnisse);
xlswrite(strcat(['Auswertung_',num2str(Exceldatei)]),Ergebnisse','Ergebnisse');
end
ich habe das ganze jetzt mit guide probiert. das ist auf jeden Fall wesentlich Anfänger-freundlicher und die meisten Sachen funktionieren jetzt auch.
Einzig das speichern stellt mich vor große Probleme
Ich habe einen extra Pushbutton dafür eingerichtet, dem der folgende code zugrunde liegt:
Code:
% --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) xlswrite(strcat([num2str(get(handles.edit2,'string')),'_Auswertung']),get(handles.uitable1,'Data'),'Ergebnisse');
jetzt speichert Matlab das excel-file natürlich unter C:\...dokumentenname.xls_Auswertung
gibt es einen einfachen Befehl, der die letzten 4 Zeichen von diesem String löscht: get(handles.edit2,'string')=>C:\...\dokumentenname.xls soll zu C:\...\dokumentenname werden
Super, jetzt funktioniert alles wichtige Vielen Dank!!!
Leider habe ich noch ein kleines Problem beim speichern. Die Messergebnisse speichert er ohne Probleme. Doch ich würde gerne noch eine Kopfzeile mit Schrift einfügen also in Zelle B1 soll Mittelwert stehen in C1 Maximum und in D1 Minimum.
wenn du das ganze als cell array und nicht als string übergibst sollte es funktionieren.
Gruß Lord nibbler
erste_gui
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.06.2012, 06:17
Titel:
Wunderbar. Jetzt klappt alles
VIELEN DANK euch beiden!!!!
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.