【问题标题】:Replicate matrix one row at a time [duplicate]一次复制一行矩阵[重复]
【发布时间】:2014-01-15 17:58:04
【问题描述】:

我有矩阵

A = [1;2;3]

如何将A 复制四次,每行复制四次,然后再移动到下一行,以获得

[1;1;1;1;2;2;2;2;3;3;3;3;4;4;4;4]

?

【问题讨论】:

标签: matlab


【解决方案1】:

在这种特殊情况下,您可以按照以下方式做一些事情

A = [1;2;3;4];
B = repmat(A',4,1);
B = B(:);

这样做是复制A' 以创建矩阵B

 1     2     3     4
 1     2     3     4
 1     2     3     4
 1     2     3     4

然后使用B(:) 将其转换为单列。

【讨论】:

    【解决方案2】:

    使用 kron 怎么样?非常适合这个。

    kron(A,ones(4, 1))
    

    【讨论】:

    • repmat 解决方案比 kron (stackoverflow.com/questions/14615305/…) 更有效,而且 imo 也更直观
    • @Dan:“直觉”:这取决于你来自哪个世界。对于数学家来说,kronrepmat 敲响了更多的钟声。
    • @RodyOldenhuis 是真的,这就是我为什么这么说的原因。也许我应该从我的角度说。
    • 所以,imo 是“在我看来”:)
    • @Parag:是的,更“谦虚”的版本是“恕我直言”=)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    相关资源
    最近更新 更多