Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何拆分MATLAB矩阵并绘制数据?_Matlab_Matrix_Plot - Fatal编程技术网

如何拆分MATLAB矩阵并绘制数据?

如何拆分MATLAB矩阵并绘制数据?,matlab,matrix,plot,Matlab,Matrix,Plot,我有一个MATLAB矩阵,它有4列和290000行。每5000行我就有一个新的数据,我想与其他数据分开绘制。如何将有290000行的矩阵拆分为5000行的矩阵/块,并绘制这些矩阵?这里有几个选项,可以归结为-要将所有数据绘制为一行还是单独的行 选项1 使用循环绘制5000行的每一集。这里我假设你只画了第一列。例如: axesHandle = axes; axesHandle.NextPlot = 'add'; totalRowCount = 290000; episodeRowCount =

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

这里有几个选项,可以归结为-要将所有数据绘制为一行还是单独的行

选项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
reshapedFirstColumn = reshape( YOURDATAMATRIX(:,1), 5000, 290000 / 5000 );
plot( reshapedFirstColumn );
选项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命令中使用此新矩阵。例如:

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
reshapedFirstColumn = reshape( YOURDATAMATRIX(:,1), 5000, 290000 / 5000 );
plot( reshapedFirstColumn );