【问题标题】:Repeating matrix in matlab [duplicate]matlab中的重复矩阵[重复]
【发布时间】:2018-02-13 00:52:52
【问题描述】:

我有一个 n 乘 n 的方阵;我想通过 n^2 将此矩阵扩展为 n^2,以便重复该位置中的值。 例如,矩阵是

2 3
5 6

我想生成矩阵 B 使得

2 2 3 3
2 2 3 3
5 5 6 6
5 5 6 6

如何在 matlab 中做到这一点?并且需要对任意方阵进行泛化

附加问题:如果我想复制如下
2 3 2 3
5 6 5 6
2 3 2 3
5 6 5 6

如何归档?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    让数据成为

    M = [2 3; 5 6];   % initial matrix
    v = 2;            % vertical repetition factor 
    h = 3;            % horizontal repetition factor
    

    除了使用@Omg's answer 所示的kron,您还可以使用indexing

    result = M(ceil(1/v:1/v:end), ceil(1/h:1/h:end));
    

    或者,在最近的 Matlab 版本中,您可以使用 repelem

    result = repelem(M, v, h);
    

    以上任何一个都给出了

    result =
         2     2     2     3     3     3
         2     2     2     3     3     3
         5     5     5     6     6     6
         5     5     5     6     6     6
    

    【讨论】:

    • 附加问题:如果我想复制如下 2 3 2 3
      5 6 5 6
      2 3 2 3
      5 6 5 6
      如何存档?
    • @Aditya 这更简单:repmat(M, v, h)
    【解决方案2】:

    您可以使用 Kronecker 张量积来做到这一点:

    B = kron(A,ones(n));
    

    【讨论】:

    • kron 是最好的。我会为第二个问题添加B=kron(ones(n),A)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多