Altruists,
I have the data in the following matrix.
Year month value
2000 1 10
2000 2 20
2000 3 30
I have to extract this values to the following matrix in repetition, for example:
Year month value
2000 1 ?
2000 1 ?
2000 2 ?
Thanks

답변 (2개)

Walter Roberson
Walter Roberson 2017년 6월 5일
편집: Walter Roberson 2017년 6월 5일

0 개 추천

YourMatrix = [2000 1 10
2000 2 20
2000 3 30];
probe_rows = [2000 1
2000 1
2000 2];
[uniqYM, ~, uniq_rowidx] = unique(YourMatrix(:,1:2), 'rows', 'stable');
[tf, index_in_uniqYM] = ismember(probe_rows, uniqYM, 'rows');
valid_idx_in_uniqYM = index_in_uniqYM(tf);
output = YourMatrix( ismember(uniq_rowidx, valid_idx_in_uniqYM), :);
Note: this code was specifically designed with the possibility that the year and month entries in the original matrix might not be unique, that you might need to retrieve multiple rows.

댓글 수: 2

novice modeler
novice modeler 2017년 6월 5일
Thanks for the reply. Actually, the original matrix contains no repetitive entries but the matrix in problem requires to retrieve repetitive entries. Would you please let me know your answer for this.
YourMatrix = [2000 1 10
2000 2 20
2000 3 30];
probe_rows = [2000 1
2000 1
2000 2];
[tf, index_in_original] = ismember(probe_rows, YourMatrix(:, [1 2]), 'rows');
output = YourMatrix( index_in_original(tf), : );

댓글을 달려면 로그인하십시오.

Guillaume
Guillaume 2017년 6월 5일

0 개 추천

If your matrices are actually tables as your formatting sort of imply, then it's trivially done with join or outerjoin (depending on whether or not you want to include rows that don't match:
%inputs as table:
data = table([2000; 2000; 2000], [1; 2; 3], [10; 20; 30], 'VariableNames', {'year', 'month', 'value'})
probe = table([2000; 2000; 2000], [1; 1; 2], 'VariableNames', {'year', 'month'});
%include only rows that match
result = join(probe, data)
%include rows of probe that do not match
result = outerjoin(probe, data, 'Type', 'left');
If your inputs are actually matrices, then convert them to tables or use Walter's answer.

카테고리

도움말 센터File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

질문:

2017년 6월 4일

답변:

2017년 6월 5일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by