【发布时间】:2020-11-11 23:17:58
【问题描述】:
我有一个矩阵B,我想通过L*n 获得一个维度为(L+k)*m 的矩阵C。 L 和 k 是输入值。 B0 , B1 , ... , Bk 的大小为 m n。
例如:
如果我有一个矩阵B = [1 1 ; 1 1 ; 1 1] 与B0 = [1 1]、B1 = [1 1] 和B2 = [1 1],并且每个B0 , B1 , B2 的维度为1 由2 与k = 2 和L = 4。
那么得到的矩阵C由C = [1 1 0 0 0 0 0 0 ; 1 1 1 1 0 0 0 0 ; 1 1 1 1 1 1 0 0 ; 0 0 1 1 1 1 1 1 ; 0 0 0 0 1 1 1 1 ; 0 0 0 0 0 0 1 1]给出,维度为
68。
我想将我的程序推广到任何大小的矩阵B。
我的程序用m = 1、n = 2、k = 2和L = 4解决了B = [1 1 ; 1 1 ; 1 1]的问题。
我的代码:
clc;
clear;
k = 2;
L = 4;
B = [1 1 ; 1 1 ; 1 1];
B0 = [1 1];
B1 = [1 1];
B2 = [1 1];
m = size(B0,1);
n = size(B0,2);
c = [B ; zeros(size(B))];
C = zeros((L+k)*m,L*n);
for i = 1:L
C(:,2*i-1:2*i) = circshift(c,i-1,1);
end
结果:C =
1 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0
1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1
0 0 0 0 1 1 1 1
0 0 0 0 0 0 1 1
对于任何给定的矩阵B 以及k 和L 的任何值,我都难以概括。
有什么建议吗?
【问题讨论】: