2011-11-27 160 views
0

如何將以下數據讀入MATLAB矩陣。以下數據存儲在一個文件中。如何從MATLAB中的特定語法讀取文件中的數據

5.1,3.5,1.4,0.2,Point1 
4.9,3.0,1.4,0.2,Point2 
4.7,3.2,1.3,0.2,Point3 
4.6,3.1,1.5,0.2,Point4 
5.0,3.6,1.4,0.2,Point5 
5.4,3.9,1.7,0.4,Point6 
4.6,3.4,1.4,0.3,Point7 
5.0,3.4,1.5,0.2,Point8 
4.4,2.9,1.4,0.2,Point9 
4.9,3.1,1.5,0.1,Point10 
5.4,3.7,1.5,0.2,Point11 
4.8,3.4,1.6,0.2,Point12 

它的四個浮點數用逗號分隔,後跟一個字符串。

我試圖使用下面的代碼,但它似乎不能正常工作。

fid = fopen("file.txt", 'r'); 

我想在每一行成numberoflines×4矩陣和所述字符串中的每個線到一個字符串數組四個浮點值。

fid = fopen('iris.data'); 

tline = fgetl(fid); 
while ischar(tline) 
    disp(tline) 
    tline = fgetl(fid); 
    scanf(tline,'%f,%f,%f,%f,%15c'); 
end 

fclose(fid); 

我是Matlab新手,我在這裏做的事情非常錯誤,請耐心等待。

謝謝, 薩加爾。

+0

'的fopen( 「file.txt的」, 'R');'不應該他們倆是''',而不是與' 「'? – Shahbaz

+0

fopen工作正常,我得到一個有效的fid。問題是我不知道如何讀取值並將它們輸入矩陣,正如我在原始問題 – user1067334

回答

2

嘗試這一行:

vec = sscanf(tline(1:end), '%f,%f,%f,%f,%*s') 

應該工作,視

+0

fid = fopen('iris.data 「); IMPORTDATA =零(150,4); I = 1; TLINE = fgetl(FID); 而ischar(TLINE) ImportData(i,:) = sscanf(tline(1:end),'%f,%f,%f,%f,%* s'); disp(ImportData(i,:)); disp(size(ImportData(i,:))); tline = fgetl(fid); i = i + 1;結束 fclose(fid); 但是,文件中每行的第五個元素是一個字符串,它仍然沒有被讀取或複製到Matrix中。如果我改變了ImportData = zeros(150,4);導入數據=零(150,5);我得到這個錯誤 ???下標分配尺寸不匹配。 任何幫助嗎?謝謝。 – user1067334

+0

是的,你不能在Matlab中混合使用數據類型。因此,您無法將您的字符串存儲在同一個變量中。但是由於你的點數是按升序編號的,你可以將你的迭代器值i作爲第五個元素存儲。沒有看到存儲字符串的重點 - 你無法用這些信息做任何事情...... – Maecky

+0

Yaa,你有一個點。無論如何,我想我並不需要這個字符串。謝謝 :) – user1067334

相關問題