首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特定时期的革命次数

特定时期的革命次数
EN

Stack Overflow用户
提问于 2016-10-05 12:06:21
回答 1查看 55关注 0票数 1

我想知道每一段时间里革命的次数。例如,第一阶段的革命次数是3次,第二阶段的革命次数又是3次,但不一定每个时期的革命次数是相同的。请参阅示例:

我试过使用for循环,但它可以工作一段时间,有什么办法可以帮助我吗?

代码语言:javascript
复制
x = 0:33;
y1 = repmat([0 1].',17,1);
y2 = [0; 0; 0; 0; 0; 0; 5; 5; 5; 5; 5; 5; 5; 0; 0; 0; 0; 0; 0; 0;...
    5; 5; 5; 5; 5; 5; 5; 0; 0; 0; 0; 0; 0; 0];

换句话说,我如何才能知道y1y2的每一个周期中的总数量,当y2==5

代码语言:javascript
复制
find(y1(:,:)==1&y2==5)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-05 15:30:57

这里有一个想法:

代码语言:javascript
复制
x = 0:33;
y1 = repmat([0 1].',17,1);
y2 = [0; 0; 0; 0; 0; 0; 5; 5; 5; 5; 5; 5; 5; 0; 0; 0; 0; 0; 0; 0;...
    5; 5; 5; 5; 5; 5; 5; 0; 0; 0; 0; 0; 0; 0];

d = diff([y2(1) y2.']); % find all switches between diferent elements
len = 1:numel(y2); % make a list of all indices in y2
idx = [len(d~=0)-1 numel(y2)]; % the index of the end each group
counts = [idx(1) diff(idx)]; % the number of elements in the group
elements = y2(idx); % the type of element (0 or 5)
n_groups = numel(idx); % the no. of groups in the vector

rev = zeros(sum(elements==5),1);
c = 1;
for k = 1:n_groups
    if elements(k)==5
        rev(c) = sum(y1(idx(k)-counts(k)+1:idx(k)));
        c = c+1;
    end
end

结果是:

代码语言:javascript
复制
rev =
     3
     3
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39873511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档