MATLAB: How to replace matrix with random generated number (int) and position

loopreplace matrix

Hello,
I'am trying to combine 2 matrix, I have 1 matrix with fix number, column, and rows. The other one consist of 2 column matrix with random rows (this matrix more little than matrix 1) and I have to generate it first, randomly. For the example is :
matrix 1 : X Y Z
1 0.0 2
2 0.0 5
3 0.0 1
4 0.0 3
5 0.0 0
matrix 2 : A B
1 0
2 8
4 6
Based on the example, column A used to replace column X and column B used to replace column Z. The value of column A show us where to replace the value of column B in Z.
  • When the value of A is 2, then the value of Z in row 2 which is '5' replace by '8' as the value of B.
  • When the value of A is 4, then the value of Z in row 4 which is '3' replace by '6' as the value of B.
  • But there is an exception, the value of column Z row 1 should not be changed, so when the generated value of A is 1, the value of Z in row 1 which is '2' should not replace by the value of column B and still worth '2'.
  • This program will loop with 100 of maximum iterations, and in every iteration, matrix 2 will generated randomly.
Does anyone have the solution..?
Thanks.

Best Answer

eg
A = [(1:20)', zeros(20,1), randi([0 20],20,1)];
for jj = 1:100
n = rand(20,1) > rand(); %

B0 = randi([0 10],nnz(n),1); % random generation of the matrix 2 (B)
B = [A(n,1), B0]; %
t = B(:,1) > 1;
A(ismember(A(:,1),B(t,1)),3) = B(t,2);
end