求助!!!MATLAB如何利用小矩阵生成大矩阵

2025-02-27 10:23:34
推荐回答(2个)
回答1:

使用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、显示效果

回答2:

A = kron(ones(3, 4), E);
A = A(1:13, 1:17);