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

Excelliste einlesen über Button

 

Lancer
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2016, 22:45     Titel: Excelliste einlesen über Button
  Antworten mit Zitat      
Hallo zusammen,

ich brauche eure Hilfe.

Wie kann ich Matlab eine Exceltabelle einlesen lassen über einen Button und wenn der Button nicht benutzt wird das er eine Standard Excelliste aus dem Standard Pfad nimmt für die Berechnung.

Desweiteren finde ich im Netz keine sinnvollen Seiten die Matlab näherbringen außer die tolle Taschenrechnerfunktion. Gibt es irgendwo eine Anlaufstelle mit allen Befehlen die man in der Matlab Programmierung benutzen kann und Beschriftung.

LG
Lancer
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.10.2016, 15:27     Titel:
  Antworten mit Zitat      
was hast du denn bis jetzt versucht? im fex giebt es gute beispiele zum gui schreiben.
befehle kann man auf der matlab seite nachschlagen oder in der matlab doc selber.
grüße
_________________

richtig Fragen
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: 24.10.2016, 10:18     Titel: Re: Excelliste einlesen über Button
  Antworten mit Zitat      
Hallo Lancer,

Zitat:
Wie kann ich Matlab eine Exceltabelle einlesen lassen über einen Button und wenn der Button nicht benutzt wird das er eine Standard Excelliste aus dem Standard Pfad nimmt für die Berechnung.

Die Frage ist zu allgemein um sinnvoll beantwortet werden zu können. Zum Import ist xlsread zuständig. Aber wie der "Standard Pfad" und der Button zu impelementierten ist, hängt ganz davon ab, was Du genau brauchst.

Zitat:
Gibt es irgendwo eine Anlaufstelle mit allen Befehlen die man in der Matlab Programmierung benutzen kann und Beschriftung.

Die Getting Startet Kapitel der Dokumentation und Matlabs "Onramp" (Google findet das) bringen einem die Grundlagen schnell näher. Da man kaum mal eben alle Matlab-Befehle anschauen kann, ist es hilfreich sich bei bestimmten Befehlen immer noch die "See also" Tipps anzuschauen, die auf ähnliche Befehle verweisen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2016, 04:41     Titel:
  Antworten mit Zitat      
Danke der Tipp mit onramp hat mir sehr geholfen.

So der User wird wenn ne Vorlage bekommen und diese dann einlesen.
Damit das ding überhaupt funktioniert hab ich eine Exceltabelle schon eingelesen und alle Werte abgespeichert in .MAT files.

1. File Monate.mat 67x1 double
2. File Uhrzeit.mat = variable nennt sich Zeit. Datetime

Der Code soll beim öffnen des Programmes mit load xxx.mat in den Workplace laden und dann will ich das es selbstständig für j= Januar spalte x bis y ausliest etc. leider kam ich da mit onramp nicht weiter.
Genauso wie er plotten soll X= Uhrzeit und Y=Der Monat der vorher vom User ausgewählt wurde.

Jede variable besitzt 67 Zellen.
Das wäre so das I tüpfelchen im code Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Lancer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2016, 00:10     Titel:
  Antworten mit Zitat      
Keiner ne Idee? Sad
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: 17.11.2016, 13:25     Titel:
  Antworten mit Zitat      
Hallo Lancer,
Zitat:
Der Code soll beim öffnen des Programmes mit load xxx.mat in den Workplace laden und dann will ich das es selbstständig für j= Januar spalte x bis y ausliest etc.

Darauf kann man kaum konkret antworten. Kannst Du das Problem in Form eine präzisen Frage formulieren? Oft hilft auch einen Code-Abschnitt zu posten.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2016, 22:40     Titel:
  Antworten mit Zitat      
Code:
% --- Executes just before thesiszwei is made visible.
function thesiszwei_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 thesiszwei (see VARARGIN)

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

% Update handles structure
guidata(hObject, handles);

%%% Setzt default Werte beim Starten des Programmes%%%
set (handles.Winkel,'String', num2str(90));
set (handles.Wechselrichter,'String', num2str(1));
set (handles.Flaeche,'String', num2str (50));
set (handles.weitererwirkungsgrad,'String',num2str (1));
load Monate.mat
load Uhrzeit.mat

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

    %Test Feste Variablen
j = 32.9;
f = 52.6;
mae = 105.7;
a = 143.6;
ma = 154.1;
jun = 155.4;
jul = 155.9;
au = 142.3;
s = 112.2;
o = 80.1;
n = 40.4;
d = 28.8;


für die Monate soll aus dem File Monate.mat in dem Matfile befinden sich die Variablen Januar-Dezember mit 67 Zeilen. Die Zeilen soll er alle zusammen addieren für jeweils j f mae etc.

Code:
if get (handles.Januar,'Value')==1
    H = j ;
    plot ('Zeit,Januar') etc.


Hier will ich das er in der Abfrage dann das H=J setzt(macht er auch sauber) und dazu soll er halt noch eine Ausgabe machen in einer Kurve.

Was nicht passiert da er sagt die Variablen Zeit und Januar seine nicht verfügbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Lancer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2016, 22:22     Titel:
  Antworten mit Zitat      
Ich würde das hier gerne noch einmal pushen und danach schließen Sad
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: 24.11.2016, 13:26     Titel:
  Antworten mit Zitat      
Hallo Lancer,
Zitat:
für die Monate soll aus dem File Monate.mat in dem Matfile befinden sich die Variablen Januar-Dezember mit 67 Zeilen. Die Zeilen soll er alle zusammen addieren für jeweils j f mae etc.

Huch? Ich verstehe die Sätze inhaltlich nicht. Kannst Du das nochmal in einfacher formulieren?

Zitat:
Code:
if get (handles.Januar,'Value')==1
    H = j ;
    plot ('Zeit,Januar') etc.

Ich kann nicht erraten, was dieser Code machen soll. Du möchtest den String 'Zeit,Januar' plotten?

Zitat:
... soll er halt noch eine Ausgabe machen in einer Kurve.

Das müsstest Du genauer erklären. Was soll in einer Kurve ausgegeben werden?

Zitat:
Was nicht passiert da er sagt die Variablen Zeit und Januar seine nicht verfügbar.

Poste den relevanten Code-Abschnitt und eine vollständige Kopie der Fehlermeldung. Das erleichtert bzw. ermöglich eine Hilfe.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2016, 20:05     Titel:
  Antworten mit Zitat      
Irgendwie ist da Text abhanden gekommen D:
Da ich gerade nicht am PC bin wo der Code ist versuch ich das mal so.

Also mein Problem ist ich habe diese Daten aus einer Exceltabelle über den Data Import reingeladen (als Script würde ich ja immer den Pfad angeben müssen wo er die Daten herbezieht. richtig?).
Diese Daten sind dann im Workspace gewesen bennant mit Januar Februar März April etc. und da sind Werte hinterlegt gewesen jeweils 67 Zeilen. Soweit so alles noch fein. Da konnte ich die noch auslesen/benutzen mein ich. Da ich aber diese Daten jedes Mal brauch hab ich im comand window mit dem befehl "save" gearbeitet und diese dann in ein MATFILE gepackt. Das selbe Thema bei den Uhrzeiten.
Jetzt existieren folgende Datein in Mathlab Monate.Mat Projekt.fig Projekt.m Uhrzeit.mat.
Jetzt will ich wenn ich das Programm starte in Matlab das er mir die beiden Matfile läd.
Code:

%%% Setzt default Werte beim Starten des Programmes%%%
set (handles.Winkel,'String', num2str(90));
set (handles.Wechselrichter,'String', num2str(1));
set (handles.Flaeche,'String', num2str (50));
set (handles.weitererwirkungsgrad,'String',num2str (1));
load Monate.mat
load Uhrzeit.mat

Wollte ich so lösen. Klappt aber nicht da er die Werte nicht wieder in den Workplace läd (oder muss er das gar nicht??? Von meiner Sicht müsste er das tun)
Damit ich hier (folgender Code) nicht mehr feste Werte habe sondern diese dann auch sich selbst berechnen wenn ich auf den Button Berechnen drücke.
Code:
   %Test Feste Variablen
j = 32.9;
f = 52.6;
mae = 105.7;
a = 143.6;
ma = 154.1;
jun = 155.4;
jul = 155.9;
au = 142.3;
s = 112.2;
o = 80.1;
n = 40.4;
d = 28.8;

Wenn ich auf Berechnen drücke kommt dann eine IF Abfrage auf die Monate
Code:
if get (handles.Januar,'Value')==1
    H = j ;
    plot ('Zeit,Januar') etc.

