繁体   English   中英

将某些数字从一个矩阵复制到另一个矩阵

[英]Copy certain number from one matrix to another

我正在使用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

您可以使用逻辑索引和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]
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM