Matlab基础知识点 - 图文(5)

2019-08-26 17:23

MatLab讲义 2002年9月版

其中:

x,y,z :决定“网格”的位置,分别是(1*n)、(1*m)和(1*p)向量 X,Y,Z :三维网格坐标,它们都是(n*m)*p维数组

V :在网线节点上的三元函数值数组,维数也为(n*m)*p

xi,i,zi :分别决定垂直于x,y,z轴切面的位置向量。它们的维数可以不同。当取0维空阵时,表示没有切面存在。

切片上的函数值的大小可以用色轴上对应的颜色表示。V数组中的最大有限值和最小有限值定义了色轴的范围。又由于切片的位置可以任意设置,因此slice通过三维坐标点上的色彩变化把图形的表现能力扩展到四维

-(x^2+y^2+z^2)

例:函数R=xe的四维表现图.

x=-2:0.1:2; y=-2:0.25:2; z=-2:0.25:2; n=length(x); [X,Y,Z]=meshgrid(x,y,z); V=X.*exp(-X.^2-Y.^2-Z.^2);

xi=[-0.7,0.7]; yi=0.5; zi=-0.5; slice(X,Y,Z,V,xi,yi,zi);

xlabel(?x?);ylabel(?y?);zlabel(?z?);hold on colorbar(?horiz?) %表明颜色与数组的关系 view([30 45])

3.17 颜色板

(1)数字图象是指将一幅二维的图象表示成一个数值矩阵,矩阵的元素解释为像素的颜色值,为了显示由矩阵表示的数字图像。将矩阵的每个元素对应到当前色谱的某个行标号,并取该行的颜色值作为图像相应点的颜色。

(2)颜色板map是一个m*3的矩阵,其每行的值在0.0-1.0之间,分别表示红、绿、蓝三种颜色,颜色板的每一行定义了一种颜色(对应于RGB三元色)。

(3)两维数组可以用image的形式显示出来,数组中的每一个元素(i,j)的值表示该点的颜色或亮度,image用来显求图象,包括装入调色板,生成二维图象。image(X)表示求生成矩阵X所表求的图像。

(4)colormap(map)将颜色板设置成map。 colormap颜色板矩阵 简单颜色 常用函数查找表函数 红 绿 兰 颜色 函数名称 说明 0 0 0 黑 bone 蓝色调灰色 1 1 1 白 cool 青和品红浓淡色 1 0 0 红 copper 线性变化纯铜色调 0 1 0 绿 flag 红白蓝黑交错色 0 1 1 青兰 gray 线性灰度 hot 黑红黄白色 hsv 带饱和值的颜色查找表 jet 颜色查找表的一种变体 pink 淡粉红色 prism 光谱色 colormap(?default?) 将颜色板设置成缺省值.

Colorbar 在当前的图形上显求一个水平的或的直的颜色标尺. cmap=colormap 得到当前使用的颜色板矩阵.

colormap(hsv(128))产生128种颜色的hsv颜色板。hsv的颜色从红、黄、绿、青、兰、洋红再回到红,循环变化。

在MAYLAB中,图像由一个数据矩阵和一个颜色查找表矩阵组成,根据矩阵数据与像素颜色关系的不同,可以将图像分为三种,索引图像、亮度图像和真彩图像。索引图像是将数据矩阵的元素视为颜色查找表的索引;亮度图像的数据矩阵的元素为一个亮度值,该值线性对应于颜色查找表的索引;真彩图像的数据矩阵是一个m*n*3的三维矩阵,第三维表示每一个像素点的RGB三色,而不用颜色查找表。

demo目录中有一个名为durer.mat的文件,其中包含了两个矩阵X, map。

21

MatLab讲义 2002年9月版

例:人体脊骨的图像, load spine image(X)

colormap(bone);title(?人体脊骨图?) 例:(ex23)

%color(flag)

cmap=colormap;l=length(cmap); x=[1:l];y=x'*ones(size(x)); bar(x(1:2),y(1:2,:)) colormap('summer')

例:hot(8)从黑色到暗红、洋红、黄色、白色平滑过渡。

3.18 图形打印和读写

print [–device] [-option] :打印当前绘图窗口中的图形 其中:option 表示操作方式:

操作方式:-dps 单色postscript格式的文件 -dpsc 彩色postscript格式的文件

MATLAB能够读写多种格式的图形文件,包括TIFF、JPEG、BMP、PCX、XWD和HDF格式。函数imread能够读取其中任意一种格式的图像文件。

例:RGB=imread('ngc6543a.jpg');

figure('position',[100 100 size(RGB,2), size(RGB,1)]); image(RGB);

set(gca,'position',[0 0 1 1 ]);

例:load clown

imwrite(X,map,'clown.bmp');

3.19 动画制作

用MATLAB产生动画序列有二种方法:第一种方法是先保存多幅不同的图片,然后连续回播;第二种方法是连续不断地擦除并重画屏幕对象,在重画时屏幕对象不断变化,实现动画效果。这二种方法各有优缺点。前者适于来不及快速重画的场合,它只是回放预先准备的画面。后者用到了画、擦、重画技术,适于表现精度不高能够快速重画的场合。

例1:使用moviein函数建立动画图形。 axis equal m=moviein(8);

set(gca,'nextplot','replacechildren') for j=1:8

plot(fft(eye(j+8))) m(:,j)=getframe; end

set(gca,'nextplot','replacechildren') movie(m,10) 例2:

