MATLAB: Creating a matrix from data in a vector

MATLABmatrixvectors

I have two vectors that contain positive integer values but are not consecutive. I would like to create a matrix that uses these values to place a 1 in a location. Example: I have a vector member_i = [1;1;2] and another vector member_j = [2;3;3]. I would like to create a matrix that is 2 times the number of rows of the vector and use that as the number of columns. I would also like to have the number of rows in the matrix equal 4 times the number of rows in the vectors. These vectors could be any length. I would also like to use the data from the vectors to put 1's in various locations, say for instance if member_i value is 1, the first row would have a 1 in row 1 column 1 and another 1 in row 2 column 2. Then if member_j value is 3, I would like row 3 column 5 to have a 1 and row 4 column 6 to have a 1. For the given vectors mentioned above the desired output would be:
DESIREDOUTPUT =
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
1 0 0 0 0 0
0 1 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
my current code:
Beta = zeros(4,2*member_count);
for idx5 = 1:member_count;
Beta(idx1,2*member_i(idx5,1)-1) = 1;
Beta(idx2,2*member_i(idx5,1)) = 1;
Beta(idx3,2*member_j(idx5,1)-1) = 1;
Beta(idx4,2*member_j(idx5,1)) = 1;
end
Beta =
1 0 1 0 0 0
0 1 0 1 0 0
0 0 1 0 1 0
0 0 0 1 0 1
1 0 1 0 0 0
0 1 0 1 0 0
0 0 1 0 1 0
0 0 0 1 0 1
1 0 1 0 0 0
0 1 0 1 0 0
0 0 1 0 1 0
0 0 0 1 0 1
Thanks for any help to this matlab noobie. Cedric Wannaz http://www.mathworks.com/matlabcentral/answers/contributors/1078046-cedric-wannaz was more than helpful to me before.

Best Answer

n=length(member_i);
I=1:2*n;
J=I;
J(1:2:end)=member_i(:).';
J(2:2:end)=member_j(:).';
Beta=kron(sparse(I,J,1), eye(2));