2017-09-20 11 views
1

私は4列と290,000行のMATLAB行列を持っています。 5000行ごとに、残りのデータとは別にプロットしたい新しいデータがあります。 290,000行の行列を5,000行の行列/ブロックに分割し、これらの行列をプロットするにはどうすればよいですか?MATLAB行列とプロットデータを分割する方法は?

答えて

1

ここではいくつかのオプションがあります。すべてのデータを1行または別々の行としてプロットしたいですか?

オプション1

5000行のすべてのエピソードをプロットするためにループを使用してください。ここでは、最初の列だけをプロットしていると仮定しています。例えば:

axesHandle = axes; 
axesHandle.NextPlot = 'add'; 
totalRowCount = 290000; 
episodeRowCount = 5000; 
for ii = 1:episodeRowCount:totalRowCount 
    startRowIndex = ii; 
    endRowIndex = startRowIndex + episodeRowCount - 1; 
    if endRowIndex > totalRowCount 
     endRowIndex = totalRowCount; 
    end 
    plot(YOURDATAMATRIX(startRowIndex:endRowIndex,1), 'Parent', axesHandle); 
end 

オプション2

5000のレコードの各エピソードの後に​​NaN値の行を挿入した後、一度にエピソードのコレクション全体をプロットします。もう一度私はあなたが最初の列だけをプロットしていると仮定しています。あなたは、次の行を挿入する必要がある場所が既に行わ挿入によって影響を受けないように行を挿入するときにここでのトリックは、マトリックスの端から逆方向に動作することである。

totalRowCount = 290000; 
episodeRowCount = 5000; 
lastInsertRowIndex = floor(totalRowCount/episodeRowCount) * episodeRowCount; 
for ii = lastInsertRowIndex:-episodeRowCount:1 
    insertRowIndex = ii + 1; 
    YOURDATAMATRIX = vertcat(... 
     YOURDATAMATRIX(1:insertRowIndex,:), ... 
     [ NaN NaN NaN NaN ], ... 
     YOURDATAMATRIX(insertRowIndex:end,:)); 
end 
plot(YOURDATAMATRIX(startRowIndex:endRowIndex,1)); 

オプション3

プロットする列を5000 x N行列に変更し、plotコマンドでこの新しい行列を使用します。例:

reshapedFirstColumn = reshape(YOURDATAMATRIX(:,1), 5000, 290000/5000); 
plot(reshapedFirstColumn); 
関連する問題