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. PHP:找一個陣列內的陣列,不用循環
- 3. 循環中的序列化陣列
- 4. 整數到布爾值/位陣列,而不循環
- 5. PHP循環,而不是空陣列
- 6. 移陣列元件,而不循環
- 7. 循環到JSON值添加到陣列
- 8. 循環儘管在另一個陣列陣列和存儲值
- 9. 要找到一個陣列的序列到另一個陣列
- 10. 不循環的循環和陣列
- 11. 在陣列循環
- 12. 值存儲在不同的陣列而不是單個陣列
- 13. 在PHP中循環陣列
- 14. 找到陣列的while循環最小值從MySQL查詢
- 15. Angular 4 |儘管多維陣列循環
- 16. 添加到陣列循環
- 17. 循環的陣列
- 18. 在HAML中循環多個陣列
- 19. 在每個陣列中循環使用
- 20. 'while'循環中的陣列
- 21. 循環多個陣列
- 22. PHP:循環兩個陣列
- 23. 如果循環在列表中找到一個值
- 24. 我如何循環到這個陣列
- 25. 使用for循環找到陣列列表中的第一個空插槽
- 26. BackgroundWorker的陣列在一個循環
- 27. 在matlab中查找最少的幾列而不用for循環
- 28. 在陣列中找到的最大值
- 29. 在隊列循環中找到最少
- 30. 繪圖的for循環的值(陣列)
好看出,'bsxfun'部分 – 2014-11-21 17:43:52