Exceldaten filtern < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:29 Mo 29.10.2007 | Autor: | Donath |
Hi,
ich habe eine exceltabelle die in spalte c beginnt und ca. 2500 Zeilen hat. In Spalte q steht ein Parameter der jedoch nur unregelmässig alle ca. 150 Zeilen auftaucht. Ich will jedoch nur die Parameter aus spalte c-q haben wo ein parameter aus spalte q zuordenbar ist. Das Problem ist zusätzlich, dass excel beim auslesen in jedes Leerfeld eine leezeichen schreibt.
Kann man dafür ein excel oder matlabscript bauen?
Habe die Datei mal angefügt und alle relevanten zeilen rot markiert.
Insgesamt existieren 24 solche datein.
Danke
Dateianhänge: Anhang Nr. 1 (Typ: xls) [nicht öffentlich]
|
|
|
|
Hallo,
willst du die Daten in Excel oder in Matlab weiterverarbeiten?
Da du auch ein Matlabskript als Lösung akzeptierst (viiiieeel einfacher), präsentiere ich ein solches:
raw_data = xlsread('daten.xls');
filt_data = raw_data(~isnan(raw_data(: , end)) , 3:end);
Fertig!
Die Matrix filt_data enthält die Spalten C-Q, dabei aber nur die Zeilen, in denen Q (in Excel) einen Wert hatte. Der Schlüssel ist einfach, dass nichtnumerische Werte in Matlab NaN's ergeben, die man leicht filtern kann.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:16 Di 30.10.2007 | Autor: | Donath |
Hi,
hast du eine lösung wie er mir die spalten c-q hintereinander schreibt?
und dann als execelfile ausgibt.
also immer zeile 1 c-q dann dahinter zeile 2 c-q usw.
danke
|
|
|
|
|
Hallo,
meinst du jetzt ein Transponieren der Matrix oder einfach alles in eine Zeile schreiben? Letzteres würde Excel nicht öffnen können (zu viele Spalten), also gehe ich von Ersterem aus. Wir haben die Daten in filt_data und schreiben:
dlmwrite('filtdaten.csv', filt_data', ';' );
War das gemeint? Falls nicht, bitte melden.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 11:44 Di 30.10.2007 | Autor: | Donath |
Hi,
ich meinte eine excelliste der matlabdaten. 15 Spalten und eben die entsprechenden zeilen
Das stimmt. ich kann sie leider nciht hintereinanderschreiben lassen.
|
|
|
|
|
Hallo,
also einfach die in Matlab eingelesenen und gefilterten Daten in ein Excel-taugliches Format zurückschreiben?. Da wir keine xls-Dateien erzeugen können, müssen wir uns mit csv behelfen:
dlmwrite('filtdaten.csv', filt_data, ';' );
Diesmal eben nicht transponiert.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:09 Di 30.10.2007 | Autor: | Donath |
die transponierte form ist eigentlich besser nur spuckt er mir in excel datumsangaben aus und wenn ich unter zellen formatieren zahl eingebe sind es nciht mehr die originaldaten. hast du dafür eine löäsung?
|
|
|
|
|
>die transponierte form ist eigentlich besser
Dann bleiben wir dabei.
> nur spuckt er mir in excel datumsangaben aus und wenn ich unter zellen formatieren zahl eingebe sind es nciht mehr die originaldaten. hast du dafür eine löäsung?
Bei mir geht es. Hier ein Screenshot von mir:
[Dateianhang nicht öffentlich]
Hat sich zwischenzeitlich das Format der Originaldatei verändert?
Hast du mal mit Wordpad o.ä. in die erzeugte csv-Datei reingeschaut?
Kannst du es bei anhaltender Ratlosigkeit mal anhängen?
Gruß
Martin
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Frage) überfällig | Datum: | 12:28 Di 30.10.2007 | Autor: | Donath |
die transponierte variante ist besser, stimmt....komisch wenn ich xlswrite mache geht es....also es funst....invertiert bekomme ich also 15 zweiten und 28 spalten
hast du für matlab eine idee wir er mir alles 28 spalten untereinanderschreibt?
anschliessend brauche ich wieder eine spalte in excel
deine lösungsvorschläge sind genial
danke
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 12:48 Di 30.10.2007 | Autor: | Donath |
ich glaube das war etwas wir, also nochaml:
wenn ich die rohdaten transponiere erhalte ich 28 Spalten, diese 28 sind allerdings schon csv. datein.
wäre es nicht besser, wenn zunächst in matlab alle 28 Spalten hintereinanderweg geschrieben würden und dann am ende eine csv datei mit einer spalte erzeugt würde, hast du dafür eine lösung
danke danke, martin
lars
|
|
|
|
|
Hallo,
zuerst: In der von mir benutzten Matlab-Version gibt es noch kein xlswrite, daher der Umweg.
> wenn ich die rohdaten transponiere erhalte ich 28 Spalten, diese 28 sind allerdings schon csv. datein.
Verstehe ich nicht. Wo kommen die 28 Spalten her? Wie können Spalten CSV-Dateien sein?
> wäre es nicht besser, wenn zunächst in matlab alle 28 Spalten hintereinanderweg geschrieben würden und dann am ende eine csv datei mit einer spalte erzeugt würde, hast du dafür eine lösung
Ohne die Frage vorher zu verstehen:
Wenn du eine 28-spaltige Matrix data hast und die Spalten untereinander haben willst, dann geht es per:
data = reshape(data, [], 1);
Wenn es 28 unabhängige Spaltenvektoren sind, z.B. a, b, c, usw., dann geht es mit:
data = [a ; b ; c ; usw.];
Ich hoffe, das hilft weiter.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 Do 01.11.2007 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|