matlab初始化为特定值矩阵,注意初始化存储矩阵,否则,Matlab默认赋0,找最小值会出错!!!...

clc

clear

%load 'C:\Users\Administrator\Desktop\碎纸拼接\程序\汉语\matlab_A.mat'

load 'H:\我们团队做过的题目\训练2\程序\二小问---程序\汉语\新发法2\bi_jiao_ju_zhen_A'

global A

x1=[94        34        84        183        90        47        121        42        124        144        77        112        149        97        136        164        127        58        43];

x2=[49        54        65        143        186        2        57        192        178        118        190        95        11        22        129        28        91        188        141];

x3=[61        19        78        67        69        99        162        96        131        79        63        116        163        72        6        177        20        52        36];

x4=[168        100        76        62        142        30        41        23        147        191        50        179        120        86        195        26        1        87        18];

x5=[29        64        111        201        5        92        180        48        37        75        55        44        206        10        104        98        172        171        59];

x6=[38        148        46        161        24        35        81        189        122        103        130        193        88        167];

x7=[25        8        9        105        74];

x8=[71        156        83        132        200        17        80        33        202        198        15        133];

x9=[170        205        85        152        165        27        60];

x10=[13        182        109        197        16        184        110        187        66        106        150        21        173        157        181        204        139        145];

x11=[128  3        159        82        199        135        12        73        160        203        169        134        39        31        51        107        115        176];

x12=[146 102 154        114        40        151        207        155        140        185        108        117        4        101        113        194        119        123];

x13=[7        208        138        158        126        68        175        45        174         0        137        53];

x14=[56        93        153        70        166        32        196];

x1=x1+1;x2=x2+1;x3=x3+1;x4=x4+1;x5=x5+1;x6=x6+1;x7=x7+1;x8=x8+1;

x9=x9+1;x10=x10+1;x11=x11+1;x12=x12+1;x13=x13+1;x14=x14+1;

%为了放到矩阵x中

x6(19)=0;x7(19)=0;x8(19)=0;x9(19)=0;x10(19)=0;x11(19)=0;x12(19)=0;

x13(19)=0;x14(19)=0;

global x

x=[x1;x2;x3;x4;x5;x6;x7;x8;x9;x10;x11;x12;x13;x14];

%构造比较矩阵

line=ones(180,1)*255;

%筛选左边的全白

n_zuo(14,2)=0;

for i=1:14

t=0;

for j=1:19

if x(i,j)~=0

c=isequal(A(:,1,x(i,j)),line);

if  c==1

t=t+1;

n_zuo(i,t)=x(i,j);

end

end

end

end

n_j_zuo=n_zuo;

%筛选右边的全白

n_you(14,2)=0;

for i=1:14

t=0;

for j=1:19

if x(i,j)~=0

c=isequal(A(:,72,x(i,j)),line);

if  c==1

t=t+1;

n_you(i,t)=x(i,j);

end

end

end

end

n_j_you=n_you;

%左边分类编程

zuo_liang_ge(1,2)=0;%左边有两个全白。

k_0=1;

zuo_yi_ge(1,1)=0;%左边只有一个是全白的。

k_1=1;

zuo_ling_ge(1,2)=0;%左边无全白的!

k_2=1;

for i=1:14

k=0;

for j=1:2

if n_j_zuo(i,j)==0

k=k+1; %k=0表示:左边有两个全白

end        %k=1表示:左边有1个全白

end

if k==0%左边有两个全白。

