Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String MATLAB字符串处理_String_Matlab - Fatal编程技术网

String MATLAB字符串处理

String MATLAB字符串处理,string,matlab,String,Matlab,我想计算字符串中每个单词的频率。为此,我需要将字符串转换为单词数组(矩阵) 例如,以“你好,世界,我可以请你约会吗?”为例,将其转换为 ['Hello' 'world,' 'can' 'I' 'ask' 'you' 'on' 'a' 'date?'] 然后我可以检查每个条目,并计算特定单词的每个外观 有没有一种方法可以在MATLAB中生成单词数组(矩阵),而不仅仅是字符数组?正则表达式 s = 'Hello world, can I ask you on a date?' slist = re

我想计算字符串中每个单词的频率。为此,我需要将字符串转换为单词数组(矩阵)

例如,以
“你好,世界,我可以请你约会吗?”
为例,将其转换为

['Hello' 'world,' 'can' 'I' 'ask' 'you' 'on' 'a' 'date?']
然后我可以检查每个条目,并计算特定单词的每个外观

有没有一种方法可以在MATLAB中生成单词数组(矩阵),而不仅仅是字符数组?

正则表达式

s = 'Hello world, can I ask you on a date?'
slist = regexp(s, '[^ ]*', 'match')
屈服


下面是一个更简单的
regexp

words = regexp(s,'\w+','match');
\w
这里指任何可以用文字(包括下划线)显示的符号


请注意,最后一个问号将不包括在内。你真的需要它来计算单词吗?

另一种方法是这样的:

s = cell(java.lang.String('Hello world, can I ask you on a date?').split('[^\w]+'));
也就是说,通过创建一个Java字符串对象并使用其方法来完成这项工作,然后将其转换回字符串的单元格数组。这不一定是完成这么简单的工作的最佳方法,但是Java有一个丰富的字符串处理方法库&可以派上用场的类


Matlab能够在很短的时间内转换成Java,这一功能有时会派上用场——例如,在解析和编写XML时。

你能详细介绍一下“([^\][^\]*)”的含义吗?现在我想起来,regexp(s),([^\][^\]*),“match”)是不必要的复杂。regexp(s,“[^]*”,“match”)执行您想要的操作。正则表达式[^]*匹配任意数量的非空格字符,matlab函数regexp将这些匹配作为单元格数组返回。已编辑响应。在这种情况下,“match”参数是什么意思?默认情况下,regexp返回匹配字符串的位置。因此,此参数用于返回匹配项。仅供参考,在Matlab中,您要求的内容称为“字符串单元格”,并写为:
{'Hello''world,'can''I''在''日期询问''you''吗?}
。另外,我认为yuk的解决方案更合适,因为它将返回“date”而不是“date?”。
s = cell(java.lang.String('Hello world, can I ask you on a date?').split('[^\w]+'));