如何在数组中找到模式?

179条意见(过去30天)
如何从一个数字数组中找到一个模式?
例如,有一个数字数组B和模式(或掩码)a。如何在B中找到模式位置?
>> a = [1 2 3];
b = [1,2, 2,3, 3,4];
预期产量:4,9

接受的答案

MathWorks支金宝app持团队
没有内置的MATLAB函数可以执行所描述的精确操作。
但是,你可以使用一个for循环和内置的"all"和"find"函数来创建一个自定义函数来输出你想要的行为:
>>函数输出=模式(B, A)
>> SIZE = length(B) - length(A);
>> match = 0 (1, SIZE);
>>i = 1:大小
>> match(i) = all(B(i:i-1+length(A)) == A);
>>结束
>> output = find(match == 1);
>>结束
1评论
肖恩·杨
肖恩·杨 2019年2月6日
要正确循环,使SIZE = length(B) - length(A) + 1;

登录发表评论。

答案(1)

克劳迪奥。
克劳迪奥。 2020年5月14日
输出= strfind (B);
2的评论
克劳迪奥。
克劳迪奥。 2021年1月14日
没有例外。如果你有一个特殊的要求,你可以提交它来评估具体的情况
str = sprintf ('用于\t Karel \t K的特殊字符串');
模式= sprintf (' \ t ');
idxTab = strfind (str,模式)
idxTab =
20 28

登录发表评论。

下载188bet金宝搏


释放

R2017b

社区寻宝

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!