2013-05-11 34 views
0

我正在使用MATLAB GUI。將文本文件讀取爲數字(表)

所以,我希望用戶從他們的計算機瀏覽自己的表。瀏覽完成後,完整路徑將被寫入靜態文本,並且表格(他們瀏覽)將會出現。

問題是,文件;它讀取字符串,而不是數字。

那麼,如何讀取文本文件的數據爲數字而不是字符串?我必須寫什麼腳本?

+0

什麼是文件格式?你有沒有簽出'dlmread'和'csvread'? – 2013-05-11 12:07:04

+0

它是* .txt,你有什麼想法嗎? – 2013-05-11 12:08:37

+0

您是否閱讀過關於textscan格式的描述? – Oleg 2013-05-11 12:29:59

回答

2

如果你有,你可以使用命令textscan(...)導入該文件TXT小區內的txt文件:

電池= textscan(的fopen( 'file.txt的'),「選項「);

'cell'是單元格,'file.txt'是txt文件名。 'options'是一個字符串,用於定義導入格式('%s'導入字符串,'%f'導入浮動,...)和分隔符的類型。以這種方式導入的所有數據都存儲在單元格中並且要加入單元格的第n個元素,您必須使用方括號{}(例如單元格{1}來加入第一個元素)。

如果 'file.txt的' 包含下列值:

1.2 2.3

3.4 4.5

用下面的代碼

cell = textscan(fopen('file.txt'), '%f'); 
var = cell{1}; 
在變量 'VAR'

存儲數字,但它是一個列向量而不是矩陣/表,它必須重新排序:var = [1.2; 2.3; 3.4; 4.5]。

用下面的代碼(這是有點複雜,但它不需要有關表的尺寸的先驗知識以重新排序數據):

cell = textscan(fopen('file.txt'), '%s', 'delimiter', '\n'); 
var = cell{1}; 

「變種」是一個單元陣列,每個元素包含一個以字符串格式(var {1} ='1.2 2.3',var {2} ='3.4 4.5')文檔的行(感謝分隔符)。如果N「變種」的長度,用從1週期到N您可以加入不同的字符串,將它們轉換並存儲在這樣一個矩陣:

M = length(strread(var{1}, '%f')); %column number 
N = length(var); %row number 
a = zeros(N,M); %inizialization 
for n = 1:N 
a(n,:) = strread(var{n}, '%f'); 
end* 

現在「一」是具有數字的矩陣:a = [1.2,2.3; 3.4,4.5]對分析和繪圖有用。

+1

不要忘記用'fclose'關閉文件。 – 2013-05-21 13:15:04

1

一個快速的方法來做到這一點是使用textscan功能:

dataRead = textscan(fid, format); 

但是,你必須指定其將被用於讀取文件的格式。如果您使用'%d'讀取整數,如果您正在讀取浮點數,請使用'%f'(有關格式及其用法,請參閱)。 所以,如果文本文件必須用空格分隔100的整數值,你將不得不使用:

fid = fopen('file.txt', 'r'); 
dataRead = textscan(fid, '%d'); 
fclose(fid); 

然後,DATAREAD將包含100X1矩陣的值讀取一個1x1的細胞。

+0

非常感謝您的回答! – 2013-05-12 14:23:29