2013-10-30 65 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