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

nc daten einlesen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2012, 10:25     Titel: nc daten einlesen
  Antworten mit Zitat      
Hallo zusammen!

Ich habe ein riesen problem beim daten einlesen. Ich versuche mehrere nc Daten aufeinmal einzulesen, das hat auch funktioniert:

Code:



file = dir('datensatz-*.nc')

 


Diese daten werden dann in einem zweiten programm verarbeitet:

Code:


    ncid = netcdf.open(file, 'NC_NOWRITE');

 


Mein Problem ist jetzt, wenn ich nur eine Datei einlesen funktioniert alles, wenn ich aber mehrere Datein einlese, dann bekomme ich folgende fehlermeldung:

Code:


??? Error using ==> fopen
Invalid filename.

Error in ==> open at 42
fid = fopen(filename,'r');

 


Gibt es da vielleicht eine andere möglichkeit mehrere datensätze aufeinmal einzulesen?
Wäre toll, wenn ihr mir weiterhelfen könnt.

Danke,

lg. ac


dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 08:00     Titel:
  Antworten mit Zitat      
das funktioniert auch.

ich habs mal so gemacht,dass ich mir damals sämtliche daten mit der gewünschten änderung mit dem dir befehl geholt habe.

aber nach dem in dem rückgabeobjekt des dirbefehls mehrere daten sind, musst du einfach über diese daten drüberloopen.

befehle kenn ich nicht mehr auswendig.. leider habe ich das file nicht da

aber da prinzip wär :

liste_mit_files = dir(...., *.nc)

while i<length liste

fopen (liste(i))
verarbeite
fclose()
i=i+1
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 12:37     Titel:
  Antworten mit Zitat      
hallo,

Danke für die Antwort.

Aber irgendwie steh ich auf der Leitung. Habs jetzt folgendermaßen probiert:

Code:


liste = dir(' ... *.nc');
l = length(liste);

%i = 1;
while i < l
fopen(liste(i))
fclose(liste(i))
i = i+1;
end

 


Jetzt bekomme ich aber folgender fehlermeldung:

Code:


Invalid file identifier. Use fopen to generate a valid file identifier.

 


Die Länge der eingelesenen Daten l hat jedoch einen Wert.

Danke,
lg, AC
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 12:57     Titel:
  Antworten mit Zitat      
DIR gibt dir ein struct zurück, nicht ein normales array

du musst da bissl gefinkelter drauf zugreiffen

zum beispiel

liste =dir('*.txt') // liefert alle txt files , struct und kein array !!

um auf die 4 datennamen zugreiffen zu können,musst du

liste(1).name
liste(2).name
...


in der schleife also
liste(i).name

versuchs mal Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 13:28     Titel:
  Antworten mit Zitat      
danke, wertvolle hilfe.

Jetzt bin ich leider wieder beim anfangsproblem.
Meine Function schaut jetzt so aus:

Code:


liste = dir('...*.nc')
l = length(liste)

while i < l
fid = fopen(liste(i).name)
for k = 1:numel(liste)
disp(liste(k).name)
end
status = fclose('all')
i = i+1
end

 


Und die Fehlermeldung die ich bekomme lautet:

Code:

fid = fopen(filename,'r');
Error in ==
ncid = netcdf.open(liste,'NC_NOWRITE')
 


Irgendwie dreh ich mich im Kreis und steh komplett auf der Leitung.

lg, AC
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 13:51     Titel:
  Antworten mit Zitat      
kannst du mal 2 oder 3 (meinetwegen auch gefakte) dateien hier hochladen ?
würd mir dann viel leichter tun Smile

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 15:19     Titel:
  Antworten mit Zitat      
die original-daten kann ich leider nicht anhängen, ich hänge ein paar csv.datein an, hab grad den code mit diesen Daten durchlaufen lassen und habe die gleiche fehlermeldung bekommen.
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2012, 16:49     Titel:
  Antworten mit Zitat      
