2013-10-30 95 views
0

在matlab和m中的新嘗試從MATLAB輸入gui將由用戶輸入並將該句子分成單詞,但我需要把它們作爲字母,因爲我使用機器人寫他們。這封信將發送給這些機器人。我使用兩個機器人,例如當我按下按鈕matlab函數時,在文本中輸入'lou reed'時,將這2個單詞保存到不同的字符數組中,以便我可以將字母c(i)這樣寫入併發送給處理。迄今爲止,我寫了這些,但ım卡住了。matlab將句子分成單詞

c = char(get(handles.edit1,'String')); 
int count1; 
int count2; 
char word1; 
char space=" "; 

for i=1:length(c) 
    int t = isequal(c(i),space); 
    if(t==0) 
     count1=count1+1; 
     word1=;%ım trying to add the char here to find the new word 
    else 

    end 
end 

我不知道該怎麼辦ı搜索但我找不到有用的可能ı看起來不正確。 什麼將是有益的,thankss

回答

2

允許使用哪些字符?首先,你應該刪除所有不允許的字符(用空格字符替代它們)。之後就是這樣:

str = ' Once upon a time '; 
words_in_str = textscan(str,'%s'); 
words_in_str{1} 
+0

這很好,謝謝 – amadeus

0

你可以簡單地用

mystring = 'Hello Cruel World'; 
spaces = find(mystring==' '); 

發現在你的字符串中的空格字符現在的變量spaces是一個矢量指向到每個斷字都是。如果你想打破這一成的話,你可以使用

mystring = 'Hello Cruel World'; 
wordboundaries = [0,find(mystring==' ')]; 
wordlen = diff([wordboundaries,length(mystring)+1])-1; 
numwords = length(wordboundaries); 
for w = 1:numwords 
    idx = wordboundaries(w) + (1:wordlen(w)); 
    word{w} = mystring(idx); 
end 
display(word); 

現在word是包含單個單詞的單元陣列。

+0

正如其他答案所證明的那樣,我採取了最幼稚的方法解決這個問題。我不習慣在matlab中使用字符串,只有數字。我犯了把字符串當作數字的錯誤,並以這種方式攻擊問題。如果我可以倒下自己的答案,我可能會這樣做。 :) – nispio

+0

ım不會這樣做:)但ım實際上丟失了,strsplit @craigim很不錯,但ım使用2009版本和ı正在尋找一個簡單的答案,就像我們會在java中做的事情是matlab混淆了我。我們只需要知道如何用空格將句子拆分爲單詞並將每個單詞放入字符數組中。 – amadeus

+0

我建議@francesco給出的答案。它會將每個單詞放入單元格數組中的單元格中。將每個單詞放在字符數組中的問題是,您必須事先知道您期待的單詞數量。或者你必須創建一個char矩陣,其寬度等於最長單詞的長度。如果你真的想要,我可以編輯我的代碼,把它放在一個char矩陣,而不是一個單元格數組。 – nispio

2

如果你有MATLAB的新版本(比2012A我認爲更大的),你可以使用strsplit

characterString = 'lou reed'; 
C = strsplit(characterString); 

C的溫度將是一個單元陣列,其中每個元素一個單獨的詞。

+0

如果你有'strsplit',這個答案比我這樣做更有意義。 :) – nispio