如何找到数组中重复序列的数量?

26日视图(30天)
一个序列
011011011001111011111001001011001011011001101001011011001111111。
我在寻找一个序列的111以上。但扫描可以通过考虑前三个元素(011)和第二三个要素(011)等等。
这是
011011011001111011111001001011001011011001101001011011001111111年。
因此四个事件。同样为1111。感谢帮助。

接受的答案

kowshik Thopalli
kowshik Thopalli 2017年3月5日
编辑:kowshik Thopalli 2017年3月5日
你可以做以下。将序列作为一个字符串。将字符串分成一个细胞,每个细胞含有3位数。然后使用strfind。但这个假定序列的长度你希望找到总长度是一个因素。你的最后一行说1111年序列的长度是63。63不能被4整除。我认为你喜欢做这只到一60序列。
序列=“011011011001111011111001001011001011011001101001011011001111111”;
要求=“1111”;len_required =长度(必需);
len_sequence =长度(序列);
end_point = len_sequence - mod (len_sequence len_required);
Cell_sequence = cellstr(重塑(len_required序列(1:end_point), []) ');%这将把序列每个细胞都有3位数
Find_sequence = cellfun (@ (x) strfind (x,要求),Cell_sequence,“UniformOutput”、假);
输出=总和(cell2mat (Find_sequence))
希望这可以帮助!
3评论
图像分析
图像分析 2017年3月5日
这是他给演示。除非你想要检测的模式 重叠 的方式,而不是在“跳跃”4。就像11111年将是1111的实例。请解释一下。

登录置评。

答案(1)

图像分析
图像分析 2017年3月5日
你可以用柱状图():
%定义数据。
s =“011011011001111011111001001011001011011001101001011011001111111”;
%计算出每个3字符串出现的次数。
3,s3 =重塑(年代,[])”
n3 = arrayfun (@str2double s3)
数量= n3 (: 1) * 100 + n3 (:, 2) * 10 + n3 (:, 3)%转换为数字。
h =直方图(数字,“BinEdges”0:112)%计算每个数字出现的次数。
网格;
%完成了!
%检查,让我们打印出来到命令窗口。
本= 1:长度(h.Values)
如果h.Values(本)> 0
流(' % 3.3 d出现% d *。\ n”h.Values h.BinEdges(本)(本));
结束
结束
它打印出:
001年7次。
011年9倍。
101年1 *。
111年了4次。
4评论
kowshik Thopalli
kowshik Thopalli 2017年3月5日
图像分析,谢谢你所有的答案。我已经通过他们多年来非常受益。我知道这不是正确的地方但你能回答我的一个关于图像数据存储的问题。我希望加入两个图像数据存储。

登录置评。

类别

找到更多的在输入命令帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!