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

.vbo Datei per pushbutton in workspace laden

 

Loser
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 05.09.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 31.10.2015, 12:21     Titel: .vbo Datei per pushbutton in workspace laden
  Antworten mit Zitat      
Hallo,

ich versuche seit drei Tagen ein gui zu bauen und scheitere bisher immernoch einfach nur daran die Daten aus einer vbo Datei per Knopfdruck über gui in den workspace zu laden.

Ich habe mittlerweile einfach über import data ein script automatisch erzeugen lassen. Das m script funktioniert natürlich. Aber wenn ich versuche den Programmtext in gui unter den pushbutton zu kopieren, kommt beim ausprobieren keine Fehlermeldung aber die Daten landen auch nicht im workspace.

Kann mir da jemand helfen?

Code:
function varargout = Test4(varargin)
% TEST4 MATLAB code for Test4.fig
%      TEST4, by itself, creates a new TEST4 or raises the existing
%      singleton*.
%
%      H = TEST4 returns the handle to a new TEST4 or the handle to
%      the existing singleton*.
%
%      TEST4('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TEST4.M with the given input arguments.
%
%      TEST4('Property','Value',...) creates a new TEST4 or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before Test4_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to Test4_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 Test4

% Last Modified by GUIDE v2.5 31-Oct-2015 11:12:07

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Test4_OpeningFcn, ...
                   'gui_OutputFcn',  @Test4_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 Test4 is made visible.
function Test4_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 Test4 (see VARARGIN)

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

% Update handles structure
guidata(hObject, handles);

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


% --- Outputs from this function are returned to the command line.
function varargout = Test4_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 pushbutton1.
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)
filename = 'C:\Users\Documents\MATLAB\MATLAB_uni\HA_5\Uebung_5\Uebungen im Kurs\VBOX0007.vbo';
formatSpec = '%3s%10s%13s%13s%8s%7s%10s%8s%5s%s%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', '', 'WhiteSpace', '',  'ReturnOnError', false);
fclose(fileID);

Fil1 = dataArray{:, 1};
ecreated = dataArray{:, 2};
on0308112 = dataArray{:, 3};
VarName4 = dataArray{:, 4};
VarName5 = dataArray{:, 5};
VarName6 = dataArray{:, 6};
VarName7 = dataArray{:, 7};
VarName8 = dataArray{:, 8};
VarName9 = dataArray{:, 9};
VarName10 = dataArray{:, 10};

clearvars filename formatSpec fileID dataArray ans;
guidata(hObject, handles);


Test4.m
 Beschreibung:

Download
 Dateiname:  Test4.m
 Dateigröße:  3.59 KB
 Heruntergeladen:  380 mal
Test4.fig
 Beschreibung:

Download
 Dateiname:  Test4.fig
 Dateigröße:  1.79 KB
 Heruntergeladen:  354 mal
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: 31.10.2015, 19:08     Titel: Re: .vbo Datei per pushbutton in workspace laden
  Antworten mit Zitat      
Hallo Loser,

Du erzeugst die Variablen im lokalen Workspace der Funktion "pushbutton1_Callback". Jede Funktion hat ihren eigenen Workspace - das ist ja der Zweck der Funktionen im Vergleich zu Scripts.
In den Baseworkspace wandern die Variablen nicht automatisch, denn das würde ein heilloses Durcheinander produzieren. Schon das gezielte Erzeugen von Variablen in einem anderen Workspace ist so schwer nachzuvollziehen, dass ich grundsätzlich davon abrate, dies in Code zu tun, der produktiv eingesetzt wird. Aber viele andere Leute tun dies trotzdem.

Code:

assignin('base', 'Fil1', dataArray{:, 1});
assignin('base', 'ecreated', dataArray{:, 2});
...


Ich selbst würde die Daten im GUI speichern:
Code:
Data.Fil1 = dataArray{:, 1};
Data.ecreated = dataArray{:, 2};
...
FigHandle = ancestor(hObject, 'figure');  % Or a field of "handles" struct
set(FigHandle, 'UserData', Data);

Dann kann eine externe Funktion diese UserData vom GUI abfragen und nichts wird wild in fremden Workspaces geschrieben. Dann ist auch mit dem Debugger nachvollziehbar, welche Variable woher ihren aktuellen Wert hat.

Code:
clearvars filename formatSpec fileID dataArray ans;

Diese Zeile ist übrigens überflüssig. Es bringt nichts, lokal innerhalb der Funktion die Variablen zu löschen, weil sie beim Verlassen der Funktion sowieso gelöscht werden. Die Variable "ans" wird automatisch erstellt, wenn eine Funktion einen Output liefert, der keiner lokalen Variablen zugewisen wird. Die explizite Nutzung von "ans" oder auch sie zu löschen ist deshalb "verwirrend".

Gruß, Jan

Zuletzt bearbeitet von Jan S am 01.11.2015, 12:31, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

zudem bietet sich ein Blick auf setappdata / getappdata an. Das erlaubt es, Daten mit eigenem "Namen" z.B. in einer Figure zu hinterlegen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 05.09.15
Wohnort: ---
Version: R2013b
     Beitrag Verfasst am: 01.11.2015, 15:23     Titel:
  Antworten mit Zitat      
Danke für die Tipps! Das hat mir wirklich geholfen erstmal ein paar grundlegende Sachen zu verstehen.
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.