2016-04-25 9 views
0

データセットのサイズは11490x1です。データは0.25秒(すなわち、4時間)毎に記録される。したがって、1秒は4つのデータポイントを占めます。ここでの目標は、3秒ごとにサブセットをさらに作成することです。つまり、データを3秒ごとに見て分析する必要があります。例えば:[1 2 3 4 5 6 8 2 4 2 4 3 2 4 2 5 2 5 24 2 5 1 5 1]のようなデータがあれば、サブセット[1 2 3 4 5 6 8 2 4 2 4 3]など...データセットをサイズnのビンに分割します。matlab

助けていただければ幸いです。

+1

あなたはあなたのベクトルをマトリックスに再形成することを可能にする 'reshape'コマンドを探していると思います。(ベクトルを0で埋め込むか、そのマトリックスが適合する)。 – GameOfThrows

+0

私は形を変えようとしましたが、データに小数点以下が含まれてはならないというエラーが表示されます。使用しているデータに0.2や0.1などの点があります – DashD

+0

reshapeは小数点以下を返します。ダンの答えを見て、彼はそれをカバーしています:D – GameOfThrows

答えて

2

これは実際にデータを分析する方法によって異なります。 mod(numel(data),12)==0

ことを第三の方法は、あなたの行列を破るためにあるかもしれないのでmat2cellかでを使用してセル配列にアップdataをパディングした後

n = 4*3; 
breaks = 0:n:numel(data) 
for i = 1:numel(breaks)-1 
    sub = data(breaks(i)+1:breaks(i+1)); 
    %// do analysis 
    %// OR sub{i} = data(breaks(i)+1:breaks(i+1)); 
end 

ベクトル化されたアプローチは、reshape(data,[],12)を使用する可能性があります:最も簡単な方法は、ループを使用することです上記のようなforループではなく、代わりにsub=...の代わりにsub{i}=...

+0

出力サブがサイズ1x13である理由はありますか?私はサブのインデックスを使用しようとすると、エラーで実行されます。私はforループでsub(1、i)を使用しました – DashD

+0

編集されたバージョンが正しいインデックスを与えています、今、コードはサブの各値を上書きしています。 – DashD

+0

前述のように、 'sub {i} = ...'を使うか、ループの代わりに 'reshape'を使います。 'sub {i-1} = ...'の代わりに 'sub {i} = ...'を呼び出せるようにループを再度編集しました – Dan

関連する問題