2013-07-05 5 views
2

A가 하우스 ID를 나타내는 행의 첫 번째 요소와 두 번째 열의 집에있는 샘플을 나타내는 집계의 샘플을 나타내는 데이터 매트릭스라고 가정합니다.matlab에서 행의 조건부 중복

A = [100 1 56; 
    101 1 34; 
    101 2 33; 
    102 1 22; 
    102 2 55; 
    102 3 2] 

w = [3 2 1] % weight of each household to generate the synthetic population 
내 outuput은 다음과 같습니다되도록 합성 인구를 만들기 위해 샘플을 확장하고자하는

: 나는 주어진에 대한 행렬의 모든 행을 반복하려면 다음 코드를 사용했다

100 1 56 
100 1 56 
100 1 56 
101 1 34 
101 2 33 
101 1 34 
101 2 33 
102 1 22 
102 2 55 
102 3 2 

가중치

그러나 원하는 출력의 경우 일련의 행을 반복해야합니다. 행 집합의 길이는 세대 구성원 수 (w와 같은 별도의 행렬 일 수 있음)에 따라 다르며 각 집합을 반복 할 횟수는 가중치 행렬에 의해 지정됩니다.

코드 수정에 도움이 될 것입니다! 이것은 매우 효율적이지 않습니다,하지만 당신은 당신이 매우 자주 이런 식으로 복제 할 필요가 매우 큰 데이터 세트가있는 경우 그에만 문제가 될 것

ids = unique(A(:,1)); 

B = []; 
for ii = 1:numel(ids) 
    B = [B; repmat(A(A(:,1)==ids(ii),:), w(ii),1)]; %#ok 
end 

참고 :

답변

0

가장 간단한 방법은이 것 . 일회성 샷을 몇 번하면 충분합니다.