How to merge two different size matrix logically?

Hello everyone, i have one matrix A = [0,1,2,...3600] and another one is B=[2,5,7,3600] what i want is to have matrix C(:,1)=[0,1,2....,3600] C(:,2)=[0,0,2,0,0,5,....3600] it should be as same size as A and if elements of B exist in A and that should be in the second column of C and the rest will be zero. Can you help please?

 채택된 답변

Thorsten
Thorsten 2015년 2월 25일
편집: Thorsten 2015년 2월 25일

0 개 추천

Like this?
A = [0, 1, 2, 3, 4, 5, 7, 10];
B = [2, 5, 7];
C(:,1) = A;
C(end,2) = 0;
% ind = arrayfun(@(x)(find(x==A)), B);
% or
ind = find(ismember(A,B))
C(ind,2) = A(ind);

댓글 수: 1

Hi Thorsten i have one more question, i would be very glad if you can answer, lets say now i need another matrix D lets say that counts the number of occurrence of the ones inside B matrix and then insert in the same size matrix let say:
A = [0, 1, 2, 3, 4, 5, 7, 10];
B = [2, 5, 7];
you found :
C = [0,0,2,0,0,5,7,0]; but in that case what i want is the occurence:
D = [0,0,1,0,0,1,1,0]
lets say i have something
A = [0, 1, 2, 3, 4, 5, 7, 10];
B = [2,5,5,7];
still C is the same but i want D also which should be:
C = [0,0,2,0,0,5,7,0];
D = [0,0,1,0,0,2,1,0];
<do you know how to solve that, thank you in advance

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

추가 답변 (2개)

dpb
dpb 2015년 2월 25일

0 개 추천

C=[A zeros(size(A)]; % allocate
C(ismember(A,B),2)=B; % merge by position
Cladio Andrea
Cladio Andrea 2015년 2월 25일

0 개 추천

i love you guys!! i was dealing with that problem for hours and now i have 2 perfect answers!!!! Thank you so much!!!

카테고리

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

질문:

2015년 2월 25일

편집:

2015년 2월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by