本文介绍了如何复制数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想做一个这样的功能
>> 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.
这篇关于如何复制数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!