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

GUI Popupmenü füllen und Datei öffnen

 

Alexfromgalax
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 28.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2019, 09:22     Titel: GUI Popupmenü füllen und Datei öffnen
  Antworten mit Zitat      
Hallo,
ich habe leider ein Problem mit meinem Programm bei dem ich einfach nicht weiter komme. Das Programm soll .mat files laden und sie untersuchen.
Beim Öffnen soll der User den Pfad auswählen in dem sich meist mehrere .mat files befinden. Diese sollen in einem Popupmenü aufgelistet werden.

Der User hat nun die Möglichkeit eine der Files auszuwählen. Diese soll dann geladen werden und auf Fehler untersucht werden.

Die 'Pfadauswahl' und 'Popupmenü füllung' habe ich in der opening function untergebracht. Sie funktioniert und sieht so aus:

Code:
function Programm_GUI_OpeningFcn(hObject, eventdata, handles, varargin)

%user has to choose path
folder = uigetdir('','Wählen Sie einen Pfad aus');%  select path
fileList = dir(fullfile(folder, '*.mat')); %filter files with .mat ending in path
c= struct2cell(fileList);
g = c(1,:);
set(handles.popupmenu1, 'String', g)% set handles of popupmenu1 with chosen filenames

 



Allerdings kommt beim anklicken einer beliebigen Datei im popupmenü folgender Fehler:
Error using load.
XXXXXX1.mat' is not found in the current folder or on the MATLAB path, but exists in:\\\XXX\\\\Desktop....
Change the MATLAB current folder or add its folder to the MATLAB path.

Die Callback funktion sieht so aus:
Code:
function popupmenu1_Callback(hObject, eventdata, handles)

% load the chosen lap and save as  Data  
names = get(handles.popupmenu1,'String'); % get the contents in popupmenu
idx = get(handles.popupmenu1,'Value'); %  get the chosen value
LapChoice= names(idx);  % fill LapChoice with chosen Filename
Data = load(LapChoice{1}); %load chosen file

 

Wenn ich

Muss ich den PFad irgendwie übergeben an den Callback Funktion? Wenn ja, wie?

Vielen Dank schonmal für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen


Alexfromgalax
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 28.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2019, 15:00     Titel:
  Antworten mit Zitat      
Ich habe noch ein wenig herum probiert und nun habe ich es geschafft in der Callback function den Pfad und den gewünschten Titel der Datei mittels fullfile in einer Variable zusammenzufügen.
Mein neues Problem ist, dass ich die Datei trotz korrektem Pfad nicht öffnen kann.

Das ist die Opening function
Code:
%user has to choose path
folder = uigetdir('','Wählen Sie einen Pfad aus');% open ui to select path
fileList = dir(fullfile(folder, '*.mat')); %filter files with .mat ending in path
c= struct2cell(fileList);
g = c(1,:);
set(handles.popupmenu1, 'String', g)% set handles of popupmenu1 with chosen filenames
set(handles.popupmenu1, 'UserData', folder);


Das ist die Callback function
Code:
names = get(handles.popupmenu1,'String'); % get the contents in popupmenu
idx = get(handles.popupmenu1,'Value'); %  get the chosen value
LapChoice= names(idx);  % fill LapChoice with chosen Filename
Data = fullfile(folder, LapChoice)
S = load(Data)

 


Irgendwie stehe ich wohl im Wald und ich wäre froh, wenn mir einer helfen könnte die Datei zu öffnen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.06.2019, 15:51     Titel:
  Antworten mit Zitat      
Hallo Alexfromgalax,

Zitat:
Mein neues Problem ist, dass ich die Datei trotz korrektem Pfad nicht öffnen kann.

Was passiert denn stattdessen? Fehlermeldungen sind immer aufschlussreich. Ich rate mal, dass es daran liegt, dass dein LapChoice ein Cell String ist. Lösung:

Code:
folder = uigetdir('','Wählen Sie einen Pfad aus');
fileList = dir(fullfile(folder, '*.mat'));
g = {fileList.name};   % Einfacher
set(handles.popupmenu1, 'String', g)
set(handles.popupmenu1, 'UserData', folder);

function popupmenu1_callback(hObject, EventData, handles)
names = get(handles.popupmenu1, 'String'); % get the contents in popupmenu
idx = get(handles.popupmenu1, 'Value'); %  get the chosen value
LapChoice = names{idx};  % Geschweifte Klammern!
file = fullfile(folder, LapChoice)
S = load(file)

Mit den geschweiften Klammern bekommst du den Inhalt des Cell Strings anstatt eines {1x1} Cell Arrays.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Alexfromgalax
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 28.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2019, 16:19     Titel:
  Antworten mit Zitat      
Oh man ja das war wirklich das Problem. Jetzt läuft es. Vielen Dank für die schnelle Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 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.