A=[1 4 5 1 1 2 3 4 6 7 1 7 8 1 9 8 7 6 2 3 5 5;3 4 9 8 7 1 2 6 5 4 3 8 0 9 5 4 4 3 2 6 6 8];
请问,如何利用matlab语言求第一行大于等于2且第二行大于等于3的连续天数?
结果为[2 3 1 4 3];
这个就是求最大连续子序列的思路,具体看我之前问题的回答
该回答引用GPTᴼᴾᴱᴺᴬᴵ
可以使用循环和逻辑索引来实现。具体思路如下:
对A中的每一列进行逻辑索引,得到符合条件的元素的位置。
对这些位置进行循环,计算符合条件的连续天数。
代码实现如下:
A = [1 4 5 1 1 2 3 4 6 7 1 7 8 1 9 8 7 6 2 3 5 5;
3 4 9 8 7 1 2 6 5 4 3 8 0 9 5 4 4 3 2 6 6 8];
% 逻辑索引,得到符合条件的元素位置
idx = A(1,:)>=2 & A(2,:)>=3;
% 初始化变量
count = 0;
answ = [];
% 计算符合条件的连续天数
for ii = find(idx)
count = count + 1;
if ii == length(idx) || ~idx(ii+1)
answ(end+1) = count;
count = 0;
end
end
disp(answ)
输出结果为:2 3 1 4 3,符合预期。
不知道你这个问题是否已经解决, 如果还没有解决的话: