2009-09-21 22 views
1

我有一個文本文件(C:\ input.txt中),其中有:這是什麼錯誤[從Matlab中的文本文件讀取輸入]?

2.0 4.0 8.0 16.0 32.0 64.0 128.0 256.0 512.0 1024.0 2048.0 4096.0 8192.0 

在Matlab中,我想它讀成:

data = [2.0 4.0 8.0 16.0 32.0 64.0 128.0 256.0 512.0 1024.0 2048.0 4096.0 8192.0] 

我試過這段代碼:

fid=fopen('c:\\input.txt','rb'); 
data = fread(fid, inf, 'float'); 
data 

,但我得到一些垃圾值:

data = 

    1.0e-004 * 

    0.0000 
    0.0015 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0001 
    0.0239 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0066 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0000 
    0.0016 
    0.0000 
    0.0000 
    0.0276 
    0.0000 
    0.3819 
    0.0000 
    0.0000 

錯誤在哪裏?

回答

8

fread僅用於讀取二進制文件!
文本文件中的等價物是fscanf,使用方法如下:

fid = fopen('c:\\input.txt','rt'); 
data = fscanf(fid, '%f', inf)'; 
fclose(fid); 

或者在你的情況下,只需使用load

data = load('c:\\input.txt', '-ascii'); 


有MATLAB中許多其他的方法從文件中讀取文本數據:

2

你的文件是一個文本文件,所以你應該打開它進行文本閱讀:

fid=fopen('c:\\input.txt','rt'); 

然後,對於閱讀,我發現TEXTSCAN是比FREAD/FSCANF更強大(它們之間的差異都歸納爲here

data = textscan(f, '%f') 

返回一個單元格數組。你可以得到的內容與

>> data{1} 

ans = 

     2 
     4 
     8 
     16 
     32 
     64 
    128 
    256 
    512 
    1024 
    2048 
    4096 
    8192 

TEXTREAD比TEXTSCAN更容易使用,但根據文件現在已過時。