Verfasst am: 05.12.2012, 16:20
Titel: NC Datei splitten und speichern
Hallo zusammen,
Mein Problem ist folgendes:
Ich schreibe eine BA - Arbeit. Ich hab NS-DAten für ein hydrologisches Modell bekommen. Ich muss die Daten so adaptieren dass das Modell die Daten "erkennt". Ich bin kein Matlab Profi und brauche bitte etwas Hilfe.
Ich habe rel. große nc Dateien, die ich auf meinem Rechner nicht auf einmal einlesen kann. Jetzt lese ich sie eben einzeln ein. Danach möcht ich sie als Textdatei speichern. So weit so gut.
Frage 1:
Mit dem save Befehl kommen beispielsweise die e009 Angaben hinzu. Die fprintf Version wäre besser, da könnte ich auch runden (mache ich auch bei der Projektion weiter unter im Code), aber da brauche ich anscheinend eine Schleife (dauert zu lange)
Frage 2:
Die Daten liegen in einem 1*1 km Raster vor und ich möchte sie auf 5*5km interpolieren, ist es sinnvoll diese Interpolation vor der Textschreiberei einzubauen?
Gerne möcht ich mich im programmieren verbessern, deshalb sagt mir wenn der Code umständlich usw. ist. Den Code hab ich irgendwie "zusammengeschustert"
Die Frage 1 ist keine Frage. Eine Antwort darauf ist dann nicht möglich.
Es ist in gewissen Grenzen sinnvoll von einem 1x1km Raster auf ein 5x5Raster zu interpolieren. Dabei gehen aber Informationen verloren und es kann zu Treppen-Effekten führen. Ein Filtern wäre hier also angemessen, z.B. ein Block-Mean, bei dem die Mittelwerte über 5 benachbarte Elemente gebildet wird. Siehe auch "help decimate".
Kommentare zum Code:
Code:
function INCA_Interpol
run C:\Users\Walter\Documents\MATLAB\nctoolbox\setup_nctoolbox.m;
listing = dir('C:\Users\Walter\Documents\MATLAB\INCA\Hourly\');
listing(1:2)=[]; % Tückisch! Es müssen nicht die ersten beiden sein!
besser:
name = {listing.name};
name(strcmp(name, '.')) = [];
name(strcmp(name, '..')) = [];
for ii = 1:numel(name)% "i" ist tückisch, da es auch die imaginäre Einheit ist % checkfile = []; % Zeitverschwendung
checkfile = regexp(name{ii}, 'INCA_Prec_hourly');
if checkfile == 1 ...
outFile = fullfile(mypath, 'INCA_Precip_', [datestr(t, 'mmmddyyyyHHMM') '.txt']);
t = addtodate(t, 1, 'hour'); % ???
Danke für deine Antwort;
Ich hab die Verbesserungen versucht umzusetzten.
Die fprintf Zeile versteh ich nicht ganz, warum transpose?
Das dreht mir meine Matrix um?
Gibt es ein Befehl der fprintf sagt dass er x-mal beispielsweise %3.2f machen soll;
Ich habs jetzt 28 x reingeschrieben, das sieht halt wirklich mies aus.
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.