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

Gründe für Fehlermeldung in GUI

 

das_matlabtier
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2017, 14:31     Titel: Gründe für Fehlermeldung in GUI
  Antworten mit Zitat      
Hallo liebe Matlab-Freunde,

ich arbeite Momentan an der Erstellung einer GUI, in der Diagramme geplottet und bestimmte Punkte in aus den Diagrammen abgelesen und gespeichert werden.

Nun war ich gestern fast fertig und wollte sie heute zu Ende machen, allerdings bekomme ich beim Anklicken sämtlicher Elemente (z.B. eines popup-Menüs) die Fehlermeldung

[ Undefined function or variable 'StartEndeV1'.
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)StartEndeV1('popupmenu1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback ]

wobei SartEndeV1 der Name der GUI ist. Ich habe nur zwei pushbuttons hinzugefügt und nichts an dem Code von gestern geändert. Die Matlab-Version ist 2015b.

Aus Datenschutzgründen darf ich leider nicht direkt den Code veröffentlichen, aber ich werde ihn heute oder morgen abändern und hier posten.

Es würde mir sehr weiterhelfen, wenn jemand eine Idee hätte, wo der Fehler liegt.

Vielen Dank
ein verwirrter Gast, der fast sein komplettes Matlab-Wissen diesem Forum zu verdanken hat
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.431
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.07.2017, 20:31     Titel:
  Antworten mit Zitat      
Hallo,

wechselst du evtl. in einem der Callbacks das Verzeichnis?
Falls ja, keine gute Idee.

Ansonsten müsste ich eine GUI sehen, die die Meldung produziert, um was dazu sagen zu können.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
das_matlabtier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 09:57     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für die schnelle Antwort!

Ich lese Daten ein und benutze Funktionen, die nicht im selben Ordner wie die GUI liegen. Ist das keine gute Idee? Kann man das Problem beheben, in dem man alles in einen Ordner legt?

Ein Beispielcode sieht so aus:

Code:
function varargout = StartEnde(varargin)
% STARTENDE MATLAB code for StartEnde.fig
%      STARTENDE, by itself, creates a new STARTENDE or raises the existing
%      singleton*.
%
%      H = STARTENDE returns the handle to a new STARTENDE or the handle to
%      the existing singleton*.
%
%      STARTENDE('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in STARTENDE.M with the given input arguments.
%
%      STARTENDE('Property','Value',...) creates a new STARTENDE or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before StartEnde_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to StartEnde_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help StartEnde

% Last Modified by GUIDE v2.5 05-Jul-2017 10:31:24

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @StartEnde_OpeningFcn, ...
                   'gui_OutputFcn',  @StartEnde_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before StartEnde is made visible.
function StartEnde_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to StartEnde (see VARARGIN)

% Choose default command line output for StartEnde
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes StartEnde wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = StartEnde_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on selection change in TestsPopup.
function TestsPopup_Callback(hObject, eventdata, handles)
% hObject    handle to TestsPopup (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns p2TestsPopup contents as cell array
%        contents{get(hObject,'Value')} returns selected item from p2TestsPopup

auswahl = get(handles.hObject, 'Value');
strings = get(handles.hObject, 'String');
data.thisTest = strings{auswahl};
set(handles.hObject, 'UserData', data);

% --- Executes during object creation, after setting all properties.
function TestsPopup_CreateFcn(hObject, eventdata, handles)
% hObject    handle to TestsPopup (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in AuswahlButton.
function AuswahlButton_Callback(hObject, eventdata, handles)
% hObject    handle to AuswahlButton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
path_Datenbank='Desktop\Datenbank';
cd(path_Datenbank);
folder_name=uigetdir;
path_Daten=folder_name;
cd(path_Daten);
filename=uigetfile('.mat', 'Daten auswählen');
thisLager=filename(1:end-4);
thisStruct=open(filename);
anzahlTests=length(fields(thisStruct.(thisLager).rechner));
tests=fieldnames(thisStruct.(thisLager).rechner);
S.thisLager=thisLager;
S.filename=filename;
S.tests=tests;
S.thisStruct=thisStruct;
S.anzahlTests=anzahlTests;
set(handles.AuswahlButton, 'UserData', S);
set(handles.TestsPopup, 'String', tests);
 
% --- Executes during object creation, after setting all properties.
function AuswahlButton_CreateFcn(hObject, eventdata, handles)
% hObject    handle to AuswahlButton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called


% --- Executes on button press in plotbutton.
function plotbutton_Callback(hObject, eventdata, handles)
% hObject    handle to plotbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes1);
 cla;

%Struct-, Lager- und Testnamen definieren
 thisDaten_button=get(handles.AuswahlButton, 'UserData');
 thisLager=thisDaten_button.thisLager;
 thisStruct=thisDaten_button.thisStruct;
 thisDaten_popup=get(handles.TestsPopup, 'UserData'); %Ausgewählter Test wird in den nächsten Zeilen benötigt
 thisTest=thisDaten_popup.thisTest;
 
 %Pfad zur Toolbox
 path(path,'Desktop\Toolbox')%hier liegt die Funktion toolbox_wellendrehzahl
 
 %Daten einlesen
 thisZeit=thisStruct.(thisLager).Rechner.(thisTest).Zeit;
 thisDrehzahl=thisStruct.(thisLager).Rechner.(thisTest).Drehzahl;
 thisUebersetzung=thisStruct.(thisLager).Uebersetzung;
 thisWellendrehzahl=toolbox_wellendrehzahl(thisDrehzahl, thisUebersetzung);
 
  plot(thisZeit, thisWellendrehzahl);
  grid

% --- Executes during object creation, after setting all properties.
function plotbutton_CreateFcn(hObject, eventdata, handles)
% hObject    handle to plotbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
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: 05.07.2017, 15:03     Titel:
  Antworten mit Zitat      
Hallo das_matlabtier,

Der Ausruck "StartEndeV1" kommt im geposteten Code nicht vor, aber "StartEnde". Hast Du das GUI umbenannt? Liegt das FIG-File im gleichen Ordner wie das M-File? Wie heißt das M-File? Ist diese Ordner im Matlab path eingefügt?

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 15:25     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Antwort!
Das ist nur ein Beispielcode, bei dem die Fehlermeldung kommt, nicht die Ursprüngliche Datei, die StartEndeV1 heißt.
M-File und Fig-File liegen im selben Ordner und heißen beide StartEnde. Der Struct, der geladen wird, liegt in einem anderen Ordner.

An welcher Stelle soll der Matlab path eingefügt werden? Nachdem ich im "AuswahlButton" mit uigetdir und cd den Pfad geändert habe?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.431
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.07.2017, 19:30     Titel:
  Antworten mit Zitat      
Hallo,

wenn du das Verzeichnis wechselst ( cd ), findet die GUI sich selbst nicht mehr. Du solltest die notwendigen Verzeichnisse mit addpath zum Suchpfad hinzufügen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
das_matlabtier
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 20:13     Titel:
  Antworten mit Zitat      
Es hat funktioniert, nachdem ich alles in einen Ordner gelegt habe. Ich werde es morgen auch mit dem addpath machen.

Vielen Dank für eure Hilfe! Very Happy
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.