Verfasst am: 31.12.2017, 05:44
Titel: m-File in GUI aufrufen
Hallo Zusammen,
durch ein GUI wird eine xls Datei via Button eingelesen und in einem Graphik dargesellt.
durch einen zweiten Button soll ein existierende File Master.m aufgerufen werden, die die Daten in der Excel datei verarbeitet.
functionvarargout = Filter(varargin) % FILTER MATLAB code for Filter.fig % FILTER, by itself, creates a new FILTER or raises the existing % singleton*.
%
% H = FILTER returns the handle to a new FILTER or the handle to % the existing singleton*.
%
% FILTER('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in FILTER.M with the given input arguments.
%
% FILTER('Property','Value',...) creates a new FILTER or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Filter_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Filter_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 Filter
% Last Modified by GUIDE v2.5 31-Dec-2017 03:41:37
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Filter_OpeningFcn, ...
'gui_OutputFcn', @Filter_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before Filter is made visible. function Filter_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 Filter (see VARARGIN)
% Choose default command line output for Filter
handles.output = hObject;
% UIWAIT makes Filter wait for user response (see UIRESUME) % uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = Filter_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 button press in DateiEinlesen. function DateiEinlesen_Callback(hObject, eventdata, handles) % hObject handle to DateiEinlesen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [Filename,Pathname]=uigetfile({'*.xlsx';'*.xls'},'File selector');
Fullpathname=strcat(Pathname,Filename);
xlsxr=xlsread(Fullpathname);
set(handles.Dateipfad,'String',Fullpathname);
axes(handles.Ploting);
plot(xlsxr);
% --- Executes on button press in filter. function filter_Callback(hObject, eventdata, handles) % hObject handle to filter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
%Fullpathname=strcat(Pathname,Filename);
Master
%%%%%% HIER WEISS ICH NICHT WIE ICH DIE Master.m RICHTIG EINBINDE%%%%
nochmals vielen Dank für deine Rückmeldung.
könntest du mir vllt mit ein paar Codezeilen unterstützen zb. bezüglich der Application Data.
ich tue mich ein bisschen schwer es zu verstehen, wie ich zb. der Inhalt des xlsxr nach dem Drucken auf den Button1 (also aus den folgenden CODEBEREICH) :
Code:
% --- Executes on button press in DateiEinlesen. function DateiEinlesen_Callback(hObject, eventdata, handles) % hObject handle to DateiEinlesen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [Filename,Pathname]=uigetfile({'*.xlsx';'*.xls'},'File selector');
Fullpathname=strcat(Pathname,Filename);
xlsxr=xlsread(Fullpathname);
set(handles.Dateipfad,'String',Fullpathname);
axes(handles.Ploting);
plot(xlsxr);
zu den Codebereich mit dem zweitem Button wo die verarbeitung stattfindet (also Button2):
Code:
% --- Executes on button press in filter. function filter_Callback(hObject, eventdata, handles) % hObject handle to filter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Dann musst du xlsxr als Eingabeargument an Master übergeben.
Wenn du neu mit dem Erstellen von Oberflächen anfängst, eine ausreichend aktuelle Version von MATLAB hast, nicht mit bestehenden GUIDE-Oberflächen arbeiten musst, würde ich wie gesagt generell App Designer empfehlen. Aus der Doku dazu:
Zitat:
This approach is appropriate for building most apps that do not require polar plots, subplots, or graphics interactions such as mouse and key-press customizations.
Verfasst am: 01.01.2018, 23:31
Titel: m-File in GUI aufrufen
Hallo Harald und Frohes neues Jahr,
leider hat diese Aufgabe eine gewisse Dringlichkeit. deswegen kann ich mich schlecht so schnell ins neue App Designer einarbeiten.
daher noch die Bitte ob du mir weiterhelfen kannst im Bezug auf die Übergabe der xlsrx ins Master.
bis jetzt habe ich die deine Zeilen so eingefügt:
fürs erste Button:
Code:
% --- Executes on button press in DateiEinlesen. function DateiEinlesen_Callback(hObject, eventdata, handles) % hObject handle to DateiEinlesen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [Filename,Pathname]=uigetfile({'*.xlsx';'*.xls'},'File selector');
Fullpathname=strcat(Pathname,Filename);
xlsxr=xlsread(Fullpathname);
set(handles.Dateipfad,'String',Fullpathname);
axes(handles.Ploting);
plot(xlsxr);
setappdata(handles.DateiEinlesen, 'mydata', xlsxr);
% --- Executes on button press in filter. function filter_Callback(hObject, eventdata, handles) % hObject handle to filter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
%Fullpathname=strcat(Pathname,Filename);
xlsxr = getappdata(handles.DateiEinlesen, 'mydata');
Master
B = deleteoutliers(xlsxr,0.05,1);
isn = isnan(B); %// determine which values are NaN
inum = find(~isn); %// indices of numbers
inan = find(isn); %// indices of NaNs
comp = bsxfun(@lt,inan.',inum); %'// for each (number,NaN): 1ifNaN precedes num
[~, upper] = max(comp); %// next number to each NaN(max finds *first* maximum)
B(isn) = (B(inum(upper))+B(inum(upper-1)))/2; %// fill with average
xlswrite(xlsxr,B,'Tabelle1','B1');
xlswrite('NewGeneratedData.xlsx',B,'Tabelle1')
Verfasst am: 02.01.2018, 23:18
Titel: m-File in GUI aufrufen
Hallo Harald,
ich danke dir vielmals für deine Hilfe.
es hat geklappt.
nur noch eine kleinigkeit.
ich plote die zwei Daten, jedoch wird die 1 legende immer von der zweiten überschrieben.
wie kann ich es lösen, dass es die zwei legende zu den zwei kurven angezeigt?
Code:
function DateiEinlesen_Callback(hObject, eventdata, handles) % hObject handle to DateiEinlesen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [Filename,Pathname]=uigetfile({'*.xlsx';'*.xls'},'File selector');
Fullpathname=strcat(Pathname,Filename);
xlsxr=xlsread(Fullpathname);
set(handles.Dateipfad,'String',Fullpathname);
axes(handles.Ploting);
plot(xlsxr,'b');
legend('ungefiltert','Location','northEastOutside');
hold on
setappdata(handles.DateiEinlesen, 'mydata', xlsxr);
% --- Executes on button press in filter. function filter_Callback(hObject, eventdata, handles) % hObject handle to filter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
%Fullpathname=strcat(Pathname,Filename);
xlsxr = getappdata(handles.DateiEinlesen, 'mydata');
Master(xlsxr) axes(handles.Ploting);
new=xlsread('D:\NewGeneratedData.xlsx');
plot(new,'r');
hold on;
legend('gefiltert','Location','southEastOutside');
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.