vielleicht wärs dir dennoch möglich,2 so files drannzuhängen ..
es reicht im prinzip,wenn ich dann 2 zeilen datensatz pro file habe. vielleicht kannst das ja entbehren wenn du in den beiden zeilen die zahlen noch bissl nachtunst Smile

lg
daniel
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 08:49     Titel:
  Antworten mit Zitat      
hallo!

werd ein paar daten dranhängen. mal schauen ob es funktioniert.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 08:50     Titel:
  Antworten mit Zitat      
weiss jetzt nicht, ob das funktioniert hat, hab drei .tex daten angehängt.
 
ste99947

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 12:10     Titel:
  Antworten mit Zitat      
Hallo,

dein code passt nicht zur Fehlermeldung.
Einmal schreibst Du fopen andersmal netcdf.open.
Poste mal genau das Codeschnipsel, das die Fehlermeldung produziert.

Grüße
Stephan
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 13:17     Titel:
  Antworten mit Zitat      
hallo!

der code, den ich jetzt habe:

Code:


liste = dir('...*.nc')
l = length(liste)
i = 1;
while i < l
fid = fopen(liste(i).name)

status = fclose('all')
i = i+1
end
 


wenn ich das ausführen lassen bekomme ich folgende ausgabe:

fid = 3
status = 0
i = 2
bis i = 24

Und wenn ich die function weiter laufen lasse, bekomme ich folgende fehlermeldung:

??? Error using ==> fopen
Invalid filename.

Error in ==> open at 42
fid = fopen(filename,'r');

Error in ==>
ncid = netcdf.open(liste, 'NC_NOWRITE');

wär toll, wenn ihr mir da helfen könnt.

lg.
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 02.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 17:13     Titel:
  Antworten mit Zitat      
das heisst,die ersten 23 macht er richtig auf , da die schleif eja bis i = 24 erfolgreich durchläuft.


wieviele so datein sind im ordner und welche zahl steckt in der variablen l

probier mal, l hardcodiert auf die anzahl der files im folder zu setzen ..


ich glaube, dass length(liste) bei dir nicht wirklich die anzahl der dateien entspricht, und ab i=25

liste(25).name nichts sinnvolles mehr ergibt und daher der fehler kommt..

wärs was ganz gravierendes,würd die schleife ja schon beim ersten durchlauf zum fehler führen.

lg
nochmal.. bitte poste einfach 3 so gefakte dateien .. das würd das leben wirklich leichter machen und wir hätten das problem vermutlich schon gestern gelöst..
lösch alle zeilen raus bis auf 2 und ändere die zahlen, das dauert 10 minuten und man kann dir helfen ..

hilfe zu verlangen und dann diese 10 minuten nicht investieren wollen ist nicht grad die feinste art Smile


aber das angebot steht natürlich,bin ja kein unmensch Smile

lg
daniel
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 17:42     Titel:
  Antworten mit Zitat      
Der Fehler kommt von der Zeile
Code:
ncid = netcdf.open(liste, 'NC_NOWRITE');

die du nicht mit in deinem Codeschnipsel sondern nur in der Fehlermeldung gepostet hattest.

Hier musst du natürlich so vorgehen wie dany2k3k es erklärt hat, mit der Schleife über
Code:
ncid = netcdf.open(liste(fileNr).name, 'NC_NOWRITE');


Wenn du die netcdf Funktkionen verwenden willst vergiss fopen wieder.

Grüße
Stephan
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2012, 20:03     Titel:
  Antworten mit Zitat      
hallo zusammen!

Danke, erstmal.
Ich werde jetzt drei Datensätze anhängen. Wahrscheinlich ist das Problem ganz einfach zu lösen. Wie man sicher merkt bin ich matlab anfänger, aber es kann nur besser werden!

Bin mir nur nie sicher, ob die Datein auch angehängt sind, wenn ihr keine bekommt, sagt bescheid.

Vielen Dank!
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  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 - 2025 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.