使用Matlab在矩阵中的特定位置依次输入一组数字

时间:2016-05-14 11:33:40

标签: matlab matrix

我有一个矩阵,我想按顺序在这个矩阵中输入一组数字。这是一个例子: 假设:

x = [1 2 3 4 5 6 7]  % Group of numbers
A =                      % The matrix
1.1 2.2 3.1 4.1 5.3 1.2 1.3
3.1 4.2 1.1 7.4 5.6 2.2 1.3
1.4 5.2 4.3 2.2 4.3 3.2 1.3
1.6 3.2 6.3 2.1 2.6 7.2 1.3
6.1 1.3 9.4 4.2 3.3 1.2 1.3
2.5 4.2 3.2 5.1 6.7 1.2 1.3

我想要做的是找到一种方法,使用循环输入存储在x中的数字组,方式如下:

A =                      % The matrix
1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3
1.0 2.0 3.0 4.0 5.0 6.0 7.0 3.1 4.2 1.1 7.4 5.6 2.2 1.3 3.1 4.2 1.1 7.4 5.6 2.2 1.3
1.4 5.2 4.3 2.2 4.3 3.2 1.3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 1.4 5.2 4.3 2.2 4.3 3.2 1.3
1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.0 2.0 3.0 4.0 5.0 6.0 7.0
6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3
2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3

您可以注意到这组数字(从1.0到7.0)向下移动(逐行)直到矩阵结束。在每次移动时,矩阵尺寸也会增加。我相信我应该首先定义矩阵维度。 为此,我发现矩阵列乘以行数 我将获得新的矩阵维度,在这种情况下将是7(行)x 49(列)。

我需要知道如何使用for循环或任何其他可能的方式自动创建这样的矩阵。

提前致谢。

1 个答案:

答案 0 :(得分:0)

  1. 使用repmat以水平连接矩阵的3个副本。

  2. 使用Matlab的赋值语法:A(row,col:col + length(x)-1),以便将x复制到所需的行和col。

  3. 代码示例:

    outA = repmat(A,1,3); %replicate A
    outA(2,1:length(x)) = x; %inserts x into the beginning of the 2nd row
    outA(4,size(outA,2)-length(x)+1:end) = x; %inserts x into the end of the 4th row
    

    结果:

    outA = 
    1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3
    1.0 2.0 3.0 4.0 5.0 6.0 7.0 3.1 4.2 1.1 7.4 5.6 2.2 1.3 3.1 4.2 1.1 7.4 5.6 2.2 1.3
    1.4 5.2 4.3 2.2 4.3 3.2 1.3 1.4 5.2 4.3 2.2 4.3 3.2 1.3 1.4 5.2 4.3 2.2 4.3 3.2 1.3
    1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.0 2.0 3.0 4.0 5.0 6.0 7.0
    6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3
    2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3