2016-05-08 6 views
0

Ich möchte die Daten einer Datei mit der Größe ca. 60 MB in Matlab in einigen Variablen lesen, aber ich bekomme Fehler. Dies ist mein Code:Lesen Sie Daten zu Matlab mit For-Schleife

clear all ; 
    clc ; 
    % Reading Input File 
    Dataz = importdata('leak0.lis'); 
    %Dataz = load('leak0.lis'); 

    for k = 1:1370 
foundPosition = 1 ; 
for i=1:size(Dataz,1) 
    strp = sprintf('I%dz=',k); 
    fprintf(strp); 
    findValue = strfind(Dataz{i}, strp) ; 
    if ~isempty(findValue) 
     eval_param = strp + '(foundPosition) = sscanf(Dataz{i},''%*c%*c%*f%*c%*c%f'') ;'; 
     disp(eval_param); 
     % str(foundPosition) = sscanf(Dataz{i},'%*c%*c%*f%*c%*c%f') ; 
     eval(eval_param); 
     foundPosition = foundPosition + 1 ; 
    end 
end 
end 

Als ich es debuggt, fand ich heraus, dass die Dataz leer &, damit es nicht zur nächsten Zeilen gehen. Ich ersetze es mit fopen, lade & etc, aber es hat nicht funktioniert.

+0

Waht ist das Format des Inhalts der Datei? –

+0

Dies ist ein Ausschnitt der Datei: *** Monte Carlo Index = 1 *** i1z = -17,3439n i2z = -24,7754p – lili94

+0

Ohne for Schleife auf K Ich habe Daten in Matlab Arbeitsbereich. Ich meine, wenn ich für jedes von k tue, aber das Problem ist, dass, wenn ich 1370 Zeit des folgenden Codes schreibe, das Matlab-Programm stundenlang in den beschäftigten Zustand geht und nicht antwortet: foundPosition = 1; für i = 1: Größe (Daten, 1) findValue = strfind (Daten {i}, 'i11p ='); if ~ isempty (findValue) i11p (gefundenePosition) = sscanf (Daten {i}, '% * c% * c% * f% * c% * c% f'); foundPosition = foundPosition + 1; Ende Ende – lili94

Antwort

0

From the Matlab help files, importieren Daten wahrscheinlich fehlgeschlagen, weil es Ihr Dateiformat nicht versteht.
Von den Hilfedateien

Name und Erweiterung der Datei, als String angegeben zu importieren. Wenn importdata die Dateierweiterung erkennt, ruft sie die MATLAB-Hilfsfunktion auf, die das zugehörige Dateiformat (z. B. Laden von MAT-Dateien oder xlsread für Tabellen) importieren soll. Andernfalls interpretiert importdata die Datei als ASCII-Datei mit Trennzeichen.

Für ASCII-Dateien und Tabellen erwartet Importdata numerische Daten in einer rechteckigen Form (das heißt, wie eine Matrix). Text-Header können erscheinen oben oder links von den numerischen Daten wie folgt:

Unter der Annahme, dass Ihre .lis Dateien Text tatsächlich begrenzt. Sie sollten das Trennzeichen in importdata Anruf anpassen, damit Matlab Ihre Datei verstehen kann.

filename = 'myfile01.txt'; 
delimiterIn = ' '; 
headerlinesIn = 1; 
A = importdata(filename,delimiterIn,headerlinesIn);