disp('Low')
elseifguess>x
disp('High')
else
disp('Youwon')
test=0;
break;
end
n=n-1;
end
iftest==1
disp('Youlost')
end
例21:
递推与递归
核反应堆中有A和B两种粒子,每秒中内1个A粒子分裂成
3个B粒子,而1个B粒子分裂成1个A粒子和2个B粒子。
若在时刻t=0反应堆中只有1个A粒子,问t=20时反应堆中有多少个A粒子,多少个B粒子,共有多少个粒子,function[outf,outg,outfg]=fg(x)
%函数[outf,outg,outfg]=fg(x)计算A粒子与B粒子的个数%输入参数x是自然数
%输出参数outf是A粒子个数
%输出参数outg是B粒子个数
%输出参数outfg是A粒子和B粒子的总数
%主函数
[m,n]=size(x);%输入参数x的行数和列数
if(m~=1)|(n~=1)|(x<0)|(round(x)~=x)%如果输入参数不是自然数
y=[];%输出为空
disp('输入参数应为自然数');%显示出错
elseifx>=0
outf=f(x);
outg=g(x);
outfg=outf+outg;
end
functiony=f(x);
%子函数,计算A粒子
ifx==0
y=1;
elseifx>0
y=g(x-1);
end
functiony=g(x);
%子函数,计算B粒子
ifx==0
y=0;
elseifx>0
y=3*f(x-1)+2*g(x-1);
end
例4-3在0?
x?
2,区间内,绘制曲线
y=2e-0.5xcos(4πx)
程序如下:
x=0:
pi/100:
2*pi;
y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)
例4-6用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。
程序如下:
x=0:
pi/100:
2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2
例4-7采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx)。
程序如下:
x=0:
pi/100:
2*pi;
y1=0.2*exp(-0.5*x).*cos(4*pi*x);plot(x,y1)
holdon
y2=2*exp(-0.5*x).*cos(pi*x);plot(x,y2);
holdoff
例4-8在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx)和y2=2e-0.5xcos(πx),标记两曲线交叉点。
程序如下:
x=linspace(0,2*pi,1000);
y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);k=find(abs(y1-y2)<1e-2);%查找y1与y2相等点(近似相等)的下标x1=x(k);%取y1与y2相等点的x坐标y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);%求y1与y2值相等点的y坐标plot(x,y1,x,y2,„k:
?
x1,y3,„bp?
);%y1缺省蓝色实线,y2黑色
点线,y3蓝色五角星例4-9在0?
x?
2,区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。
程序如下:
x=0:
pi/100:
2*pi;
y1=2*exp(-0.5*x);
y2=cos(4*pi*x);
plot(x,y1,x,y2)
title('xfrom0to2{\pi}');%加图形标题
xlabel('VariableX');%加X轴说明
ylabel('VariableY');%加Y轴说明
text(0.8,1.5,'曲线y1=2e^{-0.5x}');%在指定位置添加图形说明text(2.5,1.1,'曲线y2=cos(4{\pi}x)');legend(„y1?
„y2?
)%加图例
例4-10在同一坐标中,可以绘制3个同心圆,并加坐标控制。
程序如下:
t=0:
0.01:
2*pi;
x=exp(i*t);
y=[x;2*x;3*x]';
plot(y)
gridon;%加网格线
boxon;%加坐标边框
axisequal%坐标轴采用等刻度
例4-11用fplot函数绘制f(x)=cos(tan(πx))的曲线。
命令如下:
fplot('cos(tan(pi*x))',[0,1],1e-4)例4-13绘制y=10x2的对数坐标图并与直角
坐标图进行比较。
x=1:
10;
y=10*(x.^2);
subplot(2,2,1),plot(x,y),title('直角坐标')
subplot(2,2,2),loglog(x,y),title('双对数')
subplot(2,2,3),semilogx(x,y),title('x轴对数')
subplot(2,2,4),semilogy(x,y),title('y轴对数')
例4-12绘制r=sin(t)cos(t)的极坐标图,并标记数据点。
程序如下:
t=0:
pi/50:
2*pi;
r=sin(t).*cos(t);
polar(t,r,'-*');
例4-14分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。
程序如下:
x=0:
pi/10:
2*pi;
y=2*sin(x);
subplot(2,2,1);bar(x,y,'g');title('bar(x,y,''g'')');axis([0,7,-2,2]);
subplot(2,2,2);stairs(x,y,'b');title('stairs(x,y,''b'')');axis([0,7,-2,2]);
subplot(2,2,3);stem(x,y,'k');title('stem(x,y,''k'')');axis([0,7,-2,2]);
subplot(2,2,4);fill(x,y,'y');title('fill(x,y,''y'')');axis([0,7,-2,2]);
例4-15绘制图形:
(1)某企业全年各季度的产值(单位:
万元)分别为:
2347,1827,2043,3025,试用饼图作统计
分析。
(2)绘制复数的相量图:
7+2.9i、2-3i和-1.5-6i。
程序如下:
subplot(1,2,1);
pie([2347,1827,2043,3025]);title('饼图');
legend('一季度','二季度','三季度','四季度');
subplot(1,2,2);
compass([7+2.9i,2-3i,-1.5-6i]);title('相量图');
例4-17绘制三维曲线。
程序如下:
t=0:
pi/100:
20*pi;
x=sin(t);
y=cos(t);
z=t.*sin(t).*cos(t);
plot3(x,y,z);
title('Linein3-DSpace');xlabel('X');ylabel('Y');zlabel('Z');
gridon;
例4-18绘制三维曲面图z=sin(x+sin(y))-x/10。
程序如下:
[x,y]=meshgrid(0:
0.25:
4*pi);z=sin(x+sin(y))-x/10;
mesh(x,y,z);
axis([04*pi04*pi-2.51]);例4-19在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。
程序如下:
[x,y]=meshgrid(-8:
0.5:
8);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
subplot(2,2,1);
mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);
meshc(x,y,z);title('meshc(x,y,z)')subplot(2,2,3);
meshz(x,y,z)title('meshz(x,y,z)')subplot(2,2,4);
surf(x,y,z);title('surf(x,y,z)')例4-20绘制标准三维曲面图形。
程序如下:
t=0:
pi/20:
2*pi;
[x,y,z]=cylinder(2+sin(t),30);subplot(2,2,1);surf(x,y,z);[x,y,z]=sphere;
subplot(2,2,2);surf(x,y,z);[x,y,z]=peaks(30);
subplot(2,1,2);surf(x,y,z);例4-21绘制三维图形:
(1)绘制魔方阵的三维条形图。
(2)以三维杆图形式绘制曲线y=2sin(x)。
(3)已知x=[2347,1827,2043,3025],绘制饼图。
(4)用随机的顶点坐标值画出五个黄色三角形。
程序如下:
subplot(2,2,1);
bar3(magic(4))
subplot(2,2,2);
y=2*sin(0:
pi/10:
2*pi);stem3(y);
subplot(2,2,3);
pie3([2347,1827,2043,3025]);subplot(2,2,4);
fill3(rand(3,5),rand(3,5),rand(3,5),'y')
例4-22绘制多峰函数的瀑布图和等高线图。
程序如下:
subplot(1,2,1);
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z)
xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');
subplot(1,2,2);
contour3(X,Y,Z,12,'k');%其中12代表高度的等级数xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');
例4-23绘制椭球面
xuv,3cossin,
yuv,2coscos,
zu,sin,
u=-2*pi:
0.1:
2*pi;
v=-2*pi:
0.1:
2*pi;
ezmesh('3*cos(u)*sin(v)','2*cos(u)*cos(v)','sin(u)',
[-2*pi,2*pi,-2*pi,2*pi])例6-31绘制了peaks函数曲面并且将它绕z轴旋转。
程序如下
[X,Y,Z]=peaks(30);
surf(X,Y,Z)
axis([-3,3,-3,3,-10,10])axisoff;
shadinginterp;
colormap(hot);
m=moviein(20);%建立一个20列大矩阵fori=1:
20
view(-37.5+24*(i-1),30)%改变视点
m(:
i)=getframe;%将图形保存到m矩阵end
movie(m,2);%播放画面2次读取图像信息INFO=imfinfo('FILENAME.FMT')
【例】按256灰度级显示【例】按256灰度级显示
I=imread('moon.tif');I=imread('moon.tif');
imshow(I,256)imshow(I,256)
colorbarcolorbar
【例】按8灰度级显示【例】按8灰度级显示
I=imread('moon.tif');I=imread('moon.tif');
imshow(I,8)imshow(I,8)
colorbarcolorbar
【例】按最大灰度范围显示【例】按最大灰度范围显示
I=imread('moon.tif');I=imread('moon.tif');
imshow(I,[])imshow(I,[])
colorbarcolorbar
【例】按指定灰度范围显示【例】按指定灰度范围显示
I=imread('moon.tif');I=imread('moon.tif');
imshow(I,[64,128])imshow(I,[64,128])
colorbarcolorbar
【例】双精度灰度图像【例】双精度灰度图像
bw1=zeros(100,100);bw1=zeros(100,100);
bw1(2:
2:
98,2:
2:
98)=1;bw1(2:
2:
98,2:
2:
98)=1;
imshow(bw1);imshow(bw1);
whosbw1whosbw1
【例】8位的灰度图像【例】8位的灰度图像
bw1=zeros(100,100);bw1=zeros(100,100);
bw1(2:
2:
98,2:
2:
98)=1;bw1(2:
2:
98,2:
2:
98)=1;
bw2=uint8(bw1);bw2=uint8(bw1);
imshow(bw2,[]);imshow(bw2,[]);
colorbarcolorbar
whosbw2whosbw2
【例】二值图像【例】二值图像
bw1=zeros(100,100);bw1=zeros(100,100);
bw1(2:
2:
98,2:
2:
98)=1;bw1(2:
2:
98,2:
2:
98)=1;
bw2=uint8(bw1);bw2=uint8(bw1);
bw3=bw2~=0;bw3=bw2~=0;
imshow(bw3);imshow(bw3);
whosbw3whosbw3
【例】显示二值图像【例】显示二值图像
BW=imread('circles.tif');BW=imread('circles.tif');
imshow(BW);imshow(BW);
【例】取反显示二值图像【例】取反显示二值图像BW=imread('circles.tif');BW=imread('circles.tif');imshow(~BW);imshow(~BW);
【例】显示二值图像【例】显示二值图像
clfclf
BW=imread('circles.tif');BW=imread('circles.tif');imshow(BW,[100;001]);imshow(BW,[100;001]);
【例】显示索引图像【例】显示索引图像
[X,MAP]=imread('canoe.tif');[X,MAP]=imread('canoe.tif');imshow(X,MAP);imshow(X,MAP);
colorbarcolorbar
【例】显示伪彩色图像【例】显示伪彩色图像
I=imread('moon.tif');I=imread('moon.tif');imshow(I,jet(256))imshow(I,jet(256))
colorbarcolorbar
显示真彩色图像。
显示真彩色图像。
【例】【例】
rgb=imread('flowers.tif');rgb=imread('flowers.tif');imshow(rgb);imshow(rgb);
例如:
显示多帧图像数组I的第七帧例如:
显示多帧