220 likes | 396 Views
第五课 编制脚本程序. M 文本编辑器、基本控制流(条件语句、循环语句)、函数调用、调试. Matlab 编程基本要素. 编辑 / 调试器 条件结构 循环结构 主程序与函数调用 全局变量和局部变量 调试 性能优化 面向对象的编程. 编辑 / 调试器. 条件结构. 其他条件结构: switch ex case test1 (cmd1) case test2 (cmd2) end. if ii>100 a = 1; else a = 0; end. 循环结构. for ii=1:100
E N D
第五课 编制脚本程序 M文本编辑器、基本控制流(条件语句、循环语句)、函数调用、调试
Matlab编程基本要素 • 编辑/调试器 • 条件结构 • 循环结构 • 主程序与函数调用 • 全局变量和局部变量 • 调试 • 性能优化 • 面向对象的编程
条件结构 • 其他条件结构:switch ex case test1 (cmd1) case test2 (cmd2) end • if ii>100 a = 1; else a = 0; end
循环结构 for ii=1:100 a[ii] = (ii+1)/2; end 其他循环结构: while expression (commands) end
主程序与函数调用 • 函数标志: function fun_name(arg1,arg2) • 调用: 在主程序里,直接调用
全局变量和局部变量 • 局部变量:仅存在于该函数的运行过程中。 • 全局变量:全共享的变量,用global定义。 • 在主程序中的变量与全局变量
调试 设置断点 步进 步进出 停止调试 步进入 去除断点 执行直到断点
性能优化 • 循环向量化 • 尽可能使用matlab提供的函数指令 • 循环内数组的预配置 • 采用mex文件执行循环 • 尽量使用m函数代替m脚本 • JIT和加速器的加速
实验内容:利用m脚本绘制特殊图形、三维图形和显示图像实验内容:利用m脚本绘制特殊图形、三维图形和显示图像
三维图形效果 • 透视 • 镂空 • 裁剪
透 视 • [X0,Y0,Z0] = sphere(30); • mesh(X0,Y0,Z0); • hidden off • axis equal, axis off
镂 空 • t = linspace(0,2*pi,100); r = 1-exp(-t/2).*cos(4*t); • [x,y,z] = cylinder(r,60); • ii = find(x<0&y>0); • z(ii) = NaN; • surf(x,y,z); colormap(spring);
裁 剪 • x = [-8:0.05:8]; y = x; • [X,Y] = meshgrid(x,y); ZZ = X.^2-Y.^2; • ii = find(abs(X)>6|abs(Y)>6); • ZZ(ii) = zeros(size(ii)); • surf(X,Y,ZZ), shading interp, colormap(copper)
特殊图形指令 • 面域图 area • 直方图 bar barh bar3 bar3h • 饼图 pie pie3 • 填色图 fill fill3
面域图 area • x = -2:2 • y = [3,5,2,4,1;3,4,5,2,1;5,4,3,2,5] • cum_sum = cumsum(y); • area(x',y',0) • legend('因素A','因素B','因素C'),grid on,colormap(spring)
直方图 bar barh • x = -2:2 • y = [3,5,2,4,1;3,4,5,2,1;5,4,3,2,5] • subplot(1,2,1),bar(x',y','stacked') • xlabel('x'), ylabel('\Sigma y'), colormap(cool) • legend('因素A','因素B','因素C') • subplot(1,2,2), barh(x',y','grouped') • xlabel('y'), ylabel('x') • legend('因素A','因素B','因素C')
直方图 bar3 bar3h • subplot(1,2,1), bar3(x',y',1) • xlabel('因素ABC'), ylabel('x'),zlabel('y') • colormap(summer) • subplot(1,2,2), bar3h(x',y','grouped') • ylabel('y'), zlabel('x')
饼图 pie pie3 • a = [1,1.6,1.2,0.8,2.1]; • subplot(1,2,1), pie(a,[1 0 1 0 0]), • legend({'1','2','3','4','5'}); • subplot(1,2,2), pie3(a),colormap(cool)
填色图 fill • n = 10; • dt = 2*pi/n; t = 0:dt:2*pi; • t = [t,t(1)]; • x = sin(t); y = cos(t); • fill(x,y,'c'); axis off • gtext('十边行');
填色图 fill3 • xc = ones(2,4)/2; • x = [xc;[0 1 1 0]]; • y = [xc;[0 0 1 1]]; • z = [1 1 1 1;0 0 0 0;0 0 0 0]; • c = [1 0 0 1;0 1 0 1;0 0 1 0]; • fill3(x,y,z,c),view([-10,56]),colormap cool • xlabel('x'), ylabel('y'), box on, grid on
显示图像 • imread • imshow • demo(image和video) • matlab: I = imread(‘image path’); imshow(I);