matlab实用程序百例3
matlab实用程序百例3
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 72');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
I=imread('rice.tif');
imshow(I)
k=0;
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','图像轮廓图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 100 60 20],...
'callback',[...
'cla,',...
'k=1;,',...
'I=imread(''rice.tif'');,',...
'imcontour(I)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','SOBEL 边界图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 100 60 20],...
'callback',[...
'cla,',...
'k=2;,',...
'I=imread(''rice.tif'');,',...
'BW=edge(I,''sobel'');,',...
'imshow(BW)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','CANNY 边界图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[180 100 60 20],...
'callback',[...
'cla,',...
'k=3;,',...
'I=imread(''rice.tif'');,',...
'BW=edge(I,''canny'');,',...
'imshow(BW)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','灰度调整',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 50 60 20],...
'callback',[...
'cla,',...
'k=4;,',...
'I=imread(''rice.tif'');,',...
'J=imadjust(I,[0.15 0.9],[0 1]);,',...
'imshow(J,64)']);
b5=uicontrol('parent',h0,...
'units','points',...
'tag','b5',...
'style','pushbutton',...
'string','图像柱状图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[180 50 60 20],...
'callback',[...
'if k==0,',...
'figure,',...
'imhist(I,64),',...
'end,',...
'if k==1,',...
'imhist(I,64),',...
'end,',...
'if k==2,',...
'imhist(BW,64),',...
'end,',...
'if k==3,',...
'imhist(BW,64),',...
'end,',...
'if k==4,',...
'imhist(J),',...
'end']);
b6=uicontrol('parent',h0,...
'units','points',...
'tag','b6',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 50 60 20],...
'callback','close');
实例 73:过滤图像
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 73');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
I=imread('eight.tif');
imshow(I)
u1=uimenu('parent',h0,...
'tag','u1',...
'label','添加噪声',...
'backgroundcolor',[0.75 0.75 0.75]);
u11=uimenu('parent',u1,...
'tag','u11',...
'label','SALT&PEPPER 噪声',...
'backgroundcolor',[0.75 0.75 0.75],...
'callback',[...
'set(u11,''checked'',''on'');,',...
'set(u12,''checked'',''off'');,',...
'cla,',...
'I=imnoise(I,''salt & pepper'',0.02);,',...
'imshow(I)']);
u12=uimenu('parent',u1,...
'tag','u12',...
'label','GAUSSIAN 噪声',...
'backgroundcolor',[0.75 0.75 0.75],...
'callback',[...
'set(u12,''checked'',''on'');,',...
'set(u11,''checked'',''off'');,',...
'cla,',...
'I=imnoise(I,''gaussian'',0,0.005);,',...
'imshow(I)']);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','均平过滤',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 100 50 20],...
'callback',[...
'cla,',...
'J=filter2(fspecial(''average'',3),I)/255;,',...
'imshow(J)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','中值过滤',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 100 50 20],...
'callback',[...
'cla,',...
'J=medfilt2(I,[3 3]);,',...
'imshow(J)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','自适应过滤',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 100 50 20],...
'callback',[...
'cla,',...
'J=wiener2(I,[5 5]);,',...
'imshow(J)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','关闭',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[90 50 70 30],...
'callback','close');
实例 74:图像的区域处理
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 74');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
I=imread('trees.tif');
imshow(I)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','区域过滤一',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 100 50 20],...
'callback',[...
'cla,',...
'I=imread(''trees.tif'');,',...
'imshow(I),',...
'BW=roipoly;,',...
'h=fspecial(''unsharp'');,',...
'I2=roifilt2(h,I,BW);,',...
'imshow(I2)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','区域过滤二',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 100 50 20],...
'callback',[...
'cla,',...
'BW=imread(''text.tif'');,',...
'f=inline(''imadjust(x,[],[],0.01)'');,',...
'I2=roifilt2(I,BW,f);,',...
'imshow(I2)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','区域填充',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 100 50 20],...
'callback',[...
'cla,',...
'load trees,',...
'I=ind2gray(X,map);,',...
'imshow(I),',...
'I2=roifill;,',...
'imshow(I2)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[90 50 70 30],...
'callback','close');
实例 75:图像的颜色处置
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 75');
h1=axes('parent',h0,...
'position',[0.12 0.45 0.75 0.5],...
'visible','off');
I=imread('flowers.tif');
imshow(I)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','减少颜色',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 100 50 20],...
'callback',[...
'cla,',...
'[X,map]=imread(''flowers.tif'');,',...
'[Y,map2]=imapprox(X,map,64);,',...
'image(Y),',...
'colormap(map2)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','颜色抖动',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 100 50 20],...
'callback',[...
'cla,',...
'I=imread(''flowers.tif'');,',...
'[X,map]=rgb2ind(I,128,''nodither'');,',...
'imshow(X)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','颜色转换一',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 100 50 20],...
'callback',[...
'cla,',...
'I=imread(''flowers.tif'');,',...
'Y=rgb2ntsc(I);,',...
'J=Y(:,:,1);,',...
'imshow(J)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 50 50 20],...
'callback','close');
b5=uicontrol('parent',h0,...
'units','points',...
'tag','b5',...
'style','pushbutton',...
'string','颜色转换三',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 50 50 20],...
'callback',[...
'cla,',...
'I=imread(''flowers.tif'');,',...
'J=rgb2ycbcr(I);,',...
'imshow(J)']);
b6=uicontrol('parent',h0,...
'units','points',...
'tag','b6',...
'style','pushbutton',...
'string','颜色转换二',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 50 50 20],...
'callback',[...
'cla,',...
'I=imread(''flowers.tif'');,',...
'J=rgb2hsv(I);,',...
'imshow(J)']);
实例 76:交换显示图像
h0=figure('toolbar','none',...
'position',[198 56 500 500],...
'name','实例 76');
h1=axes('parent',h0,...
'position',[0.15 0.5 0.7 0.5],...
'visible','off');
u1=uimenu('parent',h0,...
'label','加载图像',...
'backgroundcolor',[0.753 0.753 0.753],...
'tag','u1',...
'callback',[...
'[X,map]=imread(''800.jpg'',''jpg'');,',...
'Y=imresize(X,2);,',...
'image(Y),',...
'colormap(map),',...
'axis image,',...
'camva(camva/2.5),',...
'disp(''单击鼠标左键点取需要的点''),',...
'disp(''单击鼠标右键确定最后一个点''),',...
'while 1,',...
'[x,y]=ginput(1);,',...
'if ~strcmp(get(gcf,''selectiontype''),''normal''),',...
'break,',...
'end,',...
'ct=camtarget;,',...
'dx=x-ct(1);,',...
'dy=y-ct(2);,',...
'camdolly(dx,dy,ct(3),''movetarget'',''data''),',...
'drawnow,',...
'end']);
u2=uimenu('parent',h0,...
'label','关闭',...
'backgroundcolor',[0.753 0.753 0.753],...
'tag','u2',...
'callback','close');
实例 77:矢量数据的显示
h0=figure('toolbar','none',...
'position',[198 56 450 468],...
'name','实例 77');
h1=axes('parent',h0,...
'position',[0.3 0.45 0.5 0.5],...
'visible','off');
load wind
b1huidiao=[...
'cla,',...
'xmin = min(x(:));,',...
'xmax = max(x(:));,',...
'ymax = max(y(:));,',...
'zmin = min(z(:));,',...
'wind_speed = sqrt(u.^2 + v.^2 + w.^2);,',...
'hsurfaces = slice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin);,',...
'set(hsurfaces,''FaceColor'',''interp'',''EdgeColor'',''none''),',...
'hcont = contourslice(x,y,z,wind_speed,[xmin,100,xmax],ymax,zmin);,',...
'set(hcont,''EdgeColor'',[.7,.7,.7],''LineWidth'',.5),',...
'[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);,',...
'hlines = streamline(x,y,z,y,v,w,sx,sy,sz);,',...
'set(hlines,''LineWidth'',2,''Color'',''r''),',...
'view(3),',...
'daspect([2,2,1]),',...
'axis tight'];
b2huidiao=[...
'cla,',...
'wind_speed = sqrt(u.^2 + v.^2 + w.^2);,',...
'hiso = patch(isosurface(x,y,z,wind_speed,40));,',...
'isonormals(x,y,z,wind_speed,hiso),',...
'set(hiso,''FaceColor'',''red'',''EdgeColor'',''none'');,',...
'hcap =
patch(isocaps(x,y,z,wind_speed,40),''FaceColor'',''interp'',''EdgeColor'',''none'')
;,',...
'colormap hsv,',...
'daspect([1,1,1]);,',...
'[f verts] = reducepatch(isosurface(x,y,z,wind_speed,30),0.07);,',...
'h1 = coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),3);,',...
'set(h1,''FaceColor'',''blue'',''EdgeColor'',''none'');,',...
'xrange = linspace(min(x(:)),max(x(:)),10);,',...
'yrange = linspace(min(y(:)),max(y(:)),10);,',...
'zrange = 3:4:15;,',...
'[cx,cy,cz] = meshgrid(xrange,yrange,zrange);,',...
'h2 = coneplot(x,y,z,u,v,w,cx,cy,cz,2);,',...
'set(h2,''FaceColor'',''green'',''EdgeColor'',''none'');,',...
'axis tight,',...
'box on,',...
'camproj perspective,',...
'camzoom(1.25),',...
'view(65,45),',...
'camlight(-45,45),',...
'lighting phong,',...
'set(hcap,''AmbientStrength'',.6)'];
b1=uicontrol('parent',h0,...
'style','pushbutton',...
'units','points',...
'tag','b1',...
'backgroundcolor',[0.75 0.75 0.75],...
'string','可视化',...
'position',[50 100 60 20],...
'callback',b1huidiao);
b2=uicontrol('parent',h0,...
'style','pushbutton',...
'units','points',...
'tag','b2',...
'backgroundcolor',[0.75 0.75 0.75],...
'string','锥形图',...
'position',[200 100 60 20],...
'callback',b2huidiao);
b3=uicontrol('parent',h0,...
'style','pushbutton',...
'units','points',...
'tag','b3',...
'backgroundcolor',[0.75 0.75 0.75],...
'string','关闭',...
'position',[125 60 60 20],...
'callback','close');
实例 78:图像分析(2)
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 78');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
load imdemos flower
imshow(flower)
colormap(copper)
n=size(X,1);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','轮廓图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 100 50 20],...
'callback',[...
'cla,',...
'[X,map]=imread(''flowers.tif'');,',...
'X=double(flower);,',...
'X=(0.25/256)*X;,',...
'C=copper(35);,',...
'set(gca,''colororder'',C(21:35,:),''box'',''on'');,',...
'imcontour(X,3);,',...
'axis([1 n 1 n]),',...
'axis(''ij''),',...
'axis(''square'')']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','伪彩图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 100 50 20],...
'callback',[...
'cla,',...
'D=-del2(X);,',...
'pcolor(D),',...
'axis([1 n 1 n]),',...
'axis(''ij''),',...
'shading(''flat'')']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','3D 表面图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 100 50 20],...
'callback',[...
'cla,',...
'D=-del2(X);,',...
'surf(X,D),',...
'colormap(copper),',...
'axis([1 n 1 n 0 1]),',...
'axis(''ij''),',...
'shading(''flat''),',...
'view(-20,75);']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[80 50 80 30],...
'callback','close');
实例 79:图像逻辑操作
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 79');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
load imdemos bacteria
imshow(bacteria)
k1=~(bacteria>100);
k2=filter2(fspecial('laplacian'),bacteria);
k3=(k2>-4)&k1;
k4=erode(k1)&(k3==0);
[r,c]=find(k4);
k5=bwselect(k1,c,r);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','二值分割图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 110 50 20],...
'callback',[...
'cla,',...
'imshow(k1)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','滤波结果图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 110 50 20],...
'callback',[...
'cla,',...
'imshow(k2)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','阈值化图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 110 50 20],...
'callback',[...
'cla,',...
'imshow(k3)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','目标的核',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[30 60 50 20],...
'callback',[...
'cla,',...
'imshow(k4)']);
b5=uicontrol('parent',h0,...
'units','points',...
'tag','b5',...
'style','pushbutton',...
'string','目标分割图',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 60 50 20],...
'callback',[...
'cla,',...
'imshow(k5)']);
b6=uicontrol('parent',h0,...
'units','points',...
'tag','b6',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 60 50 20],...
'callback','close');
实例 80:进度条的使用
h0=figure('toolbar','none',...
'position',[198 56 350 450],...
'name','实例 80');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.6 0.5],...
'visible','off');
I=imread('flowers.tif');
imshow(I)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','转换',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[50 80 60 25],...
'callback',[...
'handlek=waitbar(0,''initializing......'');,',...
'pause(0.5),',...
'i=1;,',...
'while i<=100,',...
'waitbar(i/100,handlek,[num2str(i),''%finished''],handlek),',...
'i=i+1;,',...
'pause(0.05),',...
'end,',...
'pause(1.5),',...
'cla,',...
'delete(handlek),',...
'Y=rgb2ntsc(I);,',...
'J=Y(:,:,1);,',...
'imshow(J)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[150 80 60 25],...
'callback','close');
例 81:MRI 数据的显示
load mri
D = squeeze(D);
h0=figure('toolbar','none',...
'position',[198 56 450 468],...
'name','实例 81');
h1=axes('parent',h0,...
'position',[0.3 0.45 0.5 0.5],...
'visible','off');
image_num = 8;
image(D(:,:,image_num))
axis image
colormap(map)
x = xlim;
y = ylim;
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[50 100 60 20],...
'string','二维图',...
'callback',[...
'cla,',...
'contourslice(D,[],[],image_num),',...
'axis ij,',...
'xlim(x),',...
'ylim(y),',...
'daspect([1,1,1]),',...
'colormap(''default'')']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 100 60 20],...
'string','三维图',...
'callback',[...
'cla,',...
'phandles = contourslice(D,[],[],[1,12,19,27],8);,',...
'view(3);,',...
'axis tight,',...
'set(phandles,''LineWidth'',2)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[50 50 60 20],...
'string','立体图',...
'callback',[...
'cla,',...
'Ds = smooth3(D);,',...
'hiso = patch(isosurface(Ds,5),''FaceColor'',
[1,.75,.65],''EdgeColor'',''none'');,',...
'hcap =
patch(isocaps(D,5),''FaceColor'',''interp'',''EdgeColor'',''none'');,',...
'colormap(map),',...
'view(45,30),',...
'axis tight,',...
'daspect([1,1,.4]),',...
'lightangle(45,30),',...
'lighting phong,',...
'isonormals(Ds,hiso),',...
'set(hcap,''AmbientStrength'',.6),',...
'set(hiso,''SpecularColorReflectance'',0,''SpecularExponent'',50)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 50 60 20],...
'string','关闭',...
'callback','close');
实例 82:图像类型转换
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 82');
h1=axes('parent',h0,...
'position',[0.2 0.45 0.5 0.5],...
'visible','off');
load earth
clims = [10 60];
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','强度图像',...
'position',[30 120 50 20],...
'callback',[...
'cla,',...
'imagesc(X,clims),',...
'colormap(gray)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','索引图像',...
'position',[100 120 50 20],...
'callback',[...
'cla,',...
'image(X),',...
'colormap(map),',...
'axis image']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','真彩图像',...
'position',[170 120 50 20],...
'callback',[...
'cla,',...
'image(X),',...
'axis image']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'style','pushbutton',...
'string','关闭',...
'position',[100 50 50 20],...
'callback','close');
实例 83:特殊的图像显示技术
h0=figure('toolbar','none',...
'position',[198 56 350 468],...
'name','实例 83');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','颜色条',...
'position',[30 120 50 20],...
'callback',[...
'cla,',...
'I = imread(''plane.jpg'');,',...
'imshow(I),',...
'colorbar']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'position',[100 120 50 20],...
'string','单帧显示',...
'callback',[...
'cla,',...
'load mri,',...
'imshow(D(:,:,:,7))']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','动画显示',...
'position',[30 60 50 20],...
'callback',[...
'cla,',...
'load mri,',...
'montage(D,map),',...
'mov=immovie(D,map);,',...
'colormap(map),',...
'movie(mov)']);
b4=uicontrol('parent',h0,...
'units','points',...
'tag','b4',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','纹理映射',...
'position',[170 60 50 20],...
'callback',[...
'cla,',...
'[x,y,z] = cylinder;,',...
'I = imread(''girls.jpg'');,',...
'warp(x,z,y,I);']);
b5=uicontrol('parent',h0,...
'units','points',...
'tag','b5',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','关闭',...
'position',[100 60 50 20],...
'callback','close');
b6=uicontrol('parent',h0,...
'units','points',...
'tag','b6',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','多帧显示',...
'position',[170 120 50 20],...
'callback',[...
'cla,',...
'load mri,',...
'montage(D,map)']);
实例 84:图像的几何操作
h0=figure('toolbar','none',...
'position',[198 56 400 468],...
'name','实例 84');
h1=axes('parent',h0,...
'position',[0.25 0.45 0.5 0.5],...
'visible','off');
I=imread('plane.jpg','jpg');
imshow(I)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','图像旋转',...
'position',[200 120 50 20],...
'callback',[...
'cla,',...
'k=str2num(get(e1,''string''));,',...
'I=imread(''plane.jpg'',''jpg'');,',...
'J=imrotate(I,k,''bilinear'');,',...
'imshow(J)']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','图像剪切',...
'position',[200 80 50 20],...
'callback',[...
'cla,',...
'imshow plane.jpg,',...
'I=imcrop;,',...
'imshow(I)']);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','pushbutton',...
'string','关闭',...
'position',[120 30 50 20],...
'callback','close');
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','edit',...
'horizontalalignment','right',...
'position',[50 80 100 20]);
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'backgroundcolor',[0.75 0.75 0.75],...
'style','text',...
'string','请输入旋转角度(0~90)度',...
'fontsize',12,...
'position',[40 100 130 20]);
实例 85:拉个朗日插值
h0=figure('toolbar','none',...
'position',[200 50 350 450],...
'name','实例 85');
h1=axes('parent',h0,...
'position',[0.10 0.45 0.8 0.5],...
'visible','off');
x=0:0.2:2*pi;
y=sin(x);
plot(x,y)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','拉格朗日插值',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 60 70 20],...
'callback',[...
'cla,',...
'strn=get(e1,''string'');,',...
'n=str2num(strn);,',...
'i=1;,',...
'x=0:0.2:2*pi;,',...
'for t=0:0.2:2*pi,',...
'y(i)=sin(t);,',...
'L(i)=lag(t,n);,',...
'i=i+1;,',...
'end,',...
'plot(x,y,''b*'',x,L,''r-''),',...
'legend(''sin(x)'',''插值函数'');,',...
'axis([0 7 -1.5 1.5])']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','误差比较',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 60 70 20],...
'callback',[...
'strn=get(e1,''string'');,',...
'n=str2num(strn);,',...
'strm=get(e2,''string'');,',...
'm=str2num(strm);,',...
'dd=abs(sin(m)-lag(m,n));,',...
'msgbox([''误差为:'',num2str(dd)],''计算结果'')']);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'fontsize',12,...
'string','5',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[50 100 40 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'fontsize',12,...
'string','1.20',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[200 100 40 20]);
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','阶数:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 100 30 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','误差点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[160 100 40 20]);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 20 60 20],...
'callback','close');
例 86:三次样条插值法
h0=figure('toolbar','none',...
'position',[200 50 350 450],...
'name','实例 86');
h1=axes('parent',h0,...
'position',[0.10 0.45 0.8 0.5],...
'visible','off');
x=0:0.2:2*pi;
y=sin(x);
plot(x,y)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','三次样条插值',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 60 70 20],...
'callback',[...
'y=0,',...
'sy=0,',...
'strn1=get(e2,''string'');,',...
'n1=str2num(strn1);,',...
'strn2=get(e3,''string'');,',...
'n2=str2num(strn2);,',...
'x=n1:0.2:n2;,',...
'i=1;,',...
'for t=n1:0.2:n2,',...
'y(i)=sin(t);,',...
'sy(i)=san(t,n1,n2);,',...
'i=i+1;,',...
'end,',...
'plot(x,y,''b*'',x,sy,''r-''),',...
'axis([0 7 -1.5 1.5]),',...
'legend(''sin(x)'',''N-Hermite 插值'')']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','误差比较',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 60 70 20],...
'callback',[...
'strdn1=get(e2,''string'');,',...
'n1=str2num(strdn1);,',...
'strdn2=get(e3,''string'');,',...
'n2=str2num(strdn2);,',...
'strdn=get(e1,''string'');,',...
'dn=str2num(strdn);,',...
'dd=abs(sin(dn)-san(dn,n1,n2));,',...
'msgbox([''误差为:'',num2str(dd)],''计算结果'')']);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'fontsize',12,...
'string','1.20',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[200 100 40 20]);
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','误差点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[160 100 40 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'fontsize',12,...
'string','1.00',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[20 85 40 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','第一节点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[15 105 50 20]);
e3=uicontrol('parent',h0,...
'units','points',...
'tag','e3',...
'style','edit',...
'fontsize',12,...
'string','3.00',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[100 85 40 20]);
t3=uicontrol('parent',h0,...
'units','points',...
'tag','t3',...
'style','text',...
'string','第二节点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[95 105 50 20]);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 20 60 20],...
'callback','close');
实例 87:NEWTON 插值
h0=figure('toolbar','none',...
'position',[200 50 350 450],...
'name','实例 87');
h1=axes('parent',h0,...
'position',[0.10 0.45 0.8 0.5],...
'visible','off');
x=0:0.2:2*pi;
y=sin(x);
plot(x,y)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','牛顿插值',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 60 70 20],...
'callback',[...
'strn=get(e1,''string'');,',...
'n=str2num(strn);,',...
'x=0:0.2:2*pi;,',...
'i=1;,',...
'for t=0:0.2:2*pi,',...
'y(i)=sin(t);,',...
'ynt(i)=newton(t,n);,',...
'i=i+1;,',...
'end,',...
'plot(x,y,''b*'',x,ynt,''r-''),',...
'axis([0 7 -1.5 1.5]),',...
'legend(''sin(x)'',''牛顿插值'')']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','误差比较',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 60 70 20],...
'callback',[...
'strn=get(e1,''string'');,',...
'n=str2num(strn);,',...
'strdn=get(e2,''string'');,',...
'dn=str2num(strdn);,',...
'dd=abs(sin(dn)-newton(dn,n));,',...
'msgbox([''误差为:'',num2str(dd)],''计算结果'')']);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'fontsize',12,...
'string','5',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[50 100 40 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'fontsize',12,...
'string','1.20',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[200 100 40 20]);
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','节点数:(<6)',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[10 100 40 30]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','误差点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[160 100 40 20]);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 20 60 20],...
'callback','close');
实例 88:hermite 插值
h0=figure('toolbar','none',...
'position',[200 50 350 450],...
'name','实例 88');
h1=axes('parent',h0,...
'position',[0.10 0.45 0.8 0.5],...
'visible','off');
x=0:0.2:2*pi;
y=sin(x);
plot(x,y)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','Hermite 插值',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 60 70 20],...
'callback',[...
'strn1=get(e2,''string'');,',...
'n1=str2num(strn1);,',...
'strn2=get(e3,''string'');,',...
'n2=str2num(strn2);,',...
'x=0:0.2:2*pi;,',...
'i=1;,',...
'for t=0:0.2:2*pi,',...
'y(i)=sin(t);,',...
'ynt(i)=hermite(t,n1,n2);,',...
'i=i+1;,',...
'end,',...
'plot(x,y,''b*'',x,ynt,''r-''),',...
'axis([0 7 -1.5 1.5]),',...
'legend(''sin(x)'',''Hermite 插值'')']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','误差比较',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 60 70 20],...
'callback',[...
'strn1=get(e2,''string'');,',...
'n1=str2num(strn1);,',...
'strn2=get(e3,''string'');,',...
'n2=str2num(strn2);,',...
'dn=str2num(strdn);,',...
'dd=abs(sin(dn)-hermite(dn,n1,n2));,',...
'msgbox([''误差为:'',num2str(dd)],''计算结果'')']);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'fontsize',12,...
'string','1.20',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[200 100 40 20]);
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','误差点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[160 100 40 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'fontsize',12,...
'string','1.00',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[20 85 40 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','第一节点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[15 105 50 20]);
e3=uicontrol('parent',h0,...
'units','points',...
'tag','e3',...
'style','edit',...
'fontsize',12,...
'string','3.00',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[100 85 40 20]);
t3=uicontrol('parent',h0,...
'units','points',...
'tag','t3',...
'style','text',...
'string','第二节点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[95 105 50 20]);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 20 60 20],...
'callback','close');
实例 89:mewton 形式的 hermite 插值
h0=figure('toolbar','none',...
'position',[200 50 350 450],...
'name','实例 89');
h1=axes('parent',h0,...
'position',[0.10 0.45 0.8 0.5],...
'visible','off');
x=0:0.2:2*pi;
y=sin(x);
plot(x,y)
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','N-Hermite 插值',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 60 70 20],...
'callback',[...
'strn1=get(e2,''string'');,',...
'n1=str2num(strn1);,',...
'strn2=get(e3,''string'');,',...
'n2=str2num(strn2);,',...
'x=0:0.2:2*pi;,',...
'i=1;,',...
'for t=0:0.2:2*pi,',...
'y(i)=sin(t);,',...
'ynh(i)=nhermite(t,n1,n2);,',...
'i=i+1;,',...
'end,',...
'plot(x,y,''b*'',x,ynh,''r-''),',...
'axis([0 7 -1.5 1.5]),',...
'legend(''sin(x)'',''N-Hermite 插值'')']);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'style','pushbutton',...
'string','误差比较',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[170 60 70 20],...
'callback',[...
'strdn1=get(e2,''string'');,',...
'n1=str2num(strdn1);,',...
'strdn2=get(e3,''string'');,',...
'n2=str2num(strdn2);,',...
'strdn=get(e1,''string'');,',...
'dn=str2num(strdn);,',...
'dd=abs(sin(dn)-nhermite(dn,n1,n2));,',...
'msgbox([''误差为:'',num2str(dd)],''计算结果'')']);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'fontsize',12,...
'string','1.20',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[200 100 40 20]);
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','误差点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[160 100 40 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'fontsize',12,...
'string','1.00',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[20 85 40 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','第一节点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[15 105 50 20]);
e3=uicontrol('parent',h0,...
'units','points',...
'tag','e3',...
'style','edit',...
'fontsize',12,...
'string','3.00',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[100 85 40 20]);
t3=uicontrol('parent',h0,...
'units','points',...
'tag','t3',...
'style','text',...
'string','第二节点:',...
'fontsize',12,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[95 105 50 20]);
b3=uicontrol('parent',h0,...
'units','points',...
'tag','b3',...
'style','pushbutton',...
'string','关闭',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[100 20 60 20],...
'callback','close');
实例 90:平方根法
h0=figure('toolbar','none',...
'position',[200 150 450 250]);
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 0 3 0;0 2 1 2;3 1 15 0;0 2 0 4;];,',...
'b=[1 6 5 8]'';,',...
'r=[a,b];,',...
'n=4;,',...
'tic,',...
'x=ch(a,b,n);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'msgbox([''X=
['',num2str(x(1)),num2str(x(2)),num2str(x(3)),num2str(x(4)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[290 100 30 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 125 80 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','平方根法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 91:gauss 消去法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 91');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 2 4 1 7;2 3 0 1 8;4 1 7 6 1;1 1 0 2 1;1 3 0 1 1;];,',...
'b=[15 14 19 5 6]'';,',...
'r=[a,b];,',...
'n=5;,',...
'tic,',...
'x=gauss(r,n);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'msgbox([''X=
['',num2str(x(1)),num2str(x(2)),num2str(x(3)),num2str(x(4)),num2str(x(5)),'']''],'
'方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[290 100 30 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 125 80 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','GS 消去法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 92:三角分解法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 92');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 2 4 1 7;2 3 0 1 8;4 1 7 6 1;1 1 0 2 1;1 3 0 1 1;];,',...
'b=[15 14 19 5 6]'';,',...
'n=5;,',...
'tic,',...
'x=dirang(a,b,n);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'msgbox([''X=
['',num2str(x(1)),num2str(x(2)),num2str(x(3)),num2str(x(4)),num2str(x(5)),'']''],'
'方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[270 100 50 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 125 80 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','三角分解法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 93:jacobi 迭代法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 93');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 0 3 0;0 2 1 2;3 1 15 0;0 2 0 4;];,',...
'b=[1 6 5 8]'';,',...
'n=4;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=jac(a,b,n,u);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'','',num2str(x(4)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','Jacobi 迭代法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 94:gauss 迭代法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 94');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 0 3 0;0 2 1 2;3 1 15 0;0 2 0 4;];,',...
'b=[1 6 5 8]'';,',...
'n=4;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=gs(a,b,n,u);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'','',num2str(x(4)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','GS 迭代法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 95:sor 迭代法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 95');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 0 3 0;0 2 1 2;3 1 15 0;0 2 0 4;];,',...
'b=[1 6 5 8]'';,',...
'n=4;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=sor(a,b,n,u);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'','',num2str(x(4)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','SOR 迭代法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 96:最速下降法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 96');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 0 3 0;0 2 1 2;3 1 15 0;0 2 0 4;];,',...
'b=[1 6 5 8]'';,',...
'n=4;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=cg(a,b,n,u);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'','',num2str(x(4)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','最速下降法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 97:共额梯度法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 97');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('abmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'a=[1 0 3 0;0 2 1 2;3 1 15 0;0 2 0 4;];,',...
'b=[1 6 5 8]'';,',...
'n=4;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=getd(a,b,n,u);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'','',num2str(x(4)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 100 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','共轭梯度法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 98:mewton 迭代法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 98');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('fabmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'n=3;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=nnewton(u,n);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','非线性方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 150 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','Newton 迭代法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 99:broyden 迭代法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 99');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('fabmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'n=3;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=broyden(u,n);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','非线性方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 150 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','Broyden 迭代法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 60 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 60 20],...
'callback','close');
实例 100:逆 broyden 迭代法
h0=figure('toolbar','none',...
'position',[200 150 450 250],...
'name','实例 100');
h1=axes('parent',h0,...
'position',[0.05 0.15 0.65 0.6],...
'visible','off');
I=imread('fabmatrix.bmp','bmp');
image(I)
axis off
huidiao=[...
'n=3;,',...
'u=zeros(n,1);,',...
'tic,',...
'[x,k]=fbroyden(u,n);,',...
'time1=toc;,',...
'T=num2str(time1);,',...
'set(e1,''string'',[T,''秒'']);,',...
'set(e2,''string'',num2str(k));,',...
'msgbox([''X=['',num2str(x(1)),'' '',num2str(x(2)),''
'',num2str(x(3)),'']''],''方程组的解'');'];
t1=uicontrol('parent',h0,...
'units','points',...
'tag','t1',...
'style','text',...
'string','非线性方程组如下:',...
'fontsize',15,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[20 150 150 20]);
e1=uicontrol('parent',h0,...
'units','points',...
'tag','e1',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 130 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','计算时间:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 130 50 20]);
e2=uicontrol('parent',h0,...
'units','points',...
'tag','e2',...
'style','edit',...
'horizontalalignment','right',...
'backgroundcolor',[1 1 1],...
'position',[295 100 35 20]);
t2=uicontrol('parent',h0,...
'units','points',...
'tag','t2',...
'style','text',...
'string','迭代步数:',...
'fontsize',10,...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[240 100 50 20]);
b1=uicontrol('parent',h0,...
'units','points',...
'tag','b1',...
'style','pushbutton',...
'string','逆 Broyden 迭代法',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 60 70 20],...
'callback',huidiao);
b2=uicontrol('parent',h0,...
'units','points',...
'tag','b2',...
'string','关闭',...
'style','pushbutton',...
'backgroundcolor',[0.75 0.75 0.75],...
'position',[250 30 70 20],...
'callback','close');
XOR
function [x,st]=sor(a,b,n,x1)
D=zeros(n,n);
L=zeros(n,n);
U=zeros(n,n);
for i=1:n
for j=1:n
if j==i
D(i,j)=a(i,j);
end
if j<i
L(i,j)=-a(i,j);
end
if j>i
U(i,j)=-a(i,j);
end
end
end
opt=oumiga(a);
Bsor=inv(D-opt*L)*[(1-opt)*D+opt*U];
fsor=opt*inv(D-opt*L)*b;
k=1;
x2=Bsor*x1+fsor;
e=x2-x1;
while norm(e,2)>1e-6
k=k+1;
x1=x2;
x2=Bsor*x1+fsor;
e=x2-x1;
end
x=x2;
st=k;