2015-01-08 4 views
0

매트릭스의 30 열 데이터를 똑같이 말하려합니다. 그러나 30의 요인에 대해이 작업을 수행하는 방법은 지금 코드가 U = 7이라고 말하기 위해 고생하고 있습니다.그림의 숫자가 플롯 수의 요인이 아닌 그림에

이 코드는 지정된 수에 대해 가능한 한 똑같은 데이터 열을 플롯해야합니다. 그림 U, 데이터의 각 열은 다른 센서를 나타내며 각각 다른 플롯이됩니다.

지금까지 (Benoit_11 덕분에)입니다 무슨 :

"데이터"는 4000x30의 매트릭스와 "NumFigures을"입니다
ColPerFig = size(Data,2)/NumFigures; %// Number of columns to plot per figure 

ColStart = 1:ColPerFig:size(Data,2) %// Indices of the starting columns to plot 

%// Plot 
for k = 1:NumFigures;  
hFig(k) = figure;   
plot(Data(:,ColStart(k):ColStart(k)+ColPerFig-1)); 
end 

이 인물의 U.의 수입니다

사람이있는 경우 이 코드를 수정할 수있는 아이디어는 30 가지가 아닌 요소에도 적용됩니다. 감사하게 생각합니다.

감사

GibGib

답변

1

컬럼의 전화 번호 당신이 남아있는 열이 무엇을 결정해야 그림의 전화 번호의 정확한 배수가 아닌 경우.

이 제안 된 솔루션은 먼저 각 그림에 플롯 할 수있는 열 수를 정의합니다. 그런 다음 얼마나 많은 열이 빠져 있는지 계산 한 다음 나머지 열을 각 그림에 하나씩 전파합니다.

이 예제에서 nFigure = 7 인 경우 그림 당 4 개의 열을 가질 수 있습니다. 우리는 여전히 2 개의 추가 열을 그려야하므로 그림 1과 그림 2는 실제로 5 개의 열을 그릴 것입니다 (그리고 그림 3에서 7은 4 개만 가질 것입니다).

은 쉽게 (마지막에의 첫 번째 그림)에 그려됩니다 여분의 열

%% // setup test data 
Data = randi([9 11],100,30) ; 
for ii=1:30 
    Data(:,ii) = Data(:,ii)+(10*(ii-1)); 
end 
NumFigures = 7 ;  %// this is the total number of figure 

%% // calculate how many columns to plot per figure 
nCol = size(Data,2) ; 
nColPerFig = fix(nCol/NumFigures) ; %// Number of columns to plot per figure 
nColRemain = mod(nCol,nColPerFig) ; %// Number of columns remaining to distribute on existing figures 

ncol2plot = ones(NumFigures , 1) * nColPerFig ;  %// define how many columns will be plotted in each figure 
ncol2plot(1:nColRemain) = ncol2plot(1:nColRemain)+1 ; %// add a column per figure as many time as necessary to make sure we plot ALL columns 

ColStart = cumsum([1;ncol2plot]) ;  %// Indices of the starting columns to plot 
ColStart = ColStart(1:NumFigures) ;  %// truncate the vector in case it went too far 

%% // Plot 
for k = 1:NumFigures  
    hFig(k) = figure ;   
    plot(Data(:,ColStart(k):ColStart(k)+ncol2plot(k)-1)) ; 
    legend('show') %// this is just for a quick visualisation of how many columns we have in each figure 
end 
+0

가 멋지게 수행 위치를 변경할 수 있습니다! +1 –

+0

가끔은 다른 사람들이 아닌 것처럼 보입니다 ... 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 4 숫자의 입력을 사용할 때 완벽하게 작동하지만 7 숫자를 사용할 때 각 그림에 5 개의 그림이 표시되어 35 개의 그림이 추가되지만 30 열이 있습니다 .../ – GibGib

+0

감사합니다. 호키! 나는 지금 일해야한다고 생각한다 : D – GibGib

관련 문제