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

3.8 Installation_ brauche xlsread

 

markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 14.06.2014, 21:09     Titel:
  Antworten mit Zitat      
Versuch mal ein pkg unload io, pkg uninstall io und lade dir eine ältere Version herunter, z.b. 2.2.0

http://sourceforge.net/projects/oct.....irror=cznic&download=

pkg install io-2.2.0.tar.gz und versuche es dann noch mal.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 14.06.2014, 21:11     Titel:
  Antworten mit Zitat      
sbmiles21 hat Folgendes geschrieben:
ah ok,
ich habe das selbe mit einer neu angelegten excel datei gemacht. Da hat alles sauber funktioniert.
Code:

￵>> m
m =

   1   2   3
   4   5   6

>>


Dabei habe ich einfach 2x3 Zeile/Spalten in Excel eingegeben. Es scheint das meine Messdatei irgend ein Format den Fehler verursacht?
Der Inhalt meiner Excel-Datei sieht so aus:

Code:
date: 20140505   time: 083736   number of cycles: 74127   T_one: 56   T_two: 90.000      
 running state: running !    T1: -40   T2: -40   T3: -40   T4: -40      
*-*                  
24203   0   2724   0   0   0   2
21040   0   0   0   0   0   1
20706   0   0   0   0   0   1
20810   0   0   0   0   0   1
20790   0   0   0   0   0   1
20799   0   0   0   0   0   1
20804   0   0   2   0   0   1
20783   0   0   6   0   0   1


Es wäre aber schlecht, wenn ich etwas in der Excel ändern muss, da ich davon Millionen habe, welche ich dann händlich ändern müsste :/ Oder meinst du liegt der Fehler doch irgendwo anders?

Gruss


Ah, dann ist es ein Bug im io-package.
Wenn du mir die Excel Datei zukommen lassen könntest, kann ich mir das mal genauer ansehen.
markuman@gmail.com
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2014, 09:53     Titel:
  Antworten mit Zitat      
ok, habe ich. Meinst du man kann es beheben? Hab schonmal in die __OCT ... Dateien reingeschaut, aber ich verstehe da nur Bahnhof :/ ....

Ich denke das Problem liegt im header Bereich, das ich dort gemischte Datentypen habe? Wenn ich den Header entferne, liest er sauber die Daten in eine z.B 7x7 Matrix ein, das ist super !

Nur der Header fehlt halt dann :/
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 11:06     Titel:
  Antworten mit Zitat      
Jau, ersetze io-2.2.2/private/__OCT_xlsx2oct__.m mit http://octave.osuv.de/__OCT_xlsx2oct__.m

Code:

[numerisch,strings]=xlsread ('messdatei.xlsx' );
 


Funktioniert anschließend bei mir.

Ich werd das mal einreichen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman

Zuletzt bearbeitet von markuman am 15.06.2014, 12:19, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2014, 12:12     Titel:
  Antworten mit Zitat      
bohhh, geile Sache ! Es funktioniert ! *freu*

Ich danke dir 1000 mal !

Das heisst dieses Prob. wird beim nächsten io release, behoben sein? Also haben wir/du gleichzeitig was gutes für die Allg. getan? Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 12:22     Titel:
  Antworten mit Zitat      
Jepp Smile Sollte zumind.

Also Strings einlesen funktionierte auch vorher schon. Nur hatte deine Zelle "Status: wait ! " ein zusätzliches Attribut in der XML Datei, was dadurch nicht eingelesen wurde. Dadurch kam es dann zum "dimension missmatch/index out of bound".
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2014, 14:53     Titel:
  Antworten mit Zitat      
puhh ...echt geil wenn man sich da auskennt.

Vielleicht kannst du mir nochmal helfen?

Die Messdatei, die ich dir geschickt habe, habe ich "selber " hier erstellt, mit dieser klappt alles super.


Ich wusste nicht das es relevant ist, aber:
Meine Messdaten liegen im csv Format vor. Habe diese mit einem csv-xlxs converter in xlsx konvertiert. Wenn ich solch eine Datei aufrufe, kommt folgender Fehler :/

Code:
Detected XLS interfaces: error: xls2oct: worksheet number 1 > number of worksheets in file (0)
error: called from:
error:   C:\Octave\Octave-3.8.1\share\octave\packages\io-2.2.2\private\__OCT_xlsx2oct__.m at line 78,
 column 5
error:   C:\Octave\Octave-3.8.1\share\octave\packages\io-2.2.2\xls2oct.m at line 210, column 27
error:   C:\Octave\Octave-3.8.1\share\octave\packages\io-2.2.2\xlsread.m at line 214, column 25
error:   C:\Users\ben\Desktop\octave\A_Load_Files_CTC_XLSX.m at line 23, column 15
>>


Wie ich es verstehe, er erkennt das Worksheet nicht? Kannst du mir da nochmal helfen?

Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 15:01     Titel:
  Antworten mit Zitat      
Ist das die selbe .xlsx Datei die ich noch habe?
Was ist das genau für ein Konverter? Wo kommt da her?
Und warum liest du dann nicht direkt die csv Datei ein (wo kommt diese wiederum her)?
Im io package ist csv2cell drin, die könntest du versuchen. Wenn die fehlschlägt, versuche https://github.com/markuman/linux/blob/master/octave/csv2cell.m
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2014, 15:44     Titel:
  Antworten mit Zitat      
Ich hab es eine ganze Zeit lang mit csvread versucht, aber er hat mir zwar schön die Zeilen ausgelesen, aber nicht die Spalten:/ Deswegen dachte ich mir mit Converter in xlxs umwandeln und dann "sowie früher mit Matlab" einfach mit xlsread einlesen und ich habe alles sauber in einer Matrix stehen, also Spalten/Zeilen.

Ich habe diesen Konverter verwendet:
http://www.softinterface.com/Conver.....s/Convert-CSV-To-XLSX.htm

Meine Versuche mit csv read liefern eine 4003x1 Matrix ohne header :/ und ohne die Spalten.
Darf ich dir eine Original csv Mailen?

Gruss
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 15:46     Titel:
  Antworten mit Zitat      
Ja klar.
Aber du sollst auch csv2cell('file.csv') versuchen, und nicht csvread.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2014, 16:09     Titel:
  Antworten mit Zitat      
Ah ok csv2cell sieht schon besser aus:

