B题 源程序.docx
- 文档编号:10151957
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:45
- 大小:23.28KB
B题 源程序.docx
《B题 源程序.docx》由会员分享,可在线阅读,更多相关《B题 源程序.docx(45页珍藏版)》请在冰豆网上搜索。
B题源程序
A
源程序如下:
cd('C:
\Users\127\Desktop\附件1');
files=dir('*.bmp');
fori=1:
19
s(:
:
i)=imread(files(i).name);
end;%将所有碎片导入一个三维数组
forj=1:
19
n=0;
fori=1:
1980
ifs(i,1,j)==255
n=n+1;
end;
end;
ifn==1980
disp(j);%找出最左边的碎片
break;
end;
end;
Figure1
clearall
clc
cell{1}=imread('000.bmp');
cell{2}=imread('001.bmp');
cell{3}=imread('002.bmp');
cell{4}=imread('003.bmp');
cell{5}=imread('004.bmp');
cell{6}=imread('005.bmp');
cell{7}=imread('006.bmp');
cell{8}=imread('007.bmp');
cell{9}=imread('008.bmp');
cell{10}=imread('009.bmp');
cell{11}=imread('010.bmp');
cell{12}=imread('011.bmp');
cell{13}=imread('012.bmp');
cell{14}=imread('013.bmp');
cell{15}=imread('014.bmp');
cell{16}=imread('015.bmp');
cell{17}=imread('016.bmp');
cell{18}=imread('017.bmp');
cell{19}=imread('018.bmp');
fori=1:
19
cell2{i}=im2bw(cell{i},0.5);
end
t=8
forx=1:
18
x=sum(sqrt((cell2{t}(:
72)-cell2{i}(:
1)).'*(cell2{t}(:
72)-cell2{i}(:
1))));
j=1;
fori=1:
19
ifi==t
continue;
end
x1=sum(sqrt((cell2{t}(:
72)-cell2{i}(:
1)).'*(cell2{t}(:
72)-cell2{i}(:
1))));
ifx1 x=x1; j=i; end end j t=j; end 结果 t= 8 j= 18 j= 1 j= 7 j= 9 j= 15 j= 13 j= 16 j= 4 j= 11 j= 3 j= 17 j= 2 j= 5 j= 6 j= 10 j= 14 j= 1 j= 7 figure2 IV1=imread('008.bmp'); IV2=imread('014.bmp'); IV3=imread('012.bmp'); IV4=imread('015.bmp'); IV5=imread('003.bmp'); IV6=imread('010.bmp'); IV7=imread('002.bmp'); IV8=imread('016.bmp'); IV9=imread('001.bmp'); IV10=imread('004.bmp'); IV11=imread('005.bmp'); IV12=imread('009.bmp'); IV13=imread('013.bmp'); IV14=imread('018.bmp'); IV15=imread('011.bmp'); IV16=imread('007.bmp'); IV17=imread('017.bmp'); IV18=imread('000.bmp'); IV19=imread('006.bmp'); PicData=[IV1,IV2,IV3,IV4,IV5,IV6,IV7,IV8,IV9,IV10,IV11,IV12,IV13,IV14,IV15,IV16,IV17,IV18,IV19]; imshow(PicData); 附件2figure1 clearall clc cell{1}=imread('000.bmp'); cell{2}=imread('001.bmp'); cell{3}=imread('002.bmp'); cell{4}=imread('003.bmp'); cell{5}=imread('004.bmp'); cell{6}=imread('005.bmp'); cell{7}=imread('006.bmp'); cell{8}=imread('007.bmp'); cell{9}=imread('008.bmp'); cell{10}=imread('009.bmp'); cell{11}=imread('010.bmp'); cell{12}=imread('011.bmp'); cell{13}=imread('012.bmp'); cell{14}=imread('013.bmp'); cell{15}=imread('014.bmp'); cell{16}=imread('015.bmp'); cell{17}=imread('016.bmp'); cell{18}=imread('017.bmp'); cell{19}=imread('018.bmp'); fori=1: 19 cell2{i}=im2bw(cell{i},0.5); end t=7 forx=1: 18 x=sum(abs(cell2{t}(: 72)-cell2{1}(: 1))); j=1; fori=1: 19 ifi==t continue; end x1=sum(abs(cell2{t}(: 72)-cell2{i}(: 1))); ifx1 x=x1; j=i; end end j t=j; end Figure2 IV1=imread('003.bmp'); IV2=imread('006.bmp'); IV3=imread('002.bmp'); IV4=imread('007.bmp'); IV5=imread('015.bmp'); IV6=imread('018.bmp'); IV7=imread('011.bmp'); IV8=imread('000.bmp'); IV9=imread('005.bmp'); IV10=imread('001.bmp'); IV11=imread('009.bmp'); IV12=imread('013.bmp'); IV13=imread('010.bmp'); IV14=imread('008.bmp'); IV15=imread('012.bmp'); IV16=imread('014.bmp'); IV17=imread('017.bmp'); IV18=imread('016.bmp'); IV19=imread('004.bmp'); PicData=[IV1,IV2,IV3,IV4,IV5,IV6,IV7,IV8,IV9,IV10,IV11,IV12,IV13,IV14,IV15,IV16,IV17,IV18,IV19]; imshow(PicData); 附件3 clear >>filename=dir('C: \Users\127\Desktop\附件3\*.bmp');%文件路径 t=209; cell(1,t); I=cell(1,t); fori=1: t name=imread(strcat('C: \Users\127\Desktop\附件3\',filename(i).name));%文件路径 I{i}=name; end c=cell2mat(I); c1=c(: 1: 72: 15048); c2=c(: 2: 72: 15048); c3=c(: 3: 72: 15048); c4=c(: 4: 72: 15048); A1=sum(c1); A2=sum(c2); A3=sum(c3); A4=sum(c4); b=A1+A2+A3+A4; A=find(b==255*180*4) 结果 A= 81530395062729095126169 clear >>filename=dir('C: \Users\127\Desktop\附件3\*.bmp');%文件路径 t=209; cell(1,t); I=cell(1,t); fori=1: t name=imread(strcat('C: \Users\127\Desktop\附件3\',filename(i).name));%文件路径 I{i}=name; end c=cell2mat(I); c1=c(: 1: 72: 15048); c2=c(: 2: 72: 15048); C=zeros(209,209); fori=1: 209 forj=1: 209 C(i,j)=sqrt(sum((c1(: i)-c2(: j)).^2)); end end b=C' [s,k]=min(b); B 以下程序的软件均为matlabR2012a 程序一: %%%显示第一题中文(附件一)的正常排序 clearall clc %%读取数据 filepathsrc='E: \cumcm2013problems\B\附件1\'; file=dir('E: \cumcm2013problems\B\附件1\*.bmp'); fori=1: length(file) A{i}=imread([filepathsrc,file(i).name]); end %%找出最左边的纸片 fori=1: 19 a=A{i}(: 1); s(i)=sum(a); end [y,x]=max(s) b1{1}(: 72)=A{x}(: 72); N (1)=x; forj=2: 19 fori=1: 19 t=b1{j-1}(: 72)-A{i}(: 1); s(i)=sum(abs(t)); ifs(i)==0 s(i)=+inf; end end [m,n]=min(s); b1{j}(: 72)=A{n}(: 72); N(j)=n; end raw=N-1;%纸片排序: 从左到右 a=A{N (1)}; fori=2: 19 a=[aA{N(i)}]; end imtool(a) 程序二: %%%显示第一题英文(附件二)的正常排序 clearall clc %%读取数据 filepathsrc='E: \cumcm2013problems\B\附件2\'; file=dir('E: \cumcm2013problems\B\附件2\*.bmp'); fori=1: length(file) A{i}=imread([filepathsrc,file(i).name]); end %%找出最左边的纸片 fori=1: 19 a=A{i}(: 1); s(i)=sum(a); end [y,x]=max(s) b1{1}(: 72)=A{x}(: 72); N (1)=x; forj=2: 19 fori=1: 19 t=b1{j-1}(: 72)-A{i}(: 1); s(i)=abs(sum(t)); ifs(i)==0 s(i)=+inf; end end [m,n]=min(s); b1{j}(: 72)=A{n}(: 72); N(j)=n; end raw=N-1;%纸片排序: 从左到右 a=A{N (1)}; fori=2: 19 a=[aA{N(i)}]; end imtool(a) 程序三: %%从左到右和从右到做搜寻 clearall clc %%读取数据 filepathsrc='E: \cumcm2013problems\B\附件3\'; file=dir('E: \cumcm2013problems\B\附件3\*.bmp'); fori=1: length(file) A{i}=imread([filepathsrc,file(i).name]); end %找最左边的纸片,Nz为所得处于最左边的纸片的序号 fori=1: 209 k{i}(: 1: 11)=sum(A{i}(: 1: 11)); d{i}=sum(k{i}); d1(i)=d{i} (1); ifd1(i)==255*180*11 Nz=i end end %Nz=[81530395062729095126169]; %% %找最右边的纸片,Nz为所得处于最右边的纸片的序号 fori=1: 209 k{i}(: end-10: end)=sum(A{i}(: end-10: end)); d{i}=sum(k{i}); d1(i)=d{i} (1); ifd1(i)==255*180*11 Ny=i end end %Ny为所得处于最右边的纸片的序号 %Ny=[193744606175124142146177197]; %%行和用r_sum记录 fori=1: 209%i代表第i张纸片 forj=1: 180%j代表第j行之和 r_sum(j,i)=sum(A{i}(j,: ));%r_sum(j,i)表示第i张图片的第j行之和 ifr_sum(j,i)==255*72%如果第j行为白,返回值为1,否则为0 r_sum(j,i)=1; else r_sum(j,i)=0; end end end %记录相对应的行的纸片元素的序号 fori=1: 209 g(i)=sum(r_sum(80: 104,i))+sum(r_sum(149: 173,i));%此时为与第049.bmp的中间字的上下行距之和 ifg(i)==50 k=i end end %%%%可以去掉到去掉%,每个nn表示,不同行的纸片的系数 %下面对应的是通过人工干预所求同行纸片的系数 %nn=[1833465457697194127138139154159167175176197209]; %x=2;y=18; %nn=[219242731425163778788101121143148169180192196]; %x=16;y=2; %nn=[3122329505558669296119130142144179187189191193]; %x=5;y=13; nn=[413153240527483108116129135136160161170177200204]; x=3;y=17; %nn=[61130384549566065769399105112172173181202207]; %x=3;y=8; %nn=[54190102103109114115118120124141147152155156186195208]; %x=3;y=11; %nn=[7202137536264687073798097100117132163164178]; %x=6;y=4 %nn=[9102526363947758289104106123131149162168190194]; %x=6;y=8; %nn=[14172267107110111126140146151158174182183185188198205]; %x=8;y=10; %nn=[161828346172818486133134153157166171199201203206]; %x=6;y=5; %nn=[35434448597885919598113122125128137145150165184]; %x=9;y=3; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fori=1: 19 A1{i}=A{nn(i)}; end b1{1}(: 72)=A1{x}(: 72);%%b1存储排序后的纸片数据 N (1)=x; forj=2: 19 fori=1: 19 t=double(b1{j-1}(: 72))-double(A1{i}(: 1)); s(i)=sum(abs(t)); ifj==i s(i)=+inf; end %s(find(N==i))=inf; end foru=1: length(N) s(N(u))=+inf; end [m,n]=min(s); b1{j}(: 72)=A1{n}(: 72); N(j)=n; end a=A1{N (1)}; fori=2: 19 a=[aA1{N(i)}]; end imtool(a) b2{19}(: 1)=A1{y}(: 1); NY(19)=y; forj=1: 18 fori=1: 19 t=double(b2{20-j}(: 1))-double(A1{i}(: 72)); s(i)=sum(abs(t)); if20-j==i s(i)=+inf; end end foru=length(NY);19 s(NY(u))=+inf; end [m1,n1]=min(s); b2{19-j}(: 1)=A1{n1}(: 1); NY(19-j)=n1; end aY=A1{NY (1)}; fori=2: 19 aY=[aYA1{NY(i)}]; end imtool(aY) 程序四 %%%第二问中文人工干预后的碎纸片拼接图片 clearall clc %%读取数据 filepathsrc='E: \cumcm2013problems\B\附件3\'; file=dir('E: \cumcm2013problems\B\附件3\*.bmp'); fori=1: length(file) A{i}=imread([filepathsrc,file(i).name]); end z=0; fori=1: 209 k{i}(: 1: 11)=sum(A{i}(: 1: 11)); d{i}=sum(k{i}); d1(i)=d{i} (1); ifd1(i)==255*180*11 z=z+1; n(z)=i; end end n %n=[81530395062729095126169]; %%行和用r_sum记录如果第j行为白,返回值为1,否则为0 fori=1: 209%i代表第i张纸片 forj=1: 180%j代表第j行之和 r_sum(j,i)=sum(A{i}(j,: ));%r_sum(j,i)表示第i张图片的第j行之和 ifr_sum(j,i)==255*72%如果第j行为白,返回值为1,否则为0 r_sum(j,i)=1; else r_sum(j,i)=0; end end end %找出处于同一行的纸片 fori=1: 209 g(i)=sum(r_sum(80: 104,i))+sum(r_sum(149: 173,i)); ifg(i)==50 k=i; end end nn1=[3122329505558669296119130142144179187189191193]; fori=1: 19 A1{i}=A{nn1(i)}; end x=5; b1{1}(: 72)=A1{x}(: 72);%%b1存储排序后的纸片数据 N (1)=x; forj=2: 19 fori=1: 19 t=double(b1{j-1}(: 72))-double(A1{i}(: 1)); s(i)=sum(abs(t)); ifj==i s(i)=+inf; end end foru=1: length(N) s(N(u))=+inf; end [m,n]=min(s); b1{j}(: 72)=A1{n}(: 72); N(j)=n; end s1=[4954651431862571921781181909511221292891188141]; fori=1: 19 A1{i}=A{s1(i)}; end raw=N-1;%纸片排序: 从左到右 s1=s1+1; a1=A{s1 (1)}; fori=2: 19 a1=[a1A{s1(i)}]; end imtool(a1) s2=[611978676999162961317963116163726177205236]; s2=s2+1; a2=A{s2 (1)}; fori=2: 19 a2=[a2A{s2(i)}]; end imtool(a2) s3=[168100766214230412314719150179120861952618718]; s3=s3+1; a3=A{s3 (1)}; fori=2: 19 a3=[a3A{s3(i)}]; end imtool(a3) s4=[381484616124358118912210313019388167258910574]; s4=s4+1; a4=A{s4 (1)};
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- B题 源程序