?? listorder.asv
字號(hào):
function lsorder=listorder(mr,mc,pr,pc)
% 函數(shù) LISTORDER() 生成按‘Z’型遞歸結(jié)構(gòu)排列的坐標(biāo)列表
% 函數(shù)遞歸原理:對(duì)一個(gè)mr*mc的矩陣,其左上角元素的坐標(biāo)為(pr,pc);首先將矩陣按“田”
% 字型分成四個(gè)對(duì)等的子矩陣,每個(gè)子矩陣的行、列數(shù)均為mr/2、mc/2,左上角元素的坐標(biāo)
% 從上到下、從左到右分別為(pr,pc)、(pr,pc+mc/2)、(pr+mr/2,pc)、(pr+mr/2,pc+mc/2)。
% 把每個(gè)子矩陣再分裂成四個(gè)矩陣,如此遞歸分裂下去,直至最小矩陣的行列數(shù)等于2,獲取最小
% 矩陣的四個(gè)點(diǎn)的坐標(biāo)值,然后逐步向上回溯,即可得到按‘Z’型遞歸結(jié)構(gòu)排列的坐標(biāo)列表。
lso=[pr,pc;pr,pc+mc/2;pr+mr/2,pc;pr+mr/2,pc+mc/2];
% 列表lso是父矩陣分裂成四個(gè)子矩陣后,各子矩陣左上角元素坐標(biāo)的集合
mr=mr/2;
mc=mc/2;
% 子矩陣的行列數(shù)是父矩陣的一半
lm1=[];lm2=[];lm3=[];lm4=[];
if (mr>1)&&(mc>1)
% 按‘Z’型結(jié)構(gòu)遞歸
ls1=listorder(mr,mc,lso(1,1),lso(1,2));
lm1=[lm1;ls1];
ls2=listorder(mr,mc,lso(2,1),lso(2,2));
lm2=[lm2;ls2];
ls3=listorder(mr,mc,lso(3,1),lso(3,2));
lm3=[lm3;ls3];
ls4=listorder(mr,mc,lso(4,1),lso(4,2));
lm4=[lm4;ls4];
end
lsorder=[lso;lm1;lm2;lm3;lm4];
% 四個(gè)子矩陣結(jié)束遞歸回溯到父矩陣時(shí),列表lsorder的頭四個(gè)坐標(biāo)值為列表lso的元素
% 這四個(gè)坐標(biāo)值與后面的各個(gè)子矩陣的坐標(biāo)元素有,
len=length(lsorder);
lsorder=lsorder(len-mr*mc*4+1:len,:);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -