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

einlesen von daten

 

irf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2011, 13:38     Titel: einlesen von daten
  Antworten mit Zitat      
hi,

ich tu mich gerade ein wenig schwer. ich habe ein .dat file und möchte aus diesem Daten einlesen.
Mein Problem ist, dass die Daten, die ich einlesen möchte etwas "blöd" dastehen...

16 7.6415E-04 3.1653E-04 5.7995E-04
17 7.2646E-04 -7.3423E-05 -1.0343E-04
18 9.9308E-04 -3.7620E-04 -9.1657E-04
19 1.0252E-03 1.6753E-04 8.1141E-04
20 9.1746E-04 -5.6192E-05 -4.2562E-05
21 1.1419E-03 -2.3007E-04 -1.0259E-03
22 1.1309E-03 5.5101E-05 9.4753E-04
23 9.8575E-04 -4.7023E-05 1.5162E-05
24 1.2043E-03 -1.2051E-04 -1.0561E-03

ich will das jetzt in einer Matrix haben. Allerdings hätte ich gern, dass die erste Zeile in der 16 Zeile der Matrix steht usw. Die Zeilennummer soll allerdings nicht mit in der Matrix stehen...

Wie mache ich das denn am Besten? Ich bekomme es irgendwie nicht hin.
Schon mal danke für eure Hilfe...

Gruß


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2011, 16:37     Titel:
  Antworten mit Zitat      
Hallo irf,
wie liest Du Deine Datei ein?
Wenn sie schon als Nx4-Matrix vorliegen, mit dem Index in der ersten Spalte
kannst Du die gewünschte Matrix einfach durch eine Index-Zuweisung erhalten:
Code:
matrix_gew(matrix_in(:,1),:)=matrix_in(:,2:end)


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
irf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2012, 10:54     Titel:
  Antworten mit Zitat      
hallo sirius3,

im moment sieht mein programm folgendermaßen aus:
Code:
function [nodes] = readDATfile

fid = fopen(inputFilename,'r');
currentString = fgetl(fid);
while (size(findstr('NUMBER OF NODES DEFINED BY THE USER',currentString))==0)
            currentString = fgetl(fid);
end

nodeNumber = sscanf(currentString , '%*s%*s%*s%*s%*s%*s%*s%d%*s');

while (size(findstr('N O D E   O U T P U T',currentString))==0)
            currentString = fgetl(fid);
end
while (size(findstr('NODE FOOT-',currentString))==0)
            currentString = fgetl(fid);
end
       
currentString = fgetl(fid);
currentString = fgetl(fid);
currentString = fgetl(fid);
   
nodes = zeros(3*nodeNumber,1);
offset = 1;
   
while (size(findstr('THE',currentString))==0)
        currentArray = strread(currentString,'%f','whitespace','n');
        newOffset = offset + size(currentArray,1);
        nodes(offset:newOffset-1) = currentArray;
        offset = newOffset;
        currentString = fgetl(fid);
end

nodes = reshape(nodes, 3, nodeNumber);
nodes = nodes';
       
fclose(fid);
end
 


das mit der index-zuweisung bekomme ich irgendwie nicht hin...

TEST.txt
 Beschreibung:

Download
 Dateiname:  TEST.txt
 Dateigröße:  1.82 KB
 Heruntergeladen:  387 mal
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2012, 11:51     Titel:
  Antworten mit Zitat      
Hallo Irf,
hast Du schonmal geschaut, was jetzt in Deiner nodes-Matrix steht?
Die liest jeweils vier Werte pro Zeile ein, und wandelst diese zum Schluß
in eine 3xn-Matrix um.
Gruß
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
irf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2012, 11:58     Titel:
  Antworten mit Zitat      
hallo,

ja, das habe ich bemerkt. meine matrix sieht zimelich bescheuert aus. weil matlab mir die werte dann einfach nacheinander in die 3xn matrix schreibt... die will ich ja auch haben zum schluss. nur weiß ich nicht, wie ich die erste spalte "weg" bekomme. oder besser gesagt, wie ich sie beim einlesen überspringe...

gruß irf
 
irf

Gast


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

ich glaube ich bin einen schritt weiter gekommen...
ich bin jetzt soweit, dass ich nur die letzten drei werte in die matrix schreibe. allerdings nicht so wie ich will. ich habe es mit

Code:
while (size(findstr('MAXIMUM',currentString))==0)
        currentArray = strread(currentString,'%*d%f','whitespace','n');
        newOffset = offset + size(currentArray,1);
        nodes(offset:newOffset-1) = currentArray;
        offset = newOffset;
        currentString = fgetl(fid);
    end

versucht. jetzt fehlt aber nciht nur die erste spalte sondern jeweils von den zweiten und dritten werten die erste ziffer.
und wenn ich
Code:
currentArray = strread(currentString,'%*d%f%f%f%f','whitespace','n');

eingebe, bekomme ich eine fehlermeldung.

ich komm gerade absolut nicht weiter. kann mir da jemand etwas helfen?

gruß irf
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2012, 15:41     Titel:
  Antworten mit Zitat      
Hallo,

warum willst Du jetzt den ersten Wert jeder Zeile entfernen?
Das ist doch der Index, wo die anderen drei Zahlen in die Matrix geschrieben werden sollen.

Code:

nodes = zeros(nodeNumber,3);

while (size(findstr('THE',currentString))==0)
        currentArray = strread(currentString,'%f','whitespace','n');
        offset = currentArray(1);
        nodes(offset, 1:3) = currentArray(2:4);
        currentString = fgetl(fid);
end
 


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
irf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2012, 10:03     Titel:
  Antworten mit Zitat      
sorry, dass ich mich erst jetzt melde... aber du hast natürlich recht. vielen dank für deine hilfe! Razz
 
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 - 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.