如何解决MATLAB:nx1字符的“ ismember”函数
美好的一天。
我正在尝试使用“ ismember”函数为nx1字符查找句子中的空格。
这里有一个1x1字符的工作示例:
%% Working example
StringSearchedSpaces = ' ' ; %White spaces
String1 = "Random info - at beginning-man. "+ ...
"Random info still continues. ";
Char1 = convertStringsToChars(String1);
String1Spaceidx = ismember(Char1,StringSearchedSpaces);
请注意,如果字符不是“空格”,则返回“ 0”,如果不是“空格”,则返回“ 1”。现在,我想对nx1字符应用相同的逻辑,请参见我的尝试:
%% Not Working example
String2 = ["Random info in middle one,"+ ...
"Random info still continues. ","Random info in middle two. "+ ...
"Random info still continues. "];
Char2 = convertStringsToChars(String2);
%PlanA
PlanAString1Spaceidx = ismember(Char2,StringSearchedSpaces);
%PlanB
for z=1:length(Char2)
PlanBString2Spaceidx(z,:) = ismember(Char2(z,:),StringSearchedSpaces);
end
由于某些原因,两个计划均未返回“ 0”和“ 1”值,这些值指示“空格”的位置。但是,只返回“ 0”吗?
我该怎么做才能正确接收答案,并且格式与“工作示例”相同(使用1x1字符),但现在需要nx1字符?
谢谢。
解决方法
在您的情况下,convertStringsToChars
将返回一个cell
数组。您必须在数组中的每个单元格上应用ismember
函数,例如通过使用cellfun
:
space_idx_char2 = cellfun(@(s) ismember(s,StringSearchedSpaces),Char2,'UniformOutput',false)
或者,您可以使用for循环,但是必须稍微改变方括号:
PlanBString2Spaceidx = cell(size(Char2)); % initialize empty cell array
for z=1:length(Char2)
PlanBString2Spaceidx{z,:} = ismember(Char2{z,:},StringSearchedSpaces);
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。