How to replace and join 2 matrix with one of them is random generated matrix?
Show older comments
I'm try to solve a lil bit difficult problem and i wish you could join me to solve it.
I have a matrix like this
no. code x y P Q A B C D w
data1 : [ 1 1 1.06 0 0.0 0.0 0.0 0.0 0 0 0
2 2 1.043 0 21.7 12.7 40.0 0.0 -40 50 0
3 0 1.0 0 2.4 1.2 0.0 0.0 0 0 0
4 0 1.06 0 7.6 1.6 0.0 0.0 0 0 0
5 2 1.01 0 94.2 19.0 0.0 0.0 -40 40 0
6 0 1.0 0 0.0 0.0 0.0 0.0 0 0 0
7 0 1.0 0 22.8 10.9 0.0 0.0 0 0 0
8 2 1.01 0 30.0 30.0 0.0 0.0 -10 40 0
9 0 1.0 0 0.0 0.0 0.0 0.0 0 0 0
10 0 1.0 0 5.8 2.0 0.0 0.0 0 0 19
11 2 1.082 0 0.0 0.0 0.0 0.0 -6 24 0
12 0 1.0 0 11.2 7.5 0.0 0.0 0 0 0
13 2 1.071 0 0.0 0.0 0.0 0.0 -6 24 0
14 0 1.0 0 6.2 1.6 0.0 0.0 0 0 0
15 0 1.0 0 8.2 2.5 0.0 0.0 0 0 0]
and then I generate a matrix randomly we call this 'data2'. To generate this matrix I have to put a number as an input with range between 1-3. If i put '1' then data2 will generate matrix 1x2. If i put '2' then data2 will generate matrix 2x2. If i put '3' then data2 will generate matrix 3x2. And the first column of data2 must be integer. For example if i put '3', data2 will generate the matrix like below:
M N
data2 = [ 1 5.2
7 3.5
10 7.7]
From the example of data2, column M used to replace column 'no.' and column N used to replace column A. The value of column M show us where to replace the value of column N in A.
- When the value of M is 7, then the value of A in row 7 which is '0.0' replace by '3.5' as the value of N. And the column 'code' in row 7 which is '0' change to '2'.
- When the value of M is 10, then the value of A in row 10 which is '0.0' replace by '7.7' as the value of B. And the column 'code' in row 10 which is '0' change to '2'.
So the changes in every rows followed by the changes in row 'code' from '0' to '2'.
But there is an exception, let's see the column 'code' in data1. There are 3 kind of codes in that column, 1,2, and 0. Any generated number in data2 it will not change the value in column A, IF that value has code '1' or '2'. Changes only apply for the value in column A if that value has code '0'.
This program will loop with 100 of maximum iterations, and in every iteration, data2 will generated randomly.
Does anyone have the solution..?
Thanks.
4 Comments
What have you tried so far to solve your problem and where did you stuck? The forum is efficient for solving a specific problem, but this sounds like a general programming job.
Where does the 1-3 come from, or in other word, what does this mean exactly: "If i put '1' "?
How is data2 created? Is there a limit for the first column? Are repetitions allowed? Is it sorted? "data2 will generated randomly" is not precise enough for an implementation.
Noru
on 30 Jan 2013
@Noru: And which part is not working now? Are you able to create data2 already? Is the part "when I fill '1' as input" solved already? If the line index in data2 is not unique, is the first or last value in the second column preferred?
There are too many unknowns to allow to suggest a solution. When I understand correctly, most of the columns of data1 do not matter the problem at all, but only the 2nd and the 7th column, while the first column is trivial 1:15 in every case. So all you need is to match the row indices of data1 with the values of data2(:,1) and for all suitable values in data1(:,2) the elements of data1(suiting,7) are replaced by the corresponding values of data2(:,2). Correct?
Noru
on 31 Jan 2013
Accepted Answer
More Answers (0)
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!