Переформатировать строки матрицы согласно другой матрице - MATLAB - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть 2 матрицы с same IDs.mat1 имеет несколько строк на один идентификатор, а mat2 имеет ONLY 1 строку на один идентификатор.Матрицы предварительно отсортированы.

% COL1 -> ID
mat1 = [ 20 2008 0.11 ; 20 2010 0.22  ; 30 2001 0.99 ; 40 2011 0.11 ; 40 2011 0.22 ; 40 2012 0.11 ] ; 
mat2 = [ 20 0.88 ; 30 0.11 ; 40 0.99 ] ;

Идентификаторы mat2 необходимо повторять согласно их соответствующему числу строк в mat1.

mat2 = [ 20 0.88 ; 20 0.88 ; 30 0.11 ; 40 0.99 ; 40 0.99 ; 40 0.99 ] ;

Можете ли вы предложить ответ?Самостоятельно я подумал об использовании accmarray и т. Д., Чтобы получить количество строк для идентификатора, а затем может быть repmat mat2.Спасибо.

1 Ответ

1 голос
/ 16 сентября 2011

Попробуйте это:

[b,m,n] = unique(mat1(:,1));
mat3 = mat2(n,:)

Надеюсь, это поможет ...

...