1 clc; 2 A=[1 3 2; 3 4 8 3; 4 10 22 3; 5 21 34 33; 6 9 3 9; 7 5 3 9; 8 10 3 8; 9 ] 10 H = 7; %% 图片高度 11 W = 3; %% 图片宽度 12 L = 5; %% 窗口宽度 13 P = 3; %% 连续窗口重合宽度 14 T = floor((H-L)/(L-P)); %% 观察序列个数 (这里和论文不一致,因为下降几个,有几个观察) 15 %% 上面的T和下面的top,bottom和论文不太一致,都是因为MATLAB数组下标从1开始 16 %%%%%%% 17 % 18 19 D=L-P; %% 每次下滑距离 20 21 22 %% 向量化编程,令T为对应序列号,则top和bottom对应每次观察窗口的上下边缘 23 data=zeros(t,P) 24 for t=1:T 25 %% 获取窗口上下边缘 26 top = 1 + t * D; 27 bottom = top + P - 1; 28 29 %% 提取窗口,特征值 30 [U,S,V]= svd( A(top:bottom,:) ); 31 32 data(t,:)=diag(S)'; 33 34 end