h = uicontrol('style','slider','position',... [10 50 20 300],'Min',1,'Max',16,'Value',1) for k = 1:16

plot(fft(eye(k+16))) axis equal

set(h,'Value',k)

22

MatLab讲义 2002年9月版

M(k) = getframe(gcf); end

例:使用擦除模式绘制动画图形。

a=[-8/3 0 0; 0 -10 10; 0 28 -1]; y=[35 -10 -7]'; h=0.01;

p=plot3(y(1),y(2),y(3),'.','erasemode','none','markersize',5); axis([0 50 -25 25 -25 25]); hold on for i=1:4000

a(1,3)=y(2); a(3,1)=-y(2); ydot=a*y; y=y+h*ydot;

set(p,'Xdata',y(1),'Ydata',y(2),'Zdata',y(3)) drawnow i=i+1; end

第四章 控制流

4.1 关系运算:

MATLIB有六种关系运算符:< <= > >= == ~= 结果1表示true, 0表示false。 其中< <= > >=只用于操作数的实部比较,== ~=用于比较实部和虚部。 A.当两个变量是标量时,a和b的关系成立,结果为1,否则结果为0。

B.当比较a和b是两个维数相同的数组时,按相同位置比较,结果是一个维数和a相同的数组,其元素由1和0组成。

C.当比较的一个是数组a,一个是标量b时,则把标量b和数组a的每一个元素按标量关系逐个比较,结果是一个维数和a相同的数组,其元素由1和0组成。 如:a=rand(5);b=a

c=a==b; c=a>b

c=a>1;c=a>0;c=a>0.5 x=(1:10);t=x>5

4.2 逻辑运算:|(或),&(与),~(非)和逻辑函数or、and、not、xor及any、all、find

MATLAB提供三个逻辑操作符&、|、~,同时又存在三个相应的M文件:all、or、not,这二组的作用是相同的,只是使用格式稍有差异。xor是第四个逻辑运算函数,完成异或操作。

在逻辑操作中,所有输入元素的非零值都当作1处理。逻辑运算的优先级最低。

例:x=[25 –5; 0 0.001] ~x ans=

0 0 1 0 y=[1 0;1 0]

z1=x&y;z2=and(x,y);z3=xor(x,y); z1=

1 0 0 0 z2=

1 0 0 0 z3=

0 1

23

MatLab讲义 2002年9月版

1 1

MATLAB还提供了许多测试用的逻辑函数,巧妙地使用这些函数,可得到意想不到的结果。 any: 若作用于一向量x,则当x中至少有一个非零元素时返回1,否则返回0,若x是矩阵,则对每一列执行any,返回一个元素为0或1的向量。主要作用测试矩阵中是否有非零元素。

如:a=rand(15)

any(a)=(1 1 1 1 1)

all:测试向量,若向量的所有元素非零,返回1,否则返回0,若对矩阵:则对每一列执行all操作。主要作用测定矩阵中是否有零元素。

all(a) t=~(x>5) 例:ex24.m

x=linspace(0,5,100) //产生0~5之间均匀分布的100个数据 y=cos(x)

z=(y>0).*y //将cos函数的负数置为0 z=z+0.3*(y<0) //将cos函数的正数值增加30% z=(x<=4).*z //将超过4时的z值置为0。 plot(x,z)

find:找出矩阵中非零元素及其下标。 例:a=zeros(5,20);

a(3,7)=0.5;a(4,15)=-0.4; [i,j,v]=find(a) i=

3 4 j=

7 15 v=

0.5000 -0.4000

运算符的优先级:

在一个表达式内可能有几个运算符。MATLAB为确定运算的次序设定了运算符的优先级。在同一优先级时,程序先左后右执行,在优先级不同时,先高级后低级执行。

最高 ()

~(取反) . .^ + -

.* ./ .\\ */ \\+ -

: < <= > >= ++ ~=- 最低 & |

4.3 if,else,elseif,end语句

if语句的格式: if <逻辑表达式>

语句集

elseif <逻辑表达式>

语句集 else

语句集 end

仅由if和end组成的语句,可根据逻辑表达式的值选择是否执行。 例:if rem(a,2)=0

disp(?a is even?)

24

MatLab讲义 2002年9月版

b=a/2 end 例:if x

disp(?矩阵x全为0?) else

disp(?矩阵x不全为0?) end

例:if and(a==1,b>5) ...... end

if是MATLAB中最常用的条件执行语句,它与end语句一起构成各种格式,

4.4.for-end循环

for循环,指定次数的重复循环执行语句。

格式:for <循环参数> = <初态>:<步长>:<终态> 循 环 体 end

当步长=1时,步长可以省略。 例:n=4; for i=1:n

for j=1:n if i==j

a(i,j)=2;

elseif min([i,j])==1 a(i,j)=1; else

a(i,j)=0; end end end

disp(?The matrix A is?);disp(a) 执行时:

The matrix A is 2 1 1 1 1 2 0 0 1 0 2 0 1 0 0 2 例:(test1.m)

for i=1:m for j=1:n

a(i,j)=1/(i+j-1); end end

例:for i=9.8:3:-9 i

end

执行时:i=9.800 i=6.800 3.800 i=0.800 i=-2.200 i=-5.200 i=-8.200 例:s=?abcdefghijk? for i=s

i end

%i分别等于s中和每一个字符。

25


Matlab基础知识点 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:知识产权专业大学毕业实习周记原创范文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: