0

例如,我想在矩阵的开头添加一个值,我的矩阵是

0,0,0,0,0,0
0,1,1,1,0,0
1,0,0,1,0,0
1,1,1,0,0,0

然后我想在第一列添加“1”或“0”因此它会变成这样

1,0,0,0,0,0,0
1,0,1,1,1,0,0
1,1,0,0,1,0,0
1,1,1,1,0,0,0

0,0,0,0,0,0,0
0,0,1,1,1,0,0
0,1,0,0,1,0,0
0,1,1,1,0,0,0

我怎么能在 MATLAB 中做到这一点?

4

3 回答 3

5

您可以连接矩阵,而无需像这样从头开始创建另一个矩阵:

% your matrix
A = [ 0,0,0,0,0,0;
      0,1,1,1,0,0;
      1,0,0,1,0,0;
      1,1,1,0,0,0 ];

A_with_zeros = [zeros(size(A,1),1) A]
A_with_ones = [ones(size(A,1),1) A]

% Output:
%  A_with_zeros = [ 0 0 0 0 0 0 0
%                   0 0 1 1 1 0 0
%                   0 1 0 0 1 0 0 
%                   0 1 1 1 0 0 0 ]
% 
%  A_with_ones = [ 1 0 0 0 0 0 0 0
%                  1 0 0 1 1 1 0 0
%                  1 0 1 0 0 1 0 0
%                  1 0 1 1 1 0 0 0 ]

关于连接矩阵的文档

  • horzcat
  • 垂直猫

    这两个文档页面详细描述了允许您水平连接数组(我在上面的示例中所做的)和垂直连接数组(如果您想向矩阵添加行)的现有方法。

  • 于 2012-04-10T10:46:22.653 回答
    2

    使用数组连接语法 -[a b]将矩阵水平粘合在一起,[a; b]将它们垂直粘合在一起。

    像这样:

    >> a = ones(3,1)
    
    a =
    
         1
         1
         1
    
    >> b = magic(3)
    
    b =
    
         8     1     6
         3     5     7
         4     9     2
    
    >> c = [a b]
    
    c =
    
         1     8     1     6
         1     3     5     7
         1     4     9     2
    

    垂直:

    >> d = ones(1,3)
    
    d =
    
         1     1     1
    
    >> e = [d; b]
    
    e =
    
         1     1     1
         8     1     6
         3     5     7
         4     9     2
    

    如果尺寸不匹配,MATLAB 会给您一个错误。不要这样做:

    >> f = ones(1,10)
    
    f =
    
         1     1     1     1     1     1     1     1     1     1
    
    >> g = magic(3)
    
    g =
    
         8     1     6
         3     5     7
         4     9     2
    
    >> [f; g]
    ??? Error using ==> vertcat
    CAT arguments dimensions are not consistent.
    
    于 2012-04-10T10:48:26.517 回答
    0

    创建一个带有额外列的新矩阵,复制旧矩阵,然后将新列的数据放入 (:, 1)。

    output = zeros(size(input, 1), size(input, 2) + 1);
    output(:, 2:end) = input;
    output(:, 1) = new_column;
    

    或者,如果您的意思是要获得两个矩阵,一个具有 1 列,一个具有 0 列:

    output0 = zeros(size(input, 1), size(input, 2) + 1);
    output0(:, 2:end) = input;
    output1 = ones(size(input, 1), size(input, 2) + 1);
    output1(:, 2:end) = input;
    
    于 2012-04-10T10:39:02.470 回答