2012-10-09 29 views
1

我有包含以下格式的數據文件:Matlab的 - 如何通過閱讀了大量整數列的文件textscan

filename.jpg,132,234,234,345,4555,23333,344,...,333 

我已經把...標記的事實,我有一個長序列的整數。在每一行我總共有132個整數。

我想讀取矩陣中的數字,使用132列和行數與輸入文件中的一樣多。如何使用textscan函數讀取這些數據?我應該如何指定這種格式?我也想將第一列文件名讀入單元格數組中。

因爲我已經使用了下面的語法單元陣列:

fid = fopen(inputPath); 
buffer = textscan(fid, '%s%*[^\n]', 'Delimiter', ','); 

close(fid); 

回答

2

你可以按照你的第一次調用textscancsvread代替:

A = csvread('data.txt', 0, 1); 

最後兩個參數指定的行和列數據開始的地方。你的單元格將包含第一列的字符串,A包含一個包含數據的矩陣。

否則,如果你真的要使用textscan,創建格式字符串的旁白:

fid = fopen('data.txt', 'r'); 
% crate a string with as many %f as you need 
fmt = ['%s' repmat('%f', 1, 132)]; 
buffer = textscan(fid, fmt, 'Delimiter', ','); 
names = buffer{1}; 
A = [buffer{2:end}]; 
fclose(fid); 
+0

當我嘗試使用csvread我收到以下錯誤:使用dlmread文件之間(線139) 不匹配錯誤和格式字符串。 麻煩從文件(行1U,2U字段)==> _01_01_041_00.png讀數,345,211,406,206,393,239,370,285,411,280,331,300,429,279,343,313,421,296,360,325,412,314,394,326,320,203,358,194,397,190,418,191,338,196,408,189,328,198,348,193,403,190,413,190,381,20 錯誤csvread(線48) 米= dlmread(文件名, '',R,C); – Simon

+0

@Simon很好,像我這樣使用它 - 還有兩個額外的參數。 – angainor