matlab - MATLAB:nx1 Char 的“ismember”函数
问题描述
再会。
我正在尝试使用 nx1 Char 的“ismember”函数在句子中查找空格。
这里我有一个 1x1 Char 的工作示例:
%% 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 Char 应用相同的逻辑,请参阅我的尝试:
%% 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
推荐阅读
- javascript - 如何使用 jQuery 创建一个基于在线的 HTML 源代码编辑器,如 W3Schools.com 中的那个?
- dsl - 并行运行器如何运行功能文件
- ios - 在 iOS 设备上使用 Flutter 和 Firebase 使用 Firebase Cloud Messaging 解析数据消息
- linkedin - 如何在个人网站上添加 LinkedIn 个人资料徽章?
- javascript - javascript中生成的href第二次没有命中mvc动作
- sql - 如何在postgres过程中将浮点数截断为两位小数
- c - 输出两个二进制字符串相加的结果,它们的十进制值在 C 中
- javascript - jQuery.Deferred 异常:$(...).mark 不是函数 TypeError: $(...).mark 不是函数
- python - 如何将具有数字日期的数据框列更改为文本形式?
- ios - 如何停止在 iOS Objective c 中调用谷歌地图中的特定代码行?