本文介绍了如何复制数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想做一个这样的功能

>> matdup([1 2],3,4)            %or any other input that user wish to enter
ans= 

 1     2     1     2     1     2     1     2
 1     2     1     2     1     2     1     2
 1     2     1     2     1     2     1     2

我被我的代码困住了.我的逻辑:

I am stuck in my code. My logic:

m = matdup(input,row,col)
for i = 1:row
        for j = 1:col
            m(i, j)= input;

这是产生这个:

>> matdup(1,2,2)
ans=

      1 1
      1 1

但失败了:

>> matdup([1 2],3,4)

控制台错误:

Subscripted assignment dimension mismatch.

    Error in ==> matdup at 6
                m(i, j)= input

有什么想法吗?

推荐答案

Matlab 有一个名为 repmat 做同样的事情.

Matlab has a funcion called repmat that does the same.

如果你想创建一个类似的函数,你可以这样做:

If you want to create a similar function, you could do something like this:

function B = matdup(A, M, N)
    [nr, nc] = size(A);
    B = zeros([nr nc] .* [M N]);
    for r = 1:M
        for c = 1:N
            rr = (r - 1) * nr + 1;
            cc = (c - 1) * nc + 1;
            B(rr:rr + nr - 1, cc:cc + nc - 1) = A;
        end
    end
end

请注意,此功能仅限于二维矩阵.

Note this function is restricted to 2D matrices.

这篇关于如何复制数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 03:07