Da sollte er (ich weiß da steht nicht beschrieben in welches Feld er plottern soll nennt sich axes) dann den selbst errechneten Wert für J nehmen und dann im Feld axes eine Kurve anzeigen. Auf der X Achse die Zeit auf der Y Achse die Werte wie sie verlaufen.

Aber solange er ja nicht die Datei wieder in den Workplace läd glaub ich wird das in beiden Themen nichts Sad

LG
Lancer
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: 24.11.2016, 22:53     Titel:
  Antworten mit Zitat      
Hallo Lancer,

Zitat:
Code:
%%% Setzt default Werte beim Starten des Programmes%%%
set (handles.Winkel,'String', num2str(90));
set (handles.Wechselrichter,'String', num2str(1));
set (handles.Flaeche,'String', num2str (50));
set (handles.weitererwirkungsgrad,'String',num2str (1));
load Monate.mat
load Uhrzeit.mat

Wo steht dieser Code? load lädt die Inhalte schon in den Workspace, aber in welchen ist hier die Frage. Jede Funktion hat ja ihren eigenen Workspace. Wenn die Daten innerhalb des GUIs verfügbar sein sollen, ist dies besser:
Code:
handles.Monate = load('Monate.mat');
handles.Uhrzeit = load('Uhrzeit.mat');
guidata(handle.Figure, handles);  % Oder wie Dein Figure-Handle heißt
 


Zitat:
Wenn ich auf Berechnen drücke kommt dann eine IF Abfrage auf die Monate
Code:
if get (handles.Januar,'Value')==1
    H = j ;
    plot ('Zeit,Januar') etc.

Was ist denn "handles.Januar"? Und was soll "plot ('Zeit,Januar')" tun? Wie gesagt ist 'Zeit, Januar' ein String, also ein CHAR-Vector. Wie soll Matlab den denn plotten?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2016, 23:28     Titel:
  Antworten mit Zitat      
achja handles.Januar ist ein Radiobutton gibt für jeden Monat einen.
Der Code steht in der Opening Function von der Oberfläche.
Hmm okay... hmm
Private Nachricht senden Benutzer-Profile anzeigen
 
Lancer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2016, 22:11     Titel:
  Antworten mit Zitat      
Ich hab es geschafft das Matlab den Code selbst generiert.

Code:
function importfile(Monate,Uhrzeit)
%IMPORTFILE(FILETOREAD1)
%  Imports data from the specified file
%  FILETOREAD1:  file to read

%  Auto-generated by MATLAB on 27-Nov-2016 20:49:08

% Import the file
newData1 = load('-mat', 'Monate.mat');

% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1);
for i = 1:length(vars)
    assignin('base', vars{i}, newData1.(vars{i}));
end    
    % Import the file
newData2 = load('-mat', 'Uhrzeit.mat');

% Create new variables in the base workspace from those fields.
vars = fieldnames(newData2);
for i = 1:length(vars)
    assignin('base', vars{i}, newData2.(vars{i}));

end


Leider läd er das nicht beim starten des Programmes Sad Wenn das passiert dann ist alles gut Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Lancer
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 07.05.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2016, 23:28     Titel:
  Antworten mit Zitat      
Ok da hab ich jetzt die Lösung einfach run importfile.m

Jetzt stehe ich vor dem letzten großem Problem.

Die Daten welche in der Variable Januar gespeichert sind sollen für den Plot jeweils durch eine Formal laufen und dann am Schluss geplottet werden.
Hab mir überlegt die Werte durch eine Schleife berechnen zu lassen.
Da steig ich aber noch nicht hinter wie ich das Richtig löse.
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: 28.11.2016, 12:15     Titel:
  Antworten mit Zitat      
Hallo Lancer,

Das ferngesteuert Erzeugen von Variablen im Base-Workspace ist eine Programmier-Technik, die den Code schwer durchschaubar macht. Deshalb ist der code später schwer zu debuggen und noch schwerer zu erweitern. Man kann im CommandWindow nicht mehr kontrollieren, woher die Daten stammen.

Zitat:
Hab mir überlegt die Werte durch eine Schleife berechnen zu lassen.
Da steig ich aber noch nicht hinter wie ich das Richtig löse.

Darauf kann man nichts konkretes antworten. Probiere es einfach mal und öffne einen neuen Thread für eine neue Frage. Stelle die Frage dann so konkret wir möglich.

Gruß, Jan
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 - 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.