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

Diverse Anfängerprobleme

 

erste_gui

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2012, 08:14     Titel: Diverse Anfängerprobleme
  Antworten mit Zitat      
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 1Cool
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:

text1 = uicontrol('style', 'edit', 'units', 'normalized', 'position', [.05 .85 .3 .04], 'string', '[1,2,3,4,5,6]');
p1 = uicontrol('style', 'pushbutton', 'units', 'normalized', 'position',[.1 .78 .2 .05] ,'callback', 'set(a,????, text1.string????)','string', 'Probennummern übernehmen');
text2 = uicontrol('style', 'text', 'units', 'normalized', 'position', [.05 .6 .3 .04],'string', 'C:\...');
p2 = uicontrol('style', 'pushbutton','units', 'normalized','position', [.1 .53 .2 .05],'callback', @pushbutton1_Callback,'string', 'Datei auswählen');
p3 = uicontrol('style', 'pushbutton','units', 'normalized','position', [.1 .3 .2 .1],'callback', @Annegret_gui, 'string','Start Auswertung');

t = uitable('position', [.1 .4 .4 .4],'Data',rand(3), 'ColumnName',{'Mittelwert','Minimum','Maximum'},'RowName',{'1','3','5'});


Der Code zum daten einlesen:
Code:
% %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


Die auswertungsfunktion fürs gui:
Code:
function Annegret_gui
% if isempty(Probenarray)
%    figure('units', 'normalized','position', [.3 .3 .2 .2],'toolbar', 'none','menu', 'none','name', 'Auswertungsprogramm');
%    uicontrol('style', 'text', 'units', 'normalized', 'position', [.1 .1 .1 .04],'string', 'Bitte Probennummern eingeben');
%    uicontrol('style', 'pushbutton','units', 'normalized','position', [.2 .1 .1 .1],'callback', @pushbutton1_Callback,'string', 'schließen');
% end
% if isempty(Datei)
%     disp('Bitte Datei auswählen');
%     return
% 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(Datei,num2str(Messung));
    raw = raw(4:end,1:2);

    %% Create output variable
    untitled = cell2mat(raw);

    %% Clear temporary variables
    clearvars raw;

    Weg=untitled(:,1);
    Kraft=untitled(:,2);

    z=1;
    while Weg(z)<5
        z=z+1;
    end

    Weg=Weg(z:end);
    Kraft=Kraft(z: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


Die ursprüngliche Auswertungsfunktion:
Code:
function Mittelwert=Annegret_test
Probenarray=[];
while isempty(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);

    %% Create output variable
    untitled = cell2mat(raw);

    %% Clear temporary variables
    clearvars raw;

    Weg=untitled(:,1);
    Kraft=untitled(:,2);

    z=1;
    while Weg(z)<5
        z=z+1;
    end

    Weg=Weg(z:end);
    Kraft=Kraft(z: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


Ich hoffe ihr könnt mir ein wenig weiterghelfen Smile


erste_gui

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2012, 08:25     Titel:
  Antworten mit Zitat      
Okay das uitable-problem habe ich jetzt selber schon gelöst. Da habe ich wohl einfach die unit-Angabe vergessen Surprised

so gehts jetzt:
Code:
t = uitable('units', 'normalized','position', [.4 .3 .4 .55], 'ColumnName',{'Mittelwert','Minimum','Maximum'},'RowName',{'1','3','5','6'});
 
erste_gui

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2012, 13:17     Titel:
  Antworten mit Zitat      
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
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.06.2012, 13:49     Titel:
  Antworten mit Zitat      
Hallo erste_gui,

Code:
S = 'C:\...\dokumentenname.xls';
S2 = S(1: end - 4);

% Oder wenn es allgemein um die File-Extension geht:
[P, F] = fileparts(S);
S2 = fullfile(P, F);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
erste_gui

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2012, 07:16     Titel:
  Antworten mit Zitat      
Super, jetzt funktioniert alles wichtige Smile 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.

Mein Ansatz ist der folgende:
Code:
mit=('Mittelwert');
xlswrite(strcat([test(1:end-4),'_Auswertung.xls']),mit,'Ergebnisse','B1');


bzw.

Code:
mit=['Mittelwert','Maximum','Minimum'];
xlswrite(strcat([test(1:end-4),'_Auswertung.xls']),mit,'Ergebnisse','B1');


Problem bei der Sache ist, dass jetzt jede Zelle in Excel nur mit einem Buchstaben belegt wird anstatt mit den gesamten Wörtern.
 
Lord_nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2012, 08:26     Titel:
  Antworten mit Zitat      
Hallo,

Code:

mit={'Mittelwert','Maximum','Minimum'};
xlswrite(strcat([test(1:end-4),'_Auswertung.xls']),mit,'Ergebnisse','B1');
 


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: ---
     Beitrag Verfasst am: 29.06.2012, 06:17     Titel:
  Antworten mit Zitat      
Wunderbar. Jetzt klappt alles Smile

VIELEN DANK euch beiden!!!!
 
Neues Thema eröffnen Neue Antwort erstellen



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