2014-04-26 75 views
1

我有一個包含多個問題一個txt文件,和一個答案(真/假),這樣閱讀文本文件到MATLAB

  1. 球被平方。 F
  2. 我的電腦速度很慢。 Ť 等

我想使一個函數[Q,A] = load.test(filename)其中

  1. Q =含N串A單元陣列。
  2. A = N個元素的邏輯向量。

我嘗試過不同的方法,但似乎沒有工作。

[Q,A] = textread(filename,'%s %s'); 
This output here is the closest I've come: 
    'A' 
    'is' 
    'F' 
    'My' 
    'is' 
    'T' 

我需要做什麼?

+0

都沒有像這裏的問題面前號碼? – thewaywewalk

回答

2

如果你有一個以上的.每一句話,塞拉斯的解決方案將無法工作。你也是這樣鬆開點。你也可以做到這一點,如下所示:

fid = fopen('questions.txt'); 
data = textscan(fid, '%s','delimiter','\n') 
fclose(fid); 

Q = cellfun(@(x) x(1:end-2), data{1}, 'uni',0); 
A = cellfun(@(x) x(end),  data{1}, 'uni',0); 

或者使用:

A = cellfun(@(x) x(end) == 'T',data{1}); 

,以獲得所需的邏輯載體。


對於內容的文本文件:

的地球是一個磁盤。 F

42是一切的答案。牛逼

Q{1} = The globe is a disk. 

Q{2} = 42 is the answer to everything. 

A = 

    0 
    1 
+0

謝謝,究竟應該如何,但'uni'代表什麼? – user2011560

+0

'...,'uni',0)'是'...,'UniformOutput',false)'的縮寫形式,並告訴cellfun以單元陣列的形式進行輸出。這是必要的,因爲所有的句子都有不同的長度,並且不可能放出char矩陣。在'A'的第二種情況下,輸出可以是'0'或'1',並且可以按簡單的向量排列,'UniformOutput','false'不是必需的。 – thewaywewalk

1

按照documentation如果你知道這些字符串由分開,你應該使用textscan代替textread

「」或其他特定的分隔符,你可以做

parsed = textscan(file, '%s %s', 'delimiter', '.');