2017-09-20 387 views
1

我有一個MATLAB矩陣,它有4列和290,000行。每5000行我有新的數據,我想與其餘數據分開繪製。如何將具有290,000行的矩陣分割爲矩陣/ 5,000行的塊並繪製矩陣?如何分割MATLAB矩陣和繪圖數據?

回答

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

插入NaN值的一排5000個記錄每次發作後,然後繪製事件的整個集合一次。我再次假設你只繪製第一列。這裏的技巧是插入行的時候,這樣的位置,你需要插入下一行不受已經做好了刀片向後從矩陣的工作進行到底:

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矩陣,然後在繪圖命令中使用此新矩陣。例如:

reshapedFirstColumn = reshape(YOURDATAMATRIX(:,1), 5000, 290000/5000); 
plot(reshapedFirstColumn);