bktoeplitz.asv
来自「通过计算晶体结构来确定其光谱分布」· ASV 代码 · 共 46 行
ASV
46 行
%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
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 + =
减小字号Ctrl + -
显示快捷键?