Code:
A =
{
  [1,1] = date: 20130201;time: 082005;number of cycles: 74101;T_wq: 58;T_gur: 103.000;
  [2,1] =  w state: stoppes!: 6;T12: 30;T23: 30;T33: 32;T12: 35;
  [3,1] = *-*
  [4,1] = 21141;0;49;0;993;0;2;
  [5,1] = 21138;0;56;0;993;0;2;
  [6,1] = 21132;0;61;0;993;0;2;
  [7,1] = 21144;0;53;0;993;0;2;


Genau nur wie bekomme ich hier die "Spalten" rein. oder kann ich hier auch irgendwie explizit auf die z.B 933 in Spalte 5 zugreifen? Mit A(6,2) funktioniert es nicht :/
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 16:15     Titel:
  Antworten mit Zitat      
Siehe meine Mail. dlmread ('QQ_HJ3_54A_00001.csv' ,';'); alleine erfüllt schon seinen zweck.

Oder


Code:

%# Diese Funtion funktioniert nicht mit Matlab!
function ret = mycsvread(file,header=0,cols=Inf)
  if cols==Inf
    ret.values=dlmread (file ,';',header,0);
  else
    ret.values=dlmread(file ,';',header,0)(:,1:cols);
  end
  if header>0
    f=fopen(file);
      for n = 1:header
         ret.header{n}=fgetl(f);
      end
    fclose(f);
   end
end
 


Code:

octave:22> m=mycsvread('QQ_HJ3_54A_00001.csv',3,7);
octave:23> m.
m.header  m.values  
octave:23> m.header
ans =
{
  [1,1] = date: 20140505;time: 082005;number of cycles: 74101;T_wq: 58;T_gur: 103.000;
  [1,2] =  w state: stoppes!: 6;T12: 30;T23: 30;T33: 32;T12: 35;
  [1,3] = *-*
}
octave:24> size(m.values)
ans =

                   161                     7
 


Dann hat man es gleich etwas automatisiert.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman

Zuletzt bearbeitet von markuman am 15.06.2014, 16:20, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 16:19     Titel:
  Antworten mit Zitat      
sbmiles21 hat Folgendes geschrieben:
Ah ok csv2cell sieht schon besser aus:

Code:
A =
{
  [1,1] = date: 20130201;time: 082005;number of cycles: 74101;T_wq: 58;T_gur: 103.000;
  [2,1] =  w state: stoppes!: 6;T12: 30;T23: 30;T33: 32;T12: 35;
  [3,1] = *-*
  [4,1] = 21141;0;49;0;993;0;2;
  [5,1] = 21138;0;56;0;993;0;2;
  [6,1] = 21132;0;61;0;993;0;2;
  [7,1] = 21144;0;53;0;993;0;2;


Genau nur wie bekomme ich hier die "Spalten" rein. oder kann ich hier auch irgendwie explizit auf die z.B 933 in Spalte 5 zugreifen? Mit A(6,2) funktioniert es nicht :/


Ach ja, oder meine csv2cell Funktion

Code:

octave:26> csv2cell

 ret = csv2cell ( FILE )
 ret = csv2cell ( FILE , SEPARATOR )
 ret = csv2cell ( FILE , SEPARATOR , HEADERS )

 FILE must be a char equal to the filename.
 SEPARATOR is the value separator in the name file. Default value separator is ','.
 HEADERS is the number of header-lines that have to be skipped. Default value is 0.


octave:27> markuman=csv2cell('QQ_HJ3_54A_00001.csv' ,';',3);
octave:28> size(markuman)
ans =

                   161                     7
 


Aber Zellen können manchmal auf mehr hinderlich sein als hilfreich Very Happy
Ich würde dir eher den dlmread Weg empfehlen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
sbmiles21
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 16.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2014, 18:42     Titel:
  Antworten mit Zitat      
puhh nicht schlecht Very Happy soviele neue Sachen Very Happy Wink

Ok, also das klappt auch bei mir, für mich als Anfänger waren die Zellen immer super.
Weil wie kann ich in diesem Struct, die Werte auslesen ohne komlizierte (für Anfänger) Funktionen schreiben zu müssen?

z.B.
Via csv2cell oder deiner Funktio habe ich ja dann das:
Code:
 [1,1] = date: 20130201;time: 082005;number of cycles: 74101;T_wq: 58;T_gur: 103.000;
  [2,1] =  w state: stoppes!: 6;T12: 30;T23: 30;T33: 32;T12: 35;
  [3,1] = *-*
  [4,1] = 21141;0;49;0;993;0;2;


Jetzt, "ich denke in Excel Format,also Spalten/Zeilen" Wink ....möchte ich z.b nur das date Feld auslesen um dieses mit einem anderen Date Feld aus einer anderen Datei zu vergleichen, also Timestamp checken vonn 100 Dateien z.b.

Oder

Ich benötige nur die erste Spalte, um irgendwelche Diagramme zu erstellen. In diesem Struct kann ich das ja gar nicht, da er alles "nur" in Zeilen aufgeteilt hat.
Deswegen bin ich so heis auf die Matrix Very Happy, da weiss ich wie das geht, relativ einfach

Oder ist das hier auch Problemlos möglich? Auf jedenfall danke für die Funktion, nicht schlecht !
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 15.06.2014, 18:54     Titel:
  Antworten mit Zitat      
m.values ist doch eine Matrix

Code:

m.values(:,3)
 


Zeigt dir alle Werte aus Spalte 3.

Code:

m.values(42,:)
 


Zeigt dir alle Werte aus Zeile 42.

Code:

m.vaues(2,3)
 


Oder du wählst einen separaten Wert aus, Zeile 2 Spalte 3.

Oder einfach a=m.values, und du operierst einfach mit a.

Ich hab einfach nur ein struct genommen damit der Workspace nicht so zugemüllt wird, und damit die header Informationen zusammen mit den eigentlichen Werten gruppiert unter einer Variable sind.


Zitat:

Jetzt, "ich denke in Excel Format,also Spalten/Zeilen"


Dann hast du csv2cell aber falsch angewendet. Du musst die header Zeilen Skippen. csv2cell(file, ';', 3); Andernfalls lässt sich die csv Datei nicht in seine richtige Dimension reshapen und man kannt eben nicht auf einzelne Spalten/Zeilen zugreifen.
Und wichtig ist auch, dass du das nicht mit der csv2cell Funktion aus dem io Package verwechselst. Das kann afaik keine header Zeilen skippen.

which csv2cell zeigt dir an, welche Funktion verwendet wird. Ggf. musst du pkg unload io vorher machen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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.