1
A
回答
1
这会给你所有这些子序列的起始索引:
n = 4;
indices = find(conv(double(diff(A)>0), ones(1,n-1), 'valid')==n-1);
例子:
A = [8 9 1 3 7 18 9 10 11 12 5];
产生
indices =
3 7
所以子序列将A(indices(1) + (0:n-1))
,A(indices(2) + (0:n-1))
等:
>> A(indices(1) + (0:n-1))
ans =
1 3 7 18
>> A(indices(2) + (0:n-1))
ans =
9 10 11 12
2
strfind
让你不仅在字符串中寻找模式,也是数字阵列。您正在寻找的模式是连续小三阳的区别:
A = [8 9 1 3 7 18 19]
sequenceLength = 4;
startIdx = strfind(sign(diff(A)), ones(1,sequenceLength-1));
sequences = A(bsxfun(@plus,startIdx',0:sequenceLength-1))
sequences =
1 3 7 18
3 7 18 19
注:strfind
认定重叠的间隔。如果你想要独家间隔,你可能想看看regexp
。
3
另一种解决方案:
A = [8 9 1 3 7 18 9 10 11 12 5];
len = 4;
subseqs = hankel(A(1:len), A(len:end));
idx = all(diff(subseqs) > 0);
out = subseqs(:,idx);
相关问题
- 1. for循环不能找到在阵列
- 2. 循环中的序列化阵列
- 3. 整数到布尔值/位阵列,而不循环
- 4. 移阵列元件,而不循环
- 5. 循环尽管在另一个阵列阵列和存储值
- 6. 在阵列循环
- 7. 值存储在不同的阵列而不是单个阵列
- 8. 找到阵列的while循环最小值从MySQL查询
- 9. Angular 4 |尽管多维阵列循环
- 10. 在HAML中循环多个阵列
- 11. 在每个阵列中循环使用
- 12. 'while'循环中的阵列
- 13. 循环多个阵列
- 14. 如果循环在列表中找到一个值
- 15. 我如何循环到这个阵列
- 16. 在matlab中查找最少的几列而不用for循环
- 17. 在阵列中找到的最大值
- 18. 绘图的for循环的值(阵列)
- 19. 循环PHP阵列
- 20. 阵列Foreach循环
- 21. jquery,循环阵列
- 22. 阵列2D循环
- 23. 最后一个索引阵列,而不循环
- 24. 传递值从一个循环到另一个阵列
- 25. 阵列在for循环
- 26. ZSH循环只在阵列
- 27. 循环豆阵列在JSTL
- 28. 在选择循环阵列
- 29. 得到一个循环结果在vb.net的序列列表中
- 30. 循环阵列矩阵matlab
好看出,'bsxfun'部分 – 2014-11-21 17:43:52