Matlab:按顺序重复每一列n次

pap*_*kin 7 matlab matrix repeat

我几乎是初学者,所以很可能以简单的方式做我想做的事.我有一个矩阵121x62,但我需要将它扩展到121x1488所以每列必须重复24次.例如,转换为:

   2.2668       2.2667       2.2667       2.2666       2.2666       2.2666       
   2.2582       2.2582       2.2582       2.2582       2.2581       2.2581       
    2.283        2.283        2.283       2.2829       2.2829       2.2829       
   2.2881       2.2881       2.2881       2.2881       2.2881        2.288        
    2.268        2.268       2.2679       2.2679       2.2678       2.2678       
   2.2742       2.2742       2.2741       2.2741       2.2741        2.274    
Run Code Online (Sandbox Code Playgroud)

进入这个:

2.2668     2.2668     2.2668  and so on to 24th     2.2667     2.2667  and again to 24x
2.2582     2.2582     2.2582 ...
Run Code Online (Sandbox Code Playgroud)

每一列.

我试图用这些值创建一个向量,然后用vec2mat转换,好吧我有121x1488矩阵但是按行重复:

2.2668   2.2668   2.2668  2.2668  2.2668  2.2668 ...    2.2582   2.2582  2.2582  2.2582 ...
Run Code Online (Sandbox Code Playgroud)

怎么做列?

Ole*_*leg 22

假设您有这个简化的输入,并且您希望按顺序按n时间扩展列:

A   = [1 4
       2 5
       3 6];

szA = size(A); 
n = 3;
Run Code Online (Sandbox Code Playgroud)

有几种方法可以做到这一点:

所有产生相同的结果:

ans =
     1     1     1     4     4     4
     2     2     2     5     5     5
     3     3     3     6     6     6
Run Code Online (Sandbox Code Playgroud)

  • 为'kron`解决方案+1 (4认同)

Grz*_*rek 0

干得好:

function [result] = repcolumn(A, n)
    %n - how many times each column from A should be repeated

    [rows columns] = size(A);
    result = repmat(A(:,1),1,n);

    for i = 2:columns
        result = [result,repmat(A(:,i),1,n)];
    end
end
Run Code Online (Sandbox Code Playgroud)

一定有一种更简单的方法,但它可以完成工作。