使用repmat()函数即可实现上述要求,具体过程如下:
1、创建自定义函数repeat_matrix(A,M,N),保存为repeat_matrix.m
function y = repeat_matrix(A,M,N)
% 将给定方阵A扩充为m×n的矩阵
n = size(A,1);
rm = floor(M/n); % A在行方向重复的次数
rn = floor(N/n); % A在列方向重复的次数
lm = mod(M,n); % 剩余行数
ln = mod(N,n); % 剩余列数
A1 = repmat(A,rm,rn); % 左上角部分
A2 = repmat(A(:,1:ln),rm,1); % 右上角部分
A3 = repmat(A(1:lm,:),1,rn); % 左下角部分
A4 = A(1:lm,1:ln); % 右下角部分
y = [A1,A2;A3,A4];
2、在命令窗口调用
>> E=zeros(5,5);
>> E(1,3)=1;E(2,4)=1;E(3,2)=1;E(4,4)=1;E(5,1)=1;
>> repeat_matrix(E,13,17)
3、显示效果
A = kron(ones(3, 4), E);
A = A(1:13, 1:17);