Verfasst am: 15.05.2013, 16:55
Titel: Integral, Max berechnung + Speicherung in Excel
Hallo zusammen,
Ich habe mind. 1000 Dateien mit Messwerten, von denen ich jeweils das Integral und das Maximum bestimmen will.
Ist es möglich, eine Funktion zu schreiben, die diese beiden Werte aus einer Datei berechnet bzw ausliest und in eine Exceltabelle schreibt? Also einen Wert zu berechnen und zu exportieren habe ich hinbekommen, aber nicht so eine Schleife mit der Speicherung von allen Dateien aus einem Ordner in eine Exceltabelle (3 Spalten: Name der Datei, Integral,Maximumwert). Kann mir jemand sagen, wie ich dies programmeren kann?
Verfasst am: 15.05.2013, 21:05
Titel: Re: Integral, Max berechnung + Speicherung in Excel
TomLustig hat Folgendes geschrieben:
Hallo zusammen,
Ich habe mind. 1000 Dateien mit Messwerten, von denen ich jeweils das Integral und das Maximum bestimmen will.
Ist es möglich, eine Funktion zu schreiben, die diese beiden Werte aus einer Datei berechnet bzw ausliest und in eine Exceltabelle schreibt? Also einen Wert zu berechnen und zu exportieren habe ich hinbekommen, aber nicht so eine Schleife mit der Speicherung von allen Dateien aus einem Ordner in eine Exceltabelle (3 Spalten: Name der Datei, Integral,Maximumwert). Kann mir jemand sagen, wie ich dies programmeren kann?
Viele Grüße
Tom
Zerlege das Problem doch erstmal in kleine Unterprobleme und dann frage gezielt nach an den Stellen, an denen du selber nicht weiterkommst.
1. einlesen einer einzelnen Datei aus Ordner
2. Bestimmen von Dateiname, Integral und Maximum und Speichern in Matrix.
3. einlesen aller Dateien aus einem bestimmten Ordner und durchführen von 2. für jede Datei => fortlaufende Matrix
4. schreiben der Ergebnismatrix in Excel.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
TomLustig
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.05.2013, 22:36
Titel:
ich wollte, dass ihr von der Gesamtaufgabe einen Überblick bekommt.
Ich arbeite noch nicht lange mit Matlab und bis auf das Einlesen und Darstellen und einmalige Exportieren in eine Exceltabelle habe ich keine Ahnung, wie ich das anstellen soll...
Generell möchte ich aus einer Datei nur den Max- und den Mittelwert haben.
(Wie bestimme ich den Mittelwert? Einfach SUM/Anzahl?)
Problem dabei, ich möchte das nicht manuell mit jeder Datei machen.
Eine Datei besteht aus 2 Spalten a 1,8Millionenwerten. sonst würde ich sie ja alle einlesen und insgesamt berechnen lassen.
Sagen wir, die Matrix A hat 2 spalten und 1.8 mio zeilen.
Code:
mittelwert = mean(A); %liefert die Mittelwerte der einzelnen Spalten
summe = sum(A); %liefert die Summe der einzelnen Spalten.
maxi = max(A); %liefert das Maximum der einzelnen Spalten.
Ein gewisser Überblick über die Gesamt-Aufgabe ist zwar oft hilfreich, aber im Forum werden solche umfassenden Gesamtaufgaben sehr wahrscheinlich nicht gelöst.
Das Einlesen einer Menge von Dateien läuft z.B. so:
Code:
List = dir('D:\FolderName');
Name = {List(~[List.isdir]).name};
for iName = 1:length(Name)
data = lade(Name{iName})... wie auch immer
end
Nun ist die Frage, wie kann ich die 3 errechneten Werte automatisch in eine Exceltabelle schreiben lassen?
Am besten, wenn ich die nächsten 4 Dateien einlese, dass er diese Werte in der gleichen Exceltabelle unter den zuvor berechneten Werten einträgt
d = {'Mittwelwert'; mittelwert};
e = {'Summe'; summe};
f = {'Maximalwert'; maxi};
xlswrite('Mittelwert.xls', d);
xlswrite('Summe.xls', e);
xlswrite('Maximalwert.xls', f);
Bekomme ich 3 Exceltabellen mit dem gewünschten Wert.
Problem dabei, er überspeichert die jedesmal und schreibt den nächsten Wert nicht darunter!!
Ist das möglich, das er für die nächste eingelesene Datei den Wert darunter schreibt?
Bekomme ich 3 Exceltabellen mit dem gewünschten Wert.
Problem dabei, er überspeichert die jedesmal und schreibt den nächsten Wert nicht darunter!!
Ist das möglich, das er für die nächste eingelesene Datei den Wert darunter schreibt?
Ja, indem du einfach EIN Cellarray erzeugst, mit allen Einträgen.
Code:
closeall;
%clearall; --> bitte nicht nutzen - das ist zu "brutal"
ExcellStr = [];
akt_verzeichnis = pwd;
% Verzeichnis wahlen
path_messwerte = 'C:\Messwerte';
cd( path_messwerte );
% Initialisierung Variablen
dateiliste = ls;
SP_ges = [];
% Schleife um mehrere Dateien einzulesen for iDat = 6:9 %--> nicht i nutzen, das ist die imaginäre Einheit!
load(dateiliste(iDat ,Smile,'-mat','*');
SP = Daten(:,[1,2]);
SP_ges = [SP_ges;SP];
datestr(Daten(1,1)) %--> wohin soll das geschrieben werden? derzeit überflüssig
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
TomLustig
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.05.2013, 13:54
Titel:
klasse, er macht das, was ich will....
ein problem tritt dennoch auf:
ich kann aufgrund der datenmengen nur 3 dateien einlesen und diese berechnen lassen. er speichert auch schön die werte in die exceltabelle.
wenn ich dann die nächsten 3 dateien einlese und berechnen lasse schreibt er dann er die werte 4,5 und 6 und die davorrigen werte stehen nicht mehr in der tabelle
scheinbar löscht matlab den speicher um wieder speicherplatz zu haben und löscht dabei das Cellarray.
wie kann ich dies umgehen?
ich kann aufgrund der datenmengen nur 3 dateien einlesen und diese berechnen lassen.
Bist du da sicher? Handelt es sich wirklich um Files im Gigabyte Bereich? Ansonsten wären solche Vermutungen nicht naheliegend.
Zitat:
scheinbar löscht matlab den speicher um wieder speicherplatz zu haben...
Matlab löscht nicht eigenmächtig irgendwelchen Speicher, weil es sich dann besser fühlt. Ohne ausdrücklichen Befehl macht Matlab gar nichts.
Bitte poste also den relevanten Abschnitt deines codes, so dass wir finden können, welche Befehle das von dir beobachtete Verhalten verursachen.
Gruß, Jan
TomLustig
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.05.2013, 17:35
Titel:
eine Datei ist ca. 70mb groß mit 15x1,8Millionen werten. deswegen steigt matlab unter win7 32bit schnell aus.
ich weiß das matlab icht selbstständig was löscht, aber wenn die daten nach und nach berechnen lasse, sind die werte aus den vorhergehenden berechnungen weg
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
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.