zuo_liang_ge(k_0,1:2)=n_j_zuo(i,

4bf900a2611f3937c07382c22bdf07c6.gif;

zuo_liang_ge(k_0,4)=i;

k_0=k_0+1;

end

if k==1%左边只有一个是全白的。

zuo_yi_ge(k_1,1)=n_j_zuo(i,1);

zuo_yi_ge(k_1,4)=i;

k_1=k_1+1;

end

if k==2%左边无全白的!

zuo_ling_ge(k_2,1:2)=n_j_zuo(i,

4bf900a2611f3937c07382c22bdf07c6.gif;

zuo_ling_ge(k_2,4)=i;

k_2=k_2+1;

end

end

%右边分类编程

you_2_ge(1,2)=0;%右边有两个全白。

k_2=1;

you_1_ge(1,1)=0;%右边只有一个是全白的。

k_1=1;

you_0_ge(1,2)=0;%右边无全白的!

k_0=1;

for i=1:14

k=0;

for j=1:2

if n_j_you(i,j)==0

k=k+1; %k=0表示:右边有两个全白

end         %k=1表示:右边有1个全白

end

if k==0%右边有两个全白。

you_2_ge(k_2,1:2)=n_j_you(i,

4bf900a2611f3937c07382c22bdf07c6.gif;

you_2_ge(k_2,4)=i;

k_2=k_2+1;

end

if k==1%右边只有一个是全白的。

you_1_ge(k_1,1)=n_j_you(i,1);

you_1_ge(k_1,4)=i;

k_1=k_1+1;

end

if k==2%右边无全白的!

you_0_ge(k_0,1:2)=n_j_you(i,

4bf900a2611f3937c07382c22bdf07c6.gif;

you_0_ge(k_0,4)=i;

k_0=k_0+1;

end

end

%左边全白为一个的排序

suo_ying=zuo_yi_ge;

bai=suo_ying(:,1);          %左边全白所对应的页数。

bai_row=suo_ying(:,4);  %左边全白所对应的 x 所在的行。

n_pai_xu=length(bai);  %要排几行。

pai_xu(1:n_pai_xu,1)=bai;  %排好之后的矩阵。

%----------------进行排序-----------------------------

flag=72+1;  %做标志位。

A(1,flag,

4bf900a2611f3937c07382c22bdf07c6.gif=0;

for hang=1:n_pai_xu

ye=bai(hang,1);          %左边全白所对应的页数。

x_row=bai_row(hang,1);   %左边全白所对应的 x 所在的行。

A(1,flag,ye)=1;    %首先,将最左边为全白的做标记。

B=A(:,72,ye);

%比较与最左边的最小距离。

for i=1:18  %该循环安排新的最左边。

d(1,1:19)=inf;  %注意初始化存储矩阵,否则,Matlab默认赋0,找最小值会出错!!!        for j=1:19

if x(x_row,j) ~=0

if A( 1,flag, x(x_row,j) )==1

d(1,j)=inf;

elseif A( 1,flag, x(x_row,j) )==0

R(j)= pdist2( double( B )',double( A( :,1, x(x_row,j) ) )' );

d(1,j)=sum( R(j) );

end

end

end

[zhi,wei_zi]=min( d );

A(1,flag, x(x_row,wei_zi) )=1;  %找到相邻图片后,做标志位。

if  x(x_row,i+1)~=0      %判断 x 矩阵的元素是否为零。

B=A(:,72,x(x_row,wei_zi) );   %并且更新最左边图片位置。

pai_xu(hang,i+1)=x(x_row,wei_zi);

elseif  x(x_row,i+1)==0    %如果为零,则将其位置赋inf

pai_xu(hang,i+1)=inf;

end

end

end

%显示图片

for i=1:n_pai_xu

for j=1:19

if pai_xu(i,j)~=inf

B(:, 72*(j-1)+1:72*j ,i)=A(:,1:72,pai_xu(i,j));

end

end

%显示图片

% figure

% imshow(B(:,:,i));

end

pai_xu=pai_xu-1;

pai_xu_2_quan_bai=quan_bai_2(zuo_liang_ge);  %全部用第一个

%用 zuo_ling_ge,you_1_ge 先找出最右边为全白的图片

pai_xu_2_wu_bai=quan_bai_0(zuo_ling_ge,you_1_ge);  %全部用第一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值