2016-10-03 79 views
0

进出口使用MATLAB和我有第二列,但只有一定数量的矩阵从一个矩阵复制一定数量的另一个

1 1 
2 1 
3 1 
4 2 
5 2 
6 2 
7 1 
8 1 
9 2 
10 2 
11 2 

我如何可以复制矩阵?对方号码将是随机的1或2。实施例

1 1 1 |  | 1 1 1 
2 1 1 |  | 2 1 1 
3 1 1 |  | 3 1 1 
4 2 2 |  | 4 2 2 
5 2 1 | OR | 5 2 2 
6 2 1 |  | 6 2 1 
7 1 1 |  | 7 1 1 
8 1 1 |  | 8 1 1 
9 2 2 |  | 9 2 2 
10 2 2 |  |10 2 1 
11 2 1 |  |11 2 1 

如果2的第三行成为1,列的其余部分将成为1.过程重复,直到它到达另一组的2

回答

0

您可以使用逻辑索引和功能randi

a = [1 1; 
    2 1; 
    3 1; 
    4 2; 
    5 2; 
    6 2; 
    7 1; 
    8 1; 
    9 2; 
    10 2; 
    11 2]; 

b = randi(2,length(a),1); %generation of random value ∈ [1,2] 
b(a(:,2)==1) = 1; %if a(:,2) = 1 b = 1; 

a = [a,b] 
0
A= [1 1 
2 1 
1 1 
4 2 
5 2 
6 2 
7 1 
8 1 
9 2 
10 2 
11 2] ; 
colLength = length (A(:,1)) ; 
thridcol = randi (2,colLength,1) 
A(:,3) = thridcol ; 

flag = 1 ; 
i = 1 ; ; 
if (sum (A(3,:) == 1) == length (A(2,:))) 
    while (flag && i < colLength) 
     A(3+i,3) = 1 ;   
     if (sum (A(3+i,:) == 2) == length (A(3+i,:))) 
      flag = 0 ; 
     end 
      i = i +1 ; 
    end 
end 
+0

但是,你没有考虑到的情况下'A(:,2)== 1' – obchardon

相关问题