我想知道每个时期的革命次数。例如,时段1中的转数是3,并且时段2中的转数再次是3.但是不一定每个时段中的转数将是相同的。请参见示例:
我尝试使用for
循环,但它可以使用一段时间,有什么方法可以帮助我吗?
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];
换句话说,在y1
时,如何知道y2
每期中y2==5
的总数?
find(y1(:,:)==1&y2==5)
答案 0 :(得分:1)
这是一个想法:
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
结果是:
rev =
3
3