Verfasst am: 15.06.2012, 11:45
Titel: Frage uber data reorganisieren mit matlab
Hallo
Ich möchte mich für mein Deutsch zu entschuldigen, aber ich konnte nicht finden, eine MATLAB-Forum in Englisch. Zur Verdeutlichung habe ich auch meine Nachricht in Englisch geschrieben.
Ich habe eine Frage zur Neuordnung der Daten. Ich arbeite an einem Projekt arbeiten geologische Stratigraphie und haben eine Excel Datensatz von einer großen Anzahl von Felsen Schichtdicken (in stratigraphischen Reihenfolge). Zur weiteren Analyse ich die Daten neu angeordnet, so dass stattdessen müssen jeder Excel-Zeile entsprechend einer Gesteinsschicht mit dem erwähnten Dicke in der Zelle, jede Zeile zu 1 cm Gestein entspricht, und in jeder Zelle der Fels Art erwähnt wird. So zum Beispiel:
3cm Kalkstein
1cm Mergel
2cm Kalkstein
Gibt es eine Möglichkeit zu haben, dies zu automatisieren matlabb (da es wirklich lange dauern, um manuell zu tun)? Oder irgendwelche Vorschläge, wie man eine solche Aufgabe bewältigen? Vielen Dank!
Max
---
Hi
I would like to apologise for my german, however i couldn't find a matlab forum in english. For clarity I also posted my message in english.
i have a question regarding reorganisation of data. I'm working on a geological stratigraphy project and have an excel dataset of a large number of rock layer thicknesses (in stratigraphical order). For further analysis I need to rearrange the data so that instead of each excel row corresponding to one rock layer with the thickness mentioned in the cell, each row corresponds to 1cm of rock, and in each cell the rock type is mentioned. So for example:
3cm limestone
1cm marl
2cm limestone
Is there any way to have matlabb automize this (since it will take really long to do manually)? Or any suggestions on how to handle such a task? Thank you!
Max
Hello Max,
I'm sure, that there is a better way than mine, but here is a suggestion with two for loops:
Code:
origin = {'3cm', 'limestone'; '1cm', 'marl'; '2cm', 'limestone'};
edited = cell{10, 2}% preallocate with correct number if you know
counter = 1;
for i = 1 : length(origin) times = str2num(regexp(origin{i}, '\d', 'match', 'once'));
for j = 1 : times
edited{counter, 1} = [num2str(counter) 'cm'];
edited{counter, 2} = origin(i, 2);
counter = counter + 1;
end end
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.