📄 bktoeplitz.m
字号:
%bktoeplitz.m
function ret=bktoeplitz(bkc,bkr)
%bkc, bkr=first block colume and first block row
cc=size(bkc);
cm=min(cc);
cM=max(cc);
rr=size(bkr);
rm=min(rr);
rM=max(rr);
if rm~=cm|rM~=cM
ret=-1;
disp('row and column blocks have different diomensions');
return;
end
ct=cM/cm;
ct1=rem(cM,cm);
rt=rM/rm;
rt1=rem(rM,rm);
if ct<2|rt<2|ct1~=0|rt1~=0|ct~=rt|rm==1
ret=-1;
disp('row and column are valid blocks');
return;
end
N=cM;
ret=zeros(N);
if cc(1)==cm
ret(:,1:cm)=bkc.';
else
ret(:,1:cm)=bkc;
end
if rr(1)==cm
ret(1:cm,cm+1:N)=bkr(:,cm+1:N);
else
t=bkr.';
ret(1:cm,cm+1:N)=t(:,cm+1:N);
clear t;
end
for l=2:ct
ret((l-1)*cm+1:l*cm,(l-1)*cm+1:N)=ret(1:cm,1:N-(l-1)*cm);
for m=1:l-1
mt=l-1-m;
ret((l-1)*cm+1:l*cm,mt*cm+1:(mt+1)*cm)=ret(m*cm+1:(m+1)*cm,1:cm);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -