我有一个MATLAB矩阵,该矩阵有4列和290,000行。每5000行我都有新数据,我想与其余数据分开绘制。如何将具有290,000行的矩阵分成5,000行的矩阵/块并绘制这些矩阵?
您在这里有一些选项,这些选项归结为 - 您想将所有数据绘制为一行或单独的行吗?
选项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 );