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

Einlesen der Werte von Excel

 

steinsfurt
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2015, 22:22     Titel: Einlesen der Werte von Excel
  Antworten mit Zitat      
Hallo zusammen,
bin in Sachen Matlab noch ein blutiger Anfänger und ich hoffe ihr könnt mir helfen. Ich will aus der Excel Tabelle die Werte auslesen und anschließend die Spalte 1 und 3 plotten. Aber mir wird ein Fehler angezeigt.

Kann einer von euch mir helfen?

Code:

clc, clear all

[filename,pfad]=uigetfile('*.xls','Bitte Datei auswählen');
[m,txt,raw]=xlsread(fullfile(pfad,filename));

plot(m(:,1),m(:,3),'r:')
 


Tabelle.xls
 Beschreibung:

Download
 Dateiname:  Tabelle.xls
 Dateigröße:  2.16 MB
 Heruntergeladen:  3084 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.04.2015, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

bitte die Fehlermeldung angeben.

Von welchem Sheet sollen denn Daten eingelesen werden?

Und wenn du schon mit clear anfängst, dann wenigstens das all weglassen. Das verhindert nämlich äußerst effektiv das Debuggen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2015, 22:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

er zeigt mir folgendes an:

Index exceeds matrix dimensions.

Error in Untitled3 (line 21)
plot(m(:,1),m(:,3),'r:')


Reicht schon, wenn er von Zeile 1 bis 25 einliest.

Hab auch die unteren Werte rausgelöscht, gleicher Fehler.
Private Nachricht senden Benutzer-Profile anzeigen
 
steinsfurt
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2015, 22:43     Titel:
  Antworten mit Zitat      
vom 2.Sheet bitte Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.04.2015, 22:46     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
vom 2.Sheet bitte

dann solltest du das im Befehl auch angeben.

Zitat:
Index exceeds matrix dimensions.

Error in Untitled3 (line 21)
plot(m(:,1),m(:,3),'r:')

Und welche Dimensionen hat m?

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2015, 22:54     Titel:
  Antworten mit Zitat      
Ich hab gehofft, dass du mir das sagen könntest. Very Happy


Ich will die Zahlen im Excel in m abspeichern und versuchen zu plotten. Wenn ich eine andere Excel Datei nehme funktioniert das.
Ist eventuell der datensatz zu lang? Bin gerade bissl ratlos?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.04.2015, 23:13     Titel:
  Antworten mit Zitat      
Hallo,

wenn du in den Workspace Browser schaust, sollten die Dimensionen von m angezeigt werden. Mit Doppelklick auf m kannst du dir m auch ansehen.

In der Datei scheint das Problem zu sein, dass die Zahlen als Text gespeichert wurden. Das wird in Excel auch durch die grünen Markierungen in der linken oberen Ecke der Zellen signalisiert.

Dies sorgt dafür, dass die Zahlen als Text behandelt werden und folglich in txt bzw. raw landen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2015, 23:23     Titel:
  Antworten mit Zitat      
hallo,
ja, dass habe ich mir auch irgendwie gedacht, sonst hätte das ja funktioniert.

Im Commond Window wird mir nur leere Klammer angezeigt für m.

Mit dem Befehl str2num sollte dies als Zahl umgewandelt werden. Nur frage ich mich, wie ich das am geschicktesten hinbekomme?
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 18.04.2015, 01:00     Titel:
  Antworten mit Zitat      
Hallo,

Eine Möglichkeit die Strings im cell txt in double umzuwandeln, ist es mit Schleifen durch das cell zu laufen und darin str2double (oder str2num) zu verwenden.

Wie man bestimmte Sheets und Bereiche einlesen kann, findet man in der Hilfe zur Funktion xlsread. Es bietet sich an, sich frühzeitig mit der Matlab-Hilfe bekannt zu machen, sie wird dir nicht nur zu Beginn deiner Matlab-Zeit eine treue Begleiterin sein Wink
Code:
[num,txt,raw]  = xlsread(filename,sheet,xlRange)


Code:
[filename, pfad] = uigetfile('*.xls','Bitte Datei auswählen');
[~ ,txt, ~] = xlsread(fullfile(pfad,filename), 'VR1-ADH1002-L1.dat', 'A1:H25');

[r, c] = size(txt);

values = zeros(size(txt));  % pre-allocate
for jj = 1:c
    for ii = 1:r
        values(ii, jj) = str2double(txt{ii, jj});
    end
end

plot(values(:,1), values(:,3),'r:')


Statt mit Schleife geht es vermutlich auch mit cellfun, arrayfun oä, Schleifen gehen mir aber leichter von der Hand.

Grüße,
Seban
_________________

Richtig fragen
Debugging
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: 19.04.2015, 13:39     Titel:
  Antworten mit Zitat      
Hallo,

Man kann die Schleifen weglassen:

Code:
[r, c] = size(txt);
S = sprintf('%s\n', txt{:});
values = sscanf(S, '%f', [r, c]);

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.