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

Daten einlesen

 

ewa

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2008, 14:09     Titel: Daten einlesen
  Antworten mit Zitat      
Hallo, Leute!
Letzte Woche habe ich angefangen mich in Matlab einzuarbeiten....
Von meinem Prof, den ich zur Zeit nicht fragen kann, habe ich folgendes Skript bekommen:

readdata.m
 Beschreibung:
Was passiert in der Zeile:
field(t,:,i)=xin(lon*(i-1.....?
Ich sollte vielleicht erwähnen, dass es sich um Temperaturen für 4400 Jahre handelt.
Wenn ich das Skript laufen lassen möchte, zeigt matlab mir an, dass in der oben genannten Zeile ein Fehler

Download
 Dateiname:  readdata.m
 Dateigröße:  372 Bytes
 Heruntergeladen:  685 mal


ewa

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2008, 14:15     Titel:
  Antworten mit Zitat      
Ok, Satz mit x.....

Ja, ich kann nicht mal, was einfügen...

Code:

lon=96;
lat=48;

xydim=lon*lat; tdim=4400;
field=zeros(tdim,lon,lat);
infile = ['filename.grads'];

fid = fopen(infile,'r');

for t=1:tdim
xin=fread(fid,xydim,'float');
for i=1:lat;
field(t,:i) = xin(lon*(i-1)+1:i*lon);
end
end
 


Embarassed

/edit: Code-Umgebung ergänzt. Bitte zukünftig selber machen (oben Mitte)
Gruß Alex
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 18.08.2008, 16:26     Titel:
  Antworten mit Zitat      
Hallo ewa,

da scheint ein Komma zu fehlen:

Code:
field(t,:,i) = xin(lon*(i-1)+1:i*lon);


Wenn noch immer eine Fehlermeldung kommt, kopiere die doch auch hier ein, dann ist es leichter, Dir zu helfen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eve
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 18.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 12:04     Titel:
  Antworten mit Zitat      
Das Komma hab ich beim Abtippten vergessen..
Als Fehlermeldung zeigt es mir an:
??? Index exceeds matrix dimensions
Error in....der oben angesprochenen Zeile.
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 19.08.2008, 14:09     Titel:
  Antworten mit Zitat      
Hallo eve,

die Fehlermeldung bedeutet, dass xin nicht genügend Elemente hat. Das heißt wahrscheinlich, dass in der Datei nicht genügend Informationen abgelegt sind (oder in einem anderen Format?).
Um festzustellen, wieviele Elemente im float-Format eingelesen werden können, kannst Du folgendes eingeben:

Code:

fid = fopen(infile,'r');
xin=fread(fid,xydim,'float');
fclose(fid);
numel(xin)
 


Damit es klappt, muss dieser Wert = tdim*lon*lat sein. Wenn er kleiner ist, kommt es zu der Fehlermeldung.

Ich hoffe, dass ich Dir etwas helfen konnte,

herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eve
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 18.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2008, 09:41     Titel:
  Antworten mit Zitat      
Merci Bijick!
Ja, stimmt, die Datensätze stimmen ja gar nicht überein...
Kann man das irgendwie beheben mit NaN´s oder so? Oder werden dadurch die Ergebnisse irgendwie verfälscht?

@Alex: Jep, werd ich nächstes Mal machen! Danke für den Hinweis!
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 21.08.2008, 10:05     Titel:
  Antworten mit Zitat      
Hallo eve,

besser als NaNs wäre natürlich, die Werte für lon und lat (und tdim?) an den tatsächlich vorliegenden Datensatz anzupassen, zumindest bis Du jemanden fragen kannst, ob das überhaupt die richtigen Daten sind.

Wie ist denn der Wert für
Code:


Ich würde daraus erstmal irgendwie passende Werte für lon, lat und tdim basteln, damit das Programm wenigstens mal läuft. Oder ist Dein Prof schon wieder verfügbar?

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
eve
Forum-Anfänger

Forum-Anfänger


Beiträge: 41
Anmeldedatum: 18.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2008, 11:57     Titel:
  Antworten mit Zitat      
ja, ich muss wohl bis Mo warten, dann ist mein Prof wieder da...
ich habe zwei bzw. drei Datensätze, für alle gilt: lon=96, lat=48 und tdim=4400
Allerdings zeigt es mir bei numel(xin) für die Temperaturen 0 an und für die beiden Windfelder jeweils 32. Da nun aber Grads auch nicht das Temp-file öffnen kann, kenn ich mich gar nicht mehr aus... Sad
Aber erstmal vielen, vielen Dank für deine Hilfe Bijick!
Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.