1 / 53

主讲:蒋志迪 宁波大学信息科学与工程学院 办公室:曹光彪信息楼 424 电话: 665929 email : bighandjzd@126

多媒体信息处理系统设计. MATLAB 基础 http://www2.nbu.edu.cn/jiangzhidi/mediasystem http://bighand.zxq.net/mediasystem. 主讲:蒋志迪 宁波大学信息科学与工程学院 办公室:曹光彪信息楼 424 电话: 665929 email : bighandjzd@126.com. 主要内容. Matlab 概述 软件界面简介 变量、数组、矩阵和字符串 程序设计 符号运算. Matlab 概述. MATrix LABoratory

Download Presentation

主讲:蒋志迪 宁波大学信息科学与工程学院 办公室:曹光彪信息楼 424 电话: 665929 email : bighandjzd@126

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 多媒体信息处理系统设计 MATLAB基础http://www2.nbu.edu.cn/jiangzhidi/mediasystem http://bighand.zxq.net/mediasystem 主讲:蒋志迪 宁波大学信息科学与工程学院 办公室:曹光彪信息楼424 电话:665929 email:bighandjzd@126.com

  2. 主要内容 • Matlab概述 • 软件界面简介 • 变量、数组、矩阵和字符串 • 程序设计 • 符号运算

  3. Matlab概述 • MATrix LABoratory • 由美国Math Works公司开发 • 适合多学科、功能强大 • 发展自今,已集成科学计算、图像处理、声音处理……(包括微积分、代数、数值分析等) • 矩阵计算功能强大、还支持符号运算 • 高级课程的基本教学工具 • 直译式语言,比其他程序设计语言容易

  4. MATLAB的主要特点 • 运算符和库函数极其丰富,语言简洁,编程效率高 • 图形功能强大 • 功能强大的工具箱 • 易于扩充

  5. MATLAB发展历史 • MATLAB 是“ 矩阵实验室”( MATrix LABoratory)的缩写,最初版本是由 Cleve Moler 博士用 FORTRAN 语言开发的矩阵分析软件 80 年代初期,由 Cleve Moler 和 John Little采用 C 语言改写了 MATLAB 的内核。成立了 Mathworks 软件开发公司,并于1984 年将 MATLAB 正式推向市场。 • 1992年初推出了应用于 Windows 操作系统的 MATLAB 4.x 版本。 • 1997年推出 5.1 版本。 • 1998年推出 5.2 版本。 • 1999年推出 MATLAB 5.3 版本(Release 11) • 2000年又推出了更为简便易学的 MATLAB 6.0 版本(Release 12) • 2003年推出Matlab6.5.1 (Release 13) • 2004年推出Matlab7.0 (Release 14) • 2007年3月1日发布Matlab 2007a(支持多核操作) • 2008年10月9日发布MATLAB 2008b • 2009年9月4日Matlab R2009b • 2010年3月5日发布了Matlab R2010a(Matlab7.10)

  6. 软件界面简介 • 命令窗口 • 开始start面板 • 工作空间窗口 • 命令历史窗口 • 当前目录窗口 • M文件编辑窗口 • 图形窗口

  7. 2种工作方式 • 命令窗口Command Window中直接输入 • 最简单的计算器使用法 • M脚本文件(程序执行方式) • 使用M文件编辑窗口或其他纯文本编辑软件

  8. Command Window命令窗口 1. 直接计算 (12+2*(7-4))/3^2 2. 变量、矩阵输入 A = [1,2,3; 4,5,6; 7,8,9] 或: A=[1,2,3 4,5,6 7,8,9] 通过反复按键盘的箭头键,实现指令回调和编辑

  9. Matlab搜索路径设置 • 修改当前目录 • Current Directory当前目录浏览器 • CD命令 • 搜索目录设置(添加工具箱时比较有用) • 搜索路径设置器File—Set Path… • path命令

  10. Matlab帮助系统 • 命令行帮助 • help 命令 / doc 命令 • 联机帮助 • helpwin/doc或者菜单操作“Help--MATLAB Help" • 演示帮助 • demo

  11. MATLAB 通用命令

  12. 变量与运算 • 变量无需预先定义类型 1)以字母开头,后面可跟字母,数字和下短线; 2)大小写字母有区别,不超过31个字符。 • 书写自由:多个表达式可以写在一行 • 表达式后面跟分号“;”,将不显示结果; • 跟‘,’或‘回车’,将显示表达式的计算结果; • 当一个表达式没写完就需换行时,应在该行末尾键入‘…’之后再回车换行。

  13. 数据显示格式 • format long (short、short e、rational等) • 复数 • 1+2i; 5-4*i

  14. 变量名 意义 help 线上说明, 如 help quit who 列出所有定义过的变量名称 ans 最近一次计算结果的变量名 eps MATLAB定义的正的极小值=2.2204e-16 pi 内建的π值 Inf 或 inf ∞值,正无穷大 NaN或nan 不定值 i 或 j 虚数单位 - 1 version MATLAB版本 nargin 函数输入参数的个数 nargout 函数输出参数的个数 预定义变量

  15. MATLAB中的语句 1) 一般:变量=表达式; 例如:x=sin(pi/12)-tan(pi/10)*8; 2)也可以:表达式; 此时等价于 ans=表达式

  16. 数组的创建 • 常采用“first:increment:last”和函数“linspace”两种方式来创建数组,如 x=1:5 x=0 : 0.1 : 1 x=linspace(0, pi, 11) • 引用格式:x(index) %index可以是数组 • x(3) • x(1:5) • x(1:2:5) • x([2,1,4])

  17. 数组函数 • max(x) 找出x数组的最大值 • max(x,y) 找出x及y数组的最大值,会有二个极值分属x及y数组 • [y,i]=max(x) 找出x数组的最大值以y显示,其在x数组的位置以i显示 • min(x) 找出x数组的最小值 • min(x,y) 找出x及y数组的最小值,会有二个极值分属x及y数组 • [y,i]=min(x) 找出x数组的最小值以y显示,其在x数组的位置以i显示 • mean(x) 找出x数组的平均值 • median(x) 找出x数组的中位数 • sort(v) 按升序排列 • sum(x) 计算x数组的总和值 • prod(x) 计算x数组的连乘值 • cumsum(x) 计算x数组的累积总和值 • cumprod(x) 计算x数组的累积连乘值

  18. 矩阵的创建 • 特殊矩阵 • zeros(m, n) m行n列的零矩阵 • ones(m, n) m行n列的全1矩阵 • eye(n) n阶单位矩阵 • rand(m, n) m行n列的均匀分布随机数矩阵 • randn(m,n) m行n列的正态分布随机数矩阵 • diag(v) 以数组v为对角线元素的对角阵 • triu(x) 矩阵x的上三角阵 • tril(x) 矩阵x的下三角阵

  19. 矩阵(包括数组)的剪裁和拼接 从一个矩阵中取出若干行(列)构成新矩阵称为剪裁,“:”是非常重要的剪裁工具。 例如, 键入:A=[1 2 3;4 5 6;7 8 9]; A(3, :) %A的第三行 输出:ans= 7 8 9

  20. 键入:B=A(2:3, :) %A的2,3行 输出:B= 4 5 6 7 8 9 键入:A(:, 1) %A的第一列 输出:ans= 1 4 7 键入: A=[1 2 3;4 5 6;7 8 9]; C=A(1:2, [1 3]) 输出:C= 1 3 4 6 还有A(1:2:3, 3:-1:1),

  21. 将几个矩阵接在一起称为拼接,左右拼接行数要相同,上下拼接列数要相同。将几个矩阵接在一起称为拼接,左右拼接行数要相同,上下拼接列数要相同。 键入:D=[C, zeros(2,1)] 输出:D= 1 3 0 4 6 0 键入:E=[D;eye (2),ones(2,1)] 输出:E= 1 3 0 4 6 0 1 0 1 0 1 1

  22. 数组和矩阵运算 • 标量、数组(包括矩阵)的通常意义下的运算: “+”, “–”, “*”, “/”, “^” , “ ’ ” • 数组(包括矩阵)对应位置元素进行运算的特殊运算符: “.*”, “./”, “.^” + 矩阵加法; - 矩阵减法; * 矩阵乘法; ’ 矩阵转置; ^ 矩阵乘幂; \ 矩阵左除 ; / 矩阵右除。 例如,设A是可逆矩阵, AX=B的解是A左除B,即X=A\B; XA=B的解是A右除B,即X=B/A。

  23. 矩阵函数 inv(A) 矩阵的逆; rank(A) 矩阵秩 det(A) 矩阵的行列式; orth(A) 正交化 poly(A) 特征多项式 d=eig(A), [v,d]=eig(A) 特征值与特征向量 size(A) 返回一个二元素向量,第一个元素 为A的行数, 第二个元素为A的列数 size(A,1) 返回A的行数; size(A,2) 返回A的列数 length(A) 返回max(size(A)) diag(A) 提取A的对角元素返回列向量 reshape(c,2,6) 按2行6列重排矩阵

  24. MATLAB中的数学函数 三角函数:sin(x), sinh(x), asin(x), sinh(x), cos(x), tan(x), cot(x), sec(x), csc(x)等。 指数函数:exp(x), log(x), log10(x), log2(x), sqrt(x)等。 整值函数:朝零方向取整fix(x), 朝-方向取整 floor(x), 朝+方向取整ceil(x), 四舍五入到最接近的整数round(x), 符号函数sign(x)等 其他数学函数:绝对值或复数的幅值abs(x)

  25. 四种循环和选择控制结构 while循环 for循环 if-else-end结构 switch-case-end结构 程序编写

  26. 保存按钮 点击即可运行 在命令窗口进入程序编辑器输入、保存M文件,然后在命令窗口键入你建立的 M文件的文件名即可逐次执行其中的命令。 在此空白框键入M文件

  27. M文件 命令M文件:一些命令行的组合。 函数M文件:定义函数的程序,具有特定格式。 例:x=[2 3]; f=cost(x) function f=cost(x) f=100*(x(2)-x(1)^2)^2-(1-x(1))^2; 函数M文件的形式为 function [输出变量列表]=函数名(输入变量列表) 函数体语句;

  28. function [income,profit]=total(ppri,spri,samnt) income= sum(spri.*samnt); profit=income-sum(ppri.*samnt); P=[7.15 8.25 3.2 10.3 6.68 12.03 16.85 17.51 9.3]; Sp=[11.1 15 6 16.25 9.9 18.25 20.8 24.15 15.5] Sa=[568 1205 753 580 395 2104 1538 810 694]; [in,pr]=total(P,Sp,Sa)

  29. 程序流程控制 循环选择控制结构 关系运算符: <, >, <=, >=, = =(等于),~=(不等于) 关系运算比较两个数值,当给出的关系式成立时,结果为1(表示真),否则为0(表示假)。 逻辑运算符: &(与运算), |(或运算),~(非运算)

  30. 类型 语法 解释 类型 语法 解释 循环语句 for 循环变量=数组, 命令组; end 对于循环变量依次取数组中的值,循环执行命令组直到循环变量遍历数组 分支语句 Switch分支变量, Case 值1, 命令组1; Case 值2, 命令组2; ……; otherwise 命令组k; end 按分支变量的取值,执行命令组 循环语句 while 条件式, 命令组; end 当条件满足时执行循环命令组 分支语句 if 条件式1, 命令组1; elseif 条件式2, 命令组2; ……; else 命令组k; end 按条件执行命令组 中断语句 pause 暂停执行,直到击键;pause(n)表示暂停n秒后继续 中断语句 break 跳出循环体 中断语句 return 中断该程序,返回 中断语句 error(字符串) 提示错误并显示字符串说明 控制流

  31. No 关系表达式 Yes statments end的后续语句 循环选择控制结构 While循环的一般形式为: while 关系表达式 {statments} end 如: s=0;n=1 while s<=100 s=s+n^2; n=n+1; end n,s

  32. k=1, x=a(:,1) No k<=size(a,2) Yes statments k=k+1, x= a(:,k) end的后续语句 for循环 for循环的一般形式 for x=a {statments} end 如, for k=1:4 x(k)=1/k; end format rat %设置输出格式为有理数 x

  33. No 关系表达式 Yes statments end的后续语句 if-else-end结构 最简单的形式: if 关系表达式 {statments} end

  34. if-else-end结构 当有三个或更多的选择时 if 关系表达式(1) {statments}(1) elseif 关系表达式(2) {statments}(2) ... elseif 关系表达式(n) {statments}(n) else {statments}(n+1) end 例如,可用以下程序得到符号函数。 function y=SIGN(x) if x<0 y=-1; elseif x==0 y=0; else y=1; end

  35. switch-case-end多分支选择结构 switch lower(NAME) case {'zhanghua', 'lijiang'}, disp( 'He comes from China.') case 'peter', disp( 'He comes from United States.') case 'monika', disp( 'She comes from Germany') otherwise, disp( 'He or she comes from other... countries.') end

  36. switch-case-end多分支选择结构 一般形式 switch 表达式(标量或字符串) case 值1, 语句体1 case {值2.1,值2.2, ...} 语句体2 ... otherwise, 语句体n end

  37. 字符串操作 键入:g='3*x^2+2*x+6=0'显示: g= 3*x^2+2*x+6=0 键入:name='ZhangHua' 显示: name= Zhang Hua 键入:f='cos(x)' 显示:f= cos(x) 可用class函数测试变量的类型

  38. 例 用专门函数char创建多行串数组. S1=char('This string array','has two rows.') S1 = This string array has two rows. S2=char('这','字符','串数组',' ','由5行组成') size(S2) 2行17列 5行5列

  39. 例 最常用的数组/字符串转换函数 num2str, mat2str B=rand(2,3); B_str=mat2str(B,4) [0.1389 0.1987 0.2722;0.2028 0.6038 0.1988] Expression=['exp(-',B_str,')'] exp(-[0.1389 0.1987 0.2722;0.2028 0.6038 0.1988]) eval(Expression) ans = 0.8703 0.8198 0.7617 0.8164 0.5467 0.8197

  40. 综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。 a=2; w=3; t=0:0.01:10; y=exp(-a*t).*sin(w*t); plot(t,y,'b'), hold on, plot(t,zeros(size(t)),‘k’); %画水平线 [y_max,i_max]=max(y); plot(t(i_max),y_max,'r.','MarkerSize',20) t_text=['t=',num2str(t(i_max))]; y_text=['y=',num2str(y_max)]; max_text=char('maximum',t_text,y_text); text(t(i_max)+0.3,y_max+0.05,max_text) tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; title(tit),xlabel('t'),ylabel('y'), hold off

  41. 符号运算 数学实验之 --MATLAB初步 字符串入门 实验目的 符号表达式的建立 软件环境 数值运算 符号和数值之间的转换 图形功能 因式分解、展开和简化 程序编写 符号运送 符号与数值间的转换 课堂延伸 符号微积分 操  练 符号函数画图 结 束

  42. 符号运算 符号变量和符号表达式的建立 1.用函数syms定义符号变量和符号表达式 调用形式:syms var1 var2 …. 例:syms y u; p=exp(-y/u); q=y^2+u^3+u*y 2.用函数sym来建立符号表达式 调用格式为: 变量=sym(‘表达式') 键入: y=sym(‘2+cos(x)’) 将显示 y= 2+cos(x) 键入 X=sym(‘[a,b,c;d,e,f;b,f,d]’) 将显示 X= [a,b,c] [d,e,f] [b,f,d]

  43. 例 求矩阵 的行列式值、逆和特征根 syms a11 a12 a21 a22 A=[a11,a12;a21,a22] DA=det(A), IA=inv(A), EA=eig(A)

  44. 符号运算与操作 符号表达式可以进行加、减、乘、除及幂运算等的基本的代数运算。 运算符: + - * / ^ 因式分解、展开和简化 • collect 合并同类项 • expand 展开 • factor 分解因式 • simplify 化简 • simple 求表达式的最简形式

  45. 例用符号计算验证三角等式 syms fai1 fai2 y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2)) 输出为: y = sin(fai1-fai2)

  46. 符号微积分 • diff(f) 对缺省变量求微分 • diff(f,v) 对指定变量v求微分 • diff(f,v,n) 对指定变量v求n阶微分 • int(f) 对f表达式的缺省变量求积分 • int(f,v) 对f表达式的v变量求积分 • int(f,v,a,b) 对f表达式的v变量在(a,b) 区间求定积分

  47. 例 验证积分 syms A t tao w yf=int(A*exp(-i*w*t),t,-tao/2, tao/2); Yf=simple(yf) Yf = 2*A*sin(1/2*tao*w)/w

  48. 符号和数值之间的转换 • 用sym将数值表达式转换为符号表达式 调用格式为:变量=sym(‘数值表达式’) 如,键入:a=sym('1+2*sqrt(3)') 显示:a= 1+2*sqrt(3) • 用numeric将符号表达式转换为数值表达式 如,键入: numeric(a) 显示: ans = 4.4641

More Related