MATLAB: How to separate a matrix randomly

digital image processingimage processing

Hello everyone, I want to ask how to separate a matrix randomly. For example, I have a matrix
A = [...
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1]
and I need a C1 and C2 matrix:
C1 =
0 0 0 0
0 0 0 0
1 0 0 1
0 1 1 0
C2 =
0 0 0 0
0 0 0 0
0 1 1 0
1 0 0 1
Is it possible we can generate them by separating the 1 digit randomly?
Thanks before 🙂

Best Answer

Randomly allocate all values from one matrix to two other matrices:
>> A = [0,0,0,0;0,0,0,0;1,1,1,1;1,1,1,1];
>> B = 0.5<rand(size(A));
>> C1 = zeros(size(A)); C2 = zeros(size(A));
>> C1(B) = A(B);
>> C2(~B) = A(~B);
If you only require the last two rows of values, then you can "&" the index with another logical matrix giving the restrictions that you require.