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

如何用MATLAB软件通过一个方阵生成任意m×n矩阵,具体情况见下图。

我想通过图中E(5×5)方阵生成13×17矩阵,每一行每一阶按E的行写,重复周期为5。事实上,如果我想生成的为 5i ×5j 矩阵,那这5i 5j 矩阵其实是由i×j个E(5×5)方阵构成的。求MATALB 具体如何操作过程和代码。感激不尽。

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-05-07
A = kron(ones(3, 4), E);
A = A(1:13, 1:17);