2016-10-05 15 views
1

各期間の回転数を知りたい。例えば、期間1における回転数は3であり、期間2における回転数は再び3である。しかし、必ずしも各期間の回転数が同じであるとは限らない。 、私はforループを使用しようとしたが、それは一の周期のために働く特定の期間の回転数

Example

あなたは私を助けてくださいすることができますどのような方法があります:例を参照してくださいしてください?言い換えれば

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]; 

は、どのように私はy2y2==5の各期間におけるy1からのものの合計数を知ることができますか?ここで

find(y1(:,:)==1&y2==5) 
+0

すでに何をしましたか?あなたのコードを投稿してください – obchardon

+0

あなたのコードを投稿してください_ _と_ **小さなサンプルデータセット...誰もあなたなしであなたを助けることはできません。 – Hoki

+0

マトリックスが追加されました –

答えて

1

はそのための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 
+0

ありがとうございます。本当に感謝しています。 –

+0

毎回の期間の長さを知りたいのであれば、どのように追加するのですか? (つまり、期間1の回転数は3で時間は7秒、回転数2は3回転、時間は7秒です) 画像をクリアに更新しました。 –

+0

答えに 'counts'変数を詳しく見てみましょう。あなたが探しているものだと思います。 – EBH

関連する問題