質問: 同じ秒数のデータを等間隔に分割したい 添付したファイルのように0.1820secが8つ続いているデータがあります。 これに対して、0.0001/8secごと等間隔に時間を加え、同じ時間のデータをずらしたいと考えています。 さらに、0.1830secのようにデータ数が16個続いてるデータが連続しているものもあります。 その場合は、0.0001/16secごと等間隔に時間を加え、同様にずらしたいです。 実際は膨大なデータがあり、これを実現できずに困っています。 よろしくお願います。
回答: なかなか綺麗にやる方法を思いつかなかったので、思い切って泥臭くやってみます。 load('test.mat') [c,ia,ic] = unique(test); % ia : 各要素の開始位置が入ります。 disp(ia); % 連続数を diff で計算するために最後に数値を追加してきます。 idx = [ia;length(test)+1]; nofseq = diff(idx); % それぞれの要素の連続数が分かります。 disp(nofseq); seconds2add = zeros(size(test)); % 各行に追加する秒数用の配列確保 for ii=1:length(nofseq) % それぞれ個別に処理 % 0 - 0.001 の間を連続回数+1で分割 % (連続個数+1 にしないと不自然な感じがしました) tmp = linspace(0,0.001,nofseq(ii)+1)'; seconds2add(ia(ii):ia(ii)+nofseq(ii)-1) = tmp(1:nofseq(ii)); end newtest = test+seconds2add; % 実際に足し合わせてみます。 format shorte % 表示変更 [test, seconds2add,newtest] % コマンドウィンドウで表示 plot(newtest) % プロットがやっぱり確認しやすい 実行するとコマンドウィンドウで結果を確認できると思いますが、どうでしょう。 1列目:test 2列目:seconds2add (追加数する秒数) 3列目:恐らく目的のデータ です。 1.8200e-01 0 1.8200e-01 1.8200e-01 1.2500e-04 1.8212e-01 1.8200e-01 2.5000e-04 1.8225e-01 1.8200e-01 3.7500e-04 1.8237e-01 1.8200e-01 5.0000e-04 1.8250e-01 1.8200e-01 6.2500e-04 1.8262e-01 1.8200e-01 7.5000e-04 1.8275e-01 1.8200e-01 8.7500e-04 1.8287e-01 1.8300e-01 0 1.8300e-01 1.8300e-01 6.2500e-05 1.8306e-01 1.8300e-01 1.2500e-04 1.8312e-01 1.8300e-01 1.8750e-04 1.8319e-01 1.8300e-01 2.5000e-04 1.8325e-01 1.8300e-01 3.1250e-04 1.8331e-01 1.8300e-01 3.7500e-04 1.8337e-01 1.8300e-01 4.3750e-04 1.8344e-01 1.8300e-01 5.0000e-04 1.8350e-01 1.8300e-01 5.6250e-04 1.8356e-01 1.8300e-01 6.2500e-04 1.8362e-01 1.8300e-01 6.8750e-04 1.8369e-01 1.8300e-01 7.5000e-04 1.8375e-01 1.8300e-01 8.1250e-04 1.8381e-01 1.8300e-01 8.7500e-04 1.8387e-01 1.8300e-01 9.3750e-04 1.8394e-01 1.8400e-01 0 1.8400e-01 1.8400e-01 1.2500e-04 1.8412e-01 1.8400e-01 2.5000e-04 1.8425e-01 1.8400e-01 3.7500e-04 1.8437e-01 1.8400e-01 5.0000e-04 1.8450e-01 1.8400e-01 6.2500e-04 1.8462e-01 1.8400e-01 7.5000e-04 1.8475e-01 1.8400e-01 8.7500e-04 1.8487e-01