如何拆分MATLAB矩阵和绘图数据?

时间:2017-09-20 21:45:33

标签: matlab matrix plot

我有一个MATLAB矩阵,有4列和290,000行。每5000行我有新数据,我想与其余数据分开绘制。如何将具有290,000行的矩阵拆分为5,000行的矩阵/块并绘制这些矩阵?

1 个答案:

答案 0 :(得分: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 );