You are on page 1of 122

Matlab 语言及其应用

李爱滨

材料科学与工程学院
每周二 晚 6.30 正心 13
2017 b matlab下载 http://pan.baidu.com/s/1pL2xw4F 密码: cd7l
2017b matlab 安装

( 1 )三个文件解压在一个文件夹中,并且运行 setup.exe
( 2 ) 选文件安装密钥09806-07443-53955-64350-21751-41297

( 3 )选择安装路径,大概需要10G
10G D盘
的空间,建议选择 D盘
( 4 )安装过程大概需要 1-2 小时装完,请知悉
( 5 )破解文件 crack 中netapi32.dll
netapi32.dll 复制和替换安装目录
license_standalone.lic
(6) “ license_server.lic” 和“ license_standalone.lic” 拷贝
license_server.lic
到到 \MATLAB\R2017b\licenses\ 目录下 , 重新打开 matlab 即可
无桌面快捷方式,可通过 C:\Program
Files\MATLAB\bin\matlab.exe 打开,
右键发送桌面快捷方式,方便下次打
开。
相传每个大学都有一棵树
每年树上挂着很多人

06/29/2022
世界最著名的三大数学应用软件
MATLAB MATHEMATICA MAPLE

美国 美国 加拿大
MathWorks

http://www.maplesoft.com
www.wolfram.com

Matlab 科学计算;绘图及图像处理; 系统仿真;高级编程语言


高等数学
基本 线性代数
教学工具 概率数理统计
数值分析
Matlab
图形绘制和处理
动态系统仿真
数字信号处理
自动控制理论
100 多个国家 100 多万科学家和工程师使
“ 巨人肩上的工
用大学生、硕士生、博士生必掌握基本工具
具”
分章学时安排及讲授内容( 32 学
时)
第一章 MATLAB 基础 入门( 3 学时)
第二章 MATLAB  矩阵分析( 5 学时) 编程基础
第三章 MATLAB 程序设计基础( 3 学时)
第四章 MATLAB 数值运算( 4 学时)
第五章 MATLAB 概率统计( 2 学时)计算功能
第六章 MATLAB 符号运算( 4 学时)
第七章 MATLAB 绘图( 5 学时)
第八章 实用功能
MATLAB 的 GUI 程序设计( 3 学时)
第九章 Simulink 基础( 3 学时)
授课 授课
周次 授课日期 授课内容
学时 方式
2 9 月 11 号 3 讲课 1.1 MATLAB 入门
1.1.1 MATLAB 发展史
1.1.2 MATLAB 主要功能和特点
1.1.3 MATLAB 操作界面
1.1.4 MATLAB 的通用命令
1.2 MATLAB 常用运算符和数学函数
1.3 变量和变量数据类型
1.4 数值型数据
1.5 矩阵和数组
1.6 字符串
3 9 月 18 号 3 讲课 1.2.3 单元数组和结构数组
第二章 MATLAB  的矩阵分析
2.1 矩阵和向量创建
2.2 矩阵的重组
2.3 稀疏矩阵
线性代数
2.4 矩阵操作函数
2.5 线性方程组求解
4 9 月 25 号 3 讲课 2.6 矩阵运算与数组运算
2.6.1 矩阵运算
2.6.2 数组运算
2.6.3 关系运算符
2.6.4 . 逻辑运算符
2.6.5 运算优先顺序
第三章 MATLAB 程序设计基础
3.1 M 文件
3.2 脚本 M 文件

06/29/2022
6 10 月 9 号 3 讲课 3.3 函数 M 文件
3.4 程序结构控制
3.4.1 条件(选择)结构
3.4.2 循环结构
3.4.3 try-catch 结构
3.4.4 其它指令
3.5 程序调试
第四章 MATLAB 数值运算
4.1 多项式计算
7 10 月 16 号 3 讲课 4.2 曲线拟合
4.3 数值插值
4.4 函数极值
4.5 非线性方程问题求解 函数文件
数值分析 高等数学 4.6 常微分方程的数值求解
Ode45 命令
4.7 数值微分与积分
8 10 月 23 号 3 讲课 第五章 MATLAB 概率统计
5.1 随机变量和分布
5.1.1 二项分布的概率计算
5.1.2 正态分布的概率计算
概率论与数理统计 5.1.3 常用概率分布
5.2 数据描述的统计分析
5.3 参数估计
数据分析 5.4 假设检验
5.5 回归分析
第六章 MATLAB 符号运算
6.1 符号计算入门
/2022 6.2 符号对象的创建
高等数学
9 10 月 30 3 讲课 6.3 精度计算
号 6.4 符号表达式运算
6.5 符号矩阵计算
6.6 符号微积分
6.7 符号方程的求解
6.8 符号积分变换
10 3 讲课 第七章  图形绘制
11 月 6 号 7.1 绘图的基本技术
7.1.1 线型属性
7.1.2 图形标注
7.1.3 坐标轴的控制
7.1.4 图形数据取点
7.1.5 图形保持
7.2 二维绘图
7.2.1 函数 plot( 基本绘图 )
7.2.2 函数 fplot ( 自适应采样绘图 )
7.2.3 其他二维图形
11 11 月 13 3 讲课 7.3 三维绘图
号 7.4 符号计算绘图
7.5 三维图形的精细控制与修饰处理
7.6 图形窗口简介
第八章 图形用户界面( GUI )设计
8.1 GUI 概述
8.2 编程设计 GUI
8.2.1 图形用户界面对象和句柄
8.2.2 界面菜单设计
8.2.3 用户界面控件设计
06/29/2022
12 11 月 20 号 3 讲课 8.3 GUIDE 创建 GUI
    8.3.1 图形用户界面开发环境 (GUIDE)
    8.3.2 GUIDE 提供的控件工具
    8.3.3 创建图形用户界面的编辑工具
    8.3.4 创建图形用户界面实例
8.4 编写界面控件的回调函数
第九章 Simulink  基础
9.1 Simulink 的概况
9.2 Simulink 的动态系统仿真原理
13 11 月 27 号 2 讲课 9.3 Simulink 模块库
    9.4 Simulink 简单模型的建立
  9.5 Simulink 仿真的运行
9.6 常见仿真实例
9.7 子系统与模块封装技术
期末总结和答疑

①平时出勤和课堂测试 30 分
②期末大作业 70 分 大作业考核方式
第一章 MATLAB 基础入门
1.1 MATLAB 入门
1.1.1 MATLAB 发展史
1.1.2 MATLAB 主要功能和特点
1.1.3 MATLAB 操作界面
1.1.4 MATLAB 的通用命令
1.2 MATLAB 常用运算符和数学函数
1.3 变量和变量数据类型
1.4 数值型数据
1.5 矩阵和数组
1.6 字符串
1.7 单元数组(元胞数组)
1.8 结构数组

06/29/2022 11
1.1.1 MATLAB 发展历史 Matrix Laboratory

调用格 det(A)
式:
25 阶行列式乘法次数 3.7*1026
06/29/2022
矩阵的乘法 : A*B <==> mtimes
 a11  a1t   b11  b1n 
j
A   i 行
   
设  B  


a  a  b  b 
 m1 mt  mt  t1 tn t n

 c11  c1n 
  前矩阵 后矩阵
则 AB  C       A 列数  B 行数
c  c 
 m1 mn  mn
(i  1, 2,...m ; j  1, 2,...n)
其中 c  ai1b1 j  ai 2b2 j  ...  ait btj
ij
Matrix Laboratory
美国新墨西哥大学 Cleve Moler 在 70 年代后期
FORTRAN 设计矩阵运算语言 .

1983 年 , Cleve Moler 到 Standford 大学讲学, Jack


Little 等 C 语言开发了第二代专业版。
Cleve Moler
1984 年 Cleve Moler 和 Jack Little 成立 Math
works 公司 , Matlab 推向市场 . (迈斯沃克公
司)
MathWorks 公司出品的商业数学软件

http://www.mathworks.com
中国网站为 http://www.mathworks.cn/
Jack Little
Matlab 的发
行 1.0 (操作系统
1984 年, Matlab DOS ,数值计算及数据图

形化)

1993 年, Matlab 4.0 ( 93 年推出 Windows 版,加入

simulink )

1993 年, Matlab 4.1 (符号运算工具箱) Maple

1994 年, Matlab 4.2 (广泛重视和应用)

1997 年, Matlab 5.3 (真正实现 32 位运算)

2002 年, Matlab 6.5 (采用 JIT 加速器)


版本 释放编号 年份 2006 年起,每年更新两次更新
MATLAB 7 R14 2004 年 MATLAB 7.9 R2009b 2009.9.4
MATLAB 7.0.1 R14SP1
MATLAB 7.10 R2010a 2010.3.5
MATLAB 7.0.4 R14SP2 2005 年
MATLAB 7.11 R2010b 2010.9.3
MATLAB 7.1 R14SP3
MATLAB 7.12 R2011a 2011.4.8
MATLAB 7.2 R2006a 2006 年
MATLAB 7.3 R2006b MATLAB 7.13 R2011b 2011.9.1

MATLAB 7.4 R2007a 2007 年 MATLAB 7.14 R2012a 2012.3.1


MATLAB 7.5 R2007b 2012.9.11 新版界
MATLAB 8.0 R2012b
MATLAB 7.6 R2008a 2008 年 面
MATLAB 7.7 R2008b MATLAB 8.1 R2013a 2013.3.7

MATLAB 7.8 R2009a 2009 年 MATLAB 8.2 R2013b 2013.9.9

MATLAB 7.9 R2009b MATLAB 8.3 R2014a 2014.3.6

MATLAB 7.10 R2010a 2010 年 MATLAB 8.4 R2014b 2014.10.02


MATLAB 7.11 R2010b
MATLAB 8.5
R2015a 2015.3.6
MATLAB 7.12 R2011a 2011 年   

MATLAB 7.13 R2011b


MATLAB 7.14 R2012a 2012 年  界面、使用风格改进,特别增加数据库
 各版间语言和语法基础部分变化不大
1.1.2 MATLAB 主要功能特点和应用
1.1.2.1 主要功能特点
1 最简单的计算器 + - * / > < exp log(ln) log10
数组的三角函数和双曲函数 演算纸式算法语言 书写习惯

名称 含义 名称 含义 名称 含义
sin 正弦 csc 余割 atanh 反双曲正切
cos 余弦 asec 反正割 acoth 反双曲余切
tan 正切 acsc 反余割 sech 双曲正割
cot 余切 sinh 双曲正弦 csch 双曲余割
asin 反正弦 cosh 双曲余弦 asech 反双曲正割
acos 反余弦 tanh 双曲正切 acsch 反双曲余割
atan 反正切 coth 双曲余切 atan2 四象限反正切
acot 反余切 asinh 反双曲正弦    
sec 正割 acosh 反双曲余弦    
基本数学函数
2 、语言简洁紧凑, 使用方便, 易学
易用
2
例 : 写程序求一元二次方程的根 ax  bx  c  0
 b  b 2  4ac
求根公式为 x1, 2  (a  0)
2a
0 2 个不相等实数根

b 2  4ac 0 2 个相等实数根
0 2 个复数根
det(magic ( 2
5))
第三代过程语言:算法语言
 C 程序
FORTRAN 、 BASIC 、 Pascal 、 C
#include <stdio.h>  FORTRAN 程序   
#include <math.h> 4 READ (5,5) A,B,C
void solv(float a,float b,float c)
{ (30 5 FORMAT (3F4.1)  
IF (A) 15,35,15   (23 行 )
double disc,twoa,term1,term2;
if (a == 0.0)
if (b == 0.0)
行) 15 X1R=-B/(2.0*A) 
D=B*B-4.0*A*C
printf("No answer due to input error!\n"); IF (D) 10,20,30
else 10 X2R=X1R
printf("The single root is: %f\n",-c/b); X1I=SQRT(-D)/(2.0*A) 
else X2I=-X1I
{ GOTO 34
disc = b * b - 4 * a * c; 20 X2R=X1
twoa = 2 * a;
term1 = -b/twoa;
X1I=0.0
term2 = sqrt(fabs(disc))/twoa; X2I=0.0
if(disc < 0.0) GOTO 34
printf("Complex root: \n real part = %f, image part = %f\n",term1,term2); X2R=X1R-SQRT(D)/(2.0*A)
else X1R=XIR+SQRT(D)/(2.0*A)
printf("real root :\n root1 =  %f, root2 = %f\n",term1+term2,term1-term2);  X1I=0.0
}  X2I=0.0

void  main() 
34 WRITE (6,6)A,B,C,X1R,X1I,X2R,X2I
{  X0=X
float  a,b,c;  6  FORMAT (1X,7(F7.4,3X))
printf("Input  a,b,c:"); 
scanf("%f%f%f",&a,&b,&c); 
过程化 GOTO 4
STOP 。
“ 让某物怎么样去干什么”
solv(a,b,c);  END
}
第四代:非过程化语言
交互式程序设计环境,自动生成程序,提高软件效率,常
有 VC 、 VB 、 VF 、 MATLAB 等。

MATLAB 程序求解
③ 6x2-5x+1=0 干什么事情
>> r=roots([6,-5,1])
roots

r =0.5000 数值法
   0.3333 syms x
y=solve(6*x^2-5*x+1=0)
solve
y = 1/3
符号法
1/2
内部函数 roots 源程序
edit roots

(60 行 )
MATLAB R2013b 约有 2100 个函

题 函 数化

所有计算 单 。
,使 用 简
工具 箱化
3、、丰富的工具箱 解决同类问题的函
( toolbox
   )
Matlab Main Toolbox——matlab 主工具箱 数
   Control System Toolbox—— 控制系统工具箱
功    Communication Toolbox—— 通讯工具箱
能    Financial Toolbox—— 财政金融工具箱 源程序的开放性
   System Identification Toolbox—— 系统辨识工具箱
型    Fuzzy Logic Toolbox—— 模糊逻辑工具箱 二次开发
和    Higher-Order Spectral Analysis Toolbox—— 高阶谱分析工具箱
   Image Processing Toolbox—— 图象处理工具箱
领    LMI Control Toolbox—— 线性矩阵不等式工具箱
域    Model predictive Control Toolbox—— 模型预测控制工具箱
   Neural Network Toolbox—— 神经网络工具箱
型    Optimization Toolbox—— 优化工具箱
工    Partial Differential Toolbox—— 偏微分方程工具箱
   Robust Control Toolbox—— 鲁棒控制工具箱
具    Signal Processing Toolbox—— 信号处理工具箱 已经广泛应用于科学研究及工
箱    Spline Toolbox—— 样条工具箱
   Statistics Toolbox—— 统计工具箱
程计算各个领域,如科学计
   Symbolic Math Toolbox—— 符号数学工具箱 算、机械动力、化工、计算机
   Simulink Toolbox—— 动态仿真工具箱 通讯、汽车、金融等领域。
   Wavele Toolbox—— 小波工具箱
………………
2015年四个新的工具箱,79个产品进行更新

MATLAB R2018a , 96 个
4 数学计算功能强大 Matlab 产品的基
础 矩阵运算、多项式
数值计算
数据插值与曲线拟合数值微分
与数值积分
线性代数方程求根
非线性方程求根
常微分方程
数值计算应用 概率统计
 力学: 常用有限元法求解偏微分方程;
 航空与自控问题:经常用到数值线性代数与常微分方
 计算机仿真:核心问题求解用到差分方程、常微分方程
 数字信号处理领域:离散的快速 Fourier 变换 (FFT)
大部分学科中数学问题
能解决
罗伦兹吸引子与“蝴蝶效应” 空气系统理论

巴西亚马逊雨林一只蝴蝶翅膀偶尔振动,也许两周后就
会引起美国得克萨斯州的一场龙卷风。
天气变幻莫测,建立温度、压强和风速的三个参数系统的微分方程,模拟
气候变化

[t,w]=ode45
ode45(@(t,w)[-8/3*w(1)+w(2)*w(3);-
10*w(2)+10*w(3);-w(1)*w(2)+28*w(2)-w(3)],
[0,80],[0,0,eps]')
06/29/2022
plot3(w(:,1),w(:,2),w(:,3))
千里之堤毁于蚁穴
圆周率( Pi )是圆的周长与直径的比值
圆周率计算 一个无理数,即无限不循环小数
计算 Pi 的纪录 古人用割圆法
日期 计算者 纪录
前 20 世纪 巴比伦人 π= 3.125
前 20 世纪 印度人 π= 3.160493...
前 12 世纪 中国 π=3
前 6 世纪中 圣经列王记上 7 章 23 节 π=3
前 3 世纪 阿基米德 π=3.1418
96 边形
480 年 祖冲之 7位 3.1415926 <π< 3.1415927
1775 年 欧拉 指出 π 可能是超越数
1947 年 D. F. Ferguson π=808 数
1949 年 J. W. Wrench 爵士和 L. R. Smith π=2,037 位小数
首次使用计算机
1955 年 J. W. Wrench 爵士及 L. R. Smith π=3,089 位小数
2.0600e+1
1957 年 G.E.Felton π=7,480 位小数
2060 亿位
1999 年 金田康正和高桥大介 π=206,000,000,000 位 37h
2011 年, IBM " 蓝色基因 /P" 超级电脑算出 π2 的 60,000,000,000,000 位二进制小
数 6.0000e+13
长期以来有关 Pi 的猜测:
① 认为 Pi 中每一个数,每两个数,每三个数都服从均匀
分布,既在数学上, Pi 被认为是一个正规数。至少就
目前计算出来的位数看,统计性验证了这个猜测的正
确性。
② 通过编程计算 Pi ,可以有效测试计算机硬件的可靠性
(算错了说明硬件有问题)。

>> vpa(pi,100) 控制运算精度 100 位有效数字


ans
=3.141592653589793238462643383279502884197169399375
10582097494459230781640628620899862803482534211706
8

06/29/2022
符号计算 MATLAB+
解析运算、数学公式
符号运算工具箱
推导 +MAPLE
利用计算机作符号演算来完成数学公式推导 , 用数学
表达式形式给出解。

函数展开、极限
函数求导求积、
代数方程 >> syms x y z
>> s=x^2+y^2+z^2;
微分方程 >> s3=int(int(int(s,x),y),z) % 三重积分
s3 =(x*y*z*(x^2 + y^2 + z^2))/3
5 、绘图和数字图像处理功能
 绘二维、三维和多维图形;
 自带绘图函数,给图形添加标注、标题、坐标轴等;
 三维图形可设置视角、色彩控制及光照效果等;
 可创建三维动画效果及隐函数绘图等;
 可数字图像处理
强大数据可视化功能
概率分布 disttool
cftool

定制图形用户界面 GUL

图形用户界面 Graphical user interfaces

funtool 函数计算器图形用户界面
taylortool

matlab 将很多函数库封装被用户当傻瓜相机
用。

06/29/2022
 命令窗口不是唯一与 Matlab 的交互方式。
东北大学 硕士论文 2014年6月

基于可靠性的航空发动机叶片蠕变 寿 命 研

MATLAB开发了航空发动机叶片的蠕变寿命预测与可靠性分析系统软件

编译了蠕变寿命预测与分析的计算程序(MATLAB语句),并且在程序
中各算法都加W注释,方便程序员二次开发修改。在此MATLAB平台,
运用GUI的可视化技术,编写出良好的人机界面,实现了输入输出数据的
可视化。将蠕变寿命模型、数据的统计方法及分析数据的输入、输出封装在
一起,达到了提高工作效率和缩短计算时间的目的

06/29/2022
• 6 、编 程 功 能
① 简单易用的程序语言
② M 语言编程功能,编写脚本或函数文件实现自己
算法 , 有程序结构控制、函数调用、输入输出等
程序语言特征 .
③ 开放的平台,“不排他”。通过外部程序接口,
与 C/C++ 、 Fortran 等语言编写程序连接调用,
发挥各自的优势,提高工作效率。
7 、 Simulink 动态系统仿真
SIMULINK ,动态系统建模、仿真、分析集成环境,方便
非线性、随机动态系统的仿真。
元件级电路仿真 非语言编程

图形化模块仿真 框图模型
Simulink 仿真应用

06/29/2022
1.1.2.2 应用和实用 1. 科研学术应用

06/29/2022
06/29/2022
2. 毕业设计

06/29/2022
3. 应届生实习

06/29/2022
4. 求职

06/29/2022
5. 学以致 解决问题的过程:

实际问题 数学模型 MATLAB 编程求

石油化工装置高温设备 11 年
大连理工大学硕士学位论文 一般设计寿命 10 万小时
长期使用后 Cr 一 Mo 钢炉管组织性能与剩余寿命研 持久实验 500-700℃
究 20 元 /1h
炉管 t=538℃ 的持久实验,设计 10 万小时的持久强度 200 万

σ(MPa) 90 100 110 应力换取时间


120 130 140 150
Τ(h) 1410 648 614 516 218.5 305 79

等温线法外推持久强度 clear
t=[1410,648,614,516,218.5,305,79];
幂函数   A  B x=log10(t);
拟合 s=90:10:150;
y=log10(s); 43.55MPa
yp=polyfit(x,y,1)
例 非线性曲线拟合 数学建模竞赛
t y

非线性原型函数  a2 t  a3t
y  a1 (e e )
待定系数向量 a=[a1,a2,a3]

10
Jm  min F (a1 ,a2 ,a3 )   [a1(e
j 1
 a2
e
 a3
)  y j ]2 最小
数学建模书籍

06/29/2022
学习目标 通过学习 MATLAB 语言、了解和掌握编程语
言、计算功能、绘图和动态系统仿真功能

1. 培养主动将 MATLAB 引入到其它基础课和专业课

2. 为毕业设计实施以及将来工作岗位的实际应用

06/29/2022
1.1.2.3 MATLAB 教材

06/29/2022
06/29/2022
1.1.2.3 MATLAB 教材 MATLAB 的主推参考教材

第 1 章  基于 MATLAB 的可视化计算概述
第 2 章  MATLAB 的基本运算
ATLAB 可视化科学计算 第 2 版 第 3 章  MATLAB 中的矩阵运算及应用
者 :刘加海著
版发行 :  杭州:浙江大学出版社 , 2018.03
第 4 章  MATLAB 在编程方面的应用
BN 号 : 978-7-308-16780-2 第 5 章  MATLAB 在图形设计上的应用
书定价 : 78.00
考文献格式 :  刘加海著 . 第 6 章  MATLAB 在计算数学中的应用
MATLAB 可视化科学计算 第 2 版 [M].
藏馆 :16
第 8 章  MATLAB 在概率论与数理统计

06/29/2022
1.1.2.3 MATLAB 教材 MATLAB 的主推参考教材

前言
第一版前言
第一章 MATLAB 概述
第二章 数组的运算基础
第三章 字符串
第四章 MATLAB 数值运算基础
第五章 MATLAB 符号运算
第六章 图形处理功能
第七章 MATLAB 的图形用户界面 GUI
第八章 图像、视频和声音
第九章 MATLAB 程序设计基础
“ 十三五”普通高等教育本科规划教材
第十章 MATLAB
Simulink 基础
基础及应用 第 3 版
第十一章 MATLAB 的综合应用
06/29/2022 附录 A MATLAB 函数命令索引表
下载:哈工大图书馆 \ 电子图书 \ 超星图书
06/29/2022 http://book.duxiu.com/ebook.do?go=index
1.1.3 MATLAB 操作界面
MATLAB 系统 5 部分
1. 工作环境 集成了许多应用程序和工具的工作空间,如命令窗
口、工作空间、编辑器

2. MATLAB 语 基于矩阵、数组的高级语言,程序结构、脚本和函数文
言 件,

3. MATLAB 数学函数库 大量数学函数集合,基本运算( +-* 、)到


复杂算法(求逆,傅里叶变换)

4. MATLAB 图像处理系统 强大绘图功能, 二维和三维绘图、数字图像处理等

5. MATLAB 应用程序接口 Matlab 方便调用 C 和 fortran 语言,以及与


其他应用程序之间建立关系

06/29/2022
1.1.3 MATLAB 操作界面 (2011 年前 ) Windows 版
1.1.3.1 旧版操作界面
菜单和工具栏

工作空
间窗口
菜单和工具栏
当前内存中
当前文件夹 命令行窗口 command window
列出所有变
工作空间窗口 workspace 量的信息
命令历史窗口 command history
当前文件夹 current folder
命令
历史窗口
主要交互窗口,供输入命令, 保留安装后所
命令窗口 实现计算 。 有历史记录和
在命令提示符 >> 后输入命 使用时间
令,回车,给出计算结果,保
开始菜单 存在工作区窗口
1.1.3.2. 新版 MATALB 操作界面
(从 2012 年)

三个主菜单:主页、绘图、应用程序 APPS

2014 年
汉化版

旧版操作界面:主页 home

常用的功能都放于桌面
06/29/2022
1 、主页 home

文 变 代 仿 环 资
件 量 码 真 境 料
变量文件 .mat
分析当前文件夹中 matlab 代
码文件,找出效率低下的编
码和潜在的错误并生成相应
的代码分析器报告

文 1 ) . 脚本文文 .M
件 2 ) . 函数文件 .M
3 ) . 图形文件 .FIG
4 ) . APP:guide 图形用户界面 FIG 文件和 M
文件
06/29/2022 5 ) .simulink: model 模型和仿真文件 slx(mdl)

2. 变量数据导入 Excel 和文本数据读取

06/29/2022 导入到工作空间
excel 数据读取
num=xlsread(‘filename’)
Filename: excel 文件名,( *.xlsx )
num: 返回 xls 中数值型数据;

ss=xlsread(‘stress.xlsx')
文本数据的读取
[a,b,c…]=textread(‘filename.txt’)
Filename: 文本文件名,( *.txt ) Y=textread('xrd.txt')
[a,b,c] :文件中读取的数据变量组。 [x,y]=textread('xrd.txt')
[x,y]=textread('10vm.txt','%f%f')
当前工作文件夹

I. 指 MATLAB 运行
变量的文件夹;
II. 只有当前工作目
录或搜索路径下
文件、函数可被
调用或运行。
当前工作目录窗口

单击“ Current
Folder” 窗口,活动窗

【 View 】设置如何显
示当前目录下的文件。
搜索路径
 Matlab 所有文件都被存放在一个结构严谨目录树上,
 工作时按优先次序搜索这些变量、函数、文件。

例如, 命令窗口敲入 abcd


1 、检查内存, abcd 是不是变量,不是继续;。
2 、 abcd 是不是内存函数,不是继续;
3 、检查当前目录是否有 abcd 的 M 文
件;
4 、检查搜索路径的其他目录中是否有 abcd 的 M 文
5 、如果不在搜索路径的内容是不可能搜索到的
件;
建立和修改搜索路径
2 、新版绘图主菜单

06/29/2022
旧版绘图

06/29/2022
3. APPS 应用程序主菜单( 2013 年起)

APPS 特点: matlab 新功能,


具有图形化界面的应用程序打包,发布给
其他 matlab 用户使用

APPS 来源:
① 可以使用 MATLAB 集成的各种内置工具箱
② 以及下载、安装别人的工具箱
③ 或者打包自己的工具箱供其他人使用

06/29/2022
4. Matlab R2014a/b 设置英文 / 中文界面

06/29/2022
MWLOCALE_TRANSLATED

06/29/2022
5. MATLAB 帮助命令:
函数搜索指令

① Help , helpwin , d
oc ,
② 词条搜索 lookfor
③ 模糊查询。
65
(1) help 、 helpwin , doc 命令
help 显示当前帮助系统中所有项目,搜索路径中
Help
所有的目录名称;
Help+ 函数 显示该函数的帮助说明

Helpwin+ 函数名
文本;
doc+ 函数名 搜索 M 比较方便
超文本;
搜索 HTML( 超文本链
接标记语言 ) 文件,比较方便
(2) lookfor + 函数名部分字母

关键字搜索,条件比较宽松 lookfor root

(3) 模糊命令
输入命令前几字
母,按 Tab 键,
会列出所有这几
个字母开头命令。

Tab 键是 tabulator (制表


键)
67
1.1.4 MATLAB 常用命令和功能键

1. 常用命令
2. 编辑输入内容的功能键
3. 标点
1. 常用命令的功能
2. 编辑输入内容的功能键
a=2 3

cd,whos

Matlab 所有
标点符号必须在
英文状态下输入
1.2 MATLAB 常用运算符和数学函数
算术运算符 四则运算 + - * / 和乘方 代数函数
^
常用数学函数 对数函数 log , 指数函数 exp ,三角函数
(超越函数) sin
关系运 等于 = =, 大于 > ,大于等于 >=,
算符 小于 <, 小于等于 <=, 不等于 ~=
(2<x<3
逻辑运算符 与( and & ) , 或 ( or | ), )
非 ( not ~ ), 与非( xor ) (2<x&x<3)

逻辑型变量 用 1 和 0 表示真假状态两个状态,
一般用于关系运算或逻辑运算
>> a=3;>> c=a>3 c=a<6&a>2
c = logical 0 c = logical
1
运算符的优先等级表

括号的优先级别最高,用括号来改变默认的优先等级
a=1>[-1,-2/3,3]'-3|[-1,-2/3,3]'.^2>0
1.3 变量和变量数据类型
1.4 数值型数据
1.5 矩阵和数组
1.6 字符串
1.7 单元数组(元胞数组)
1.8 结构数组

06/29/2022
1.3 变量和变量数据类型
1.3.1 变量与赋值
1. 变量命名
①英文字母开头,后接字母、数字或下划线字符序列
②字母间不可留空格和标点符号
③区分字母大小写
判断变量名真假
④避免使用函数名和常量
⑤变量名不能超过 64 个字符 isvarname
>> isvarname('@wb')
ans = logical 0
2. 定义变量 : 赋值方式
赋值变量 = 数值

b=0.2222
b= 0.2222 ;
0.22222 回车
保留变量 ans
0.22222
x=sin(30) /5
赋值变量 = 表达
例 式 计算表达式的值,并显示计算结果。

x=1+2i;
y=3-sqrt(17);
z=(cos(abs(x+y))-sin(78*pi/180))/(x+abs(y))

z = -0.3488 + 0.3286i 不含未知数的变


量的表达式
1.3.2 常量 (Matlab 预定义变量 )
1. MATLAB 提供的一些内部函数
常数 返回值
ans 默认变量名,保存最近的结果。如果不给表达式指定
一个输出变量, MATLAB 会自动将结果保存到 ans 变
量中
eps 浮点运算相对精度 10-52 2.2204e-016
realmax 计算机可以表示的最大浮点数 21024
realmin 计算机可以表示的最小浮点数 2-1022
pi 圆周率 预定义变量有特定
的含义,应尽量避
i, j 虚数单位
免对这些变量重新
赋值。内部函数
sin
Inf 无限值(无穷大)。类似 n/0 的表达式生成的
无穷大 结果为 inf ,其中 n 为非 0 实数
NaN  表示不合法的数值或不确定值,
非数  真实纪录 0/0 , inf/inf , 0*inf 生成结果,
 避免因上述结果而造成程序执行结果中断,
 NaN 参与运算的结果还是 NaN ,有传递性,
 测量数据中,标识野点(非正常点)
 裁剪图形采用 Nan

M 文件设计应避免情况: Inf , nan 或空矩


阵,继续运行,这样可以避免因一个数据不好
编程时避免产生
而破环全局。 Inf , nan
06/29/2022
1.3.3 内存变量的管理
exist name
1. 判断变量是否存在
exist name kind
A = exist('name','kind')
name 返回值
>> exist roots
0 : 不存在 ans = 2
1: 可以是变量名 >> aa=2

2: 函数名、 m 文件名 kind : aa = 2
3: mex 文件、 dll 文件 builtin 内嵌函数 >> exist aa
4: 内嵌的函数 class Java class ans = 1
5: p 码文件 dir 目录 >> exist aab
6: 目录 file 文件或者目录 ans = 0
7: 路径
8: Java class var 变量
2. 内存变量信息和清除
who 工作空间中显示已驻留变量名清单。

whos 显示变量名、大小、所占字节数及数
据类型等信息。

clear 用于删除工作空间中的变量。

只能清除命令窗口的所有信息,工作空间
clc
中的变量仍然保留
3. 变量文件保存和调用
当前工作空间中有用变量长久地保留下来,扩展名是 .mat 。
>> cc=22
保存 save variable cc =22

保存 save filename.mat variable


>> save cc
>> clear
>> cc
调用 load variable 未定义函数或变量 'cc' 。

>> load cc
格式为: >> cc
调用 load filename.mat variable
cc = 22
1.3.4 变量的数据类型 赋值的数据类型

syms a b
符号对象
hfun=@+ 函数

稀疏矩阵
常用 {1,’2’ }
’123’ x.real=3
大型程序中使用

double single
storage
数值运算
使用 matlab
浮点型
无需声明数
据变量类型

06/29/2022
查询元素数据类型信息的部分函数(逻辑关系函数)
1.4 数值型数据
数值型 双精度浮点数;单精度浮点数; 整数

1.4.1 浮点数类型
名称、存储空间、表示范围和转换函数:

单精度 , 内存只分配 32 位( 4 字
节) , 缺省状态是双
双精度分配 64 位( 8 字节)
精度的浮点数
数值计算都是双精度
1.4.2 整数型 是存储类型,只用于内存的有效存储

数据类型的名称、表示范围和转换函数表:

无符号 8 位整数用于保存图像数据

06/29/2022
1.4.3 数值型数据输出格式

1. 十进制数表示数据
 数据都双精度数表示和存储

2. 数值量和数据格式显示:
 当整数时,整数显示(缺省);

 当实数时,小数点后 4 位精度近似显示。
数值型数据输出 -----Format 显示格式

默认

仅 2 位有效数 无论用何显示格式,
Matlab 都用双精度计算;
改变显示方式,不会改变
计算结果精度
标量 1*1 矩阵 m*n

1.5 矩阵和数组
MATLAB 将矩阵和数组作为基
1.5.1 矩阵 本运算量,所有数值功能是以矩
阵和数组为基本单元进行的

1. 矩阵直接输入法
>> A = [1 2 3; 4 5 6; 7 8 9]
 1 2 3
 用方括号 “ [ ]” 括起  
4 5 6
 同一行中元素间用 空格 或 逗号 分隔 
7 8 9
 
 行与行间用 分号分开
 元素可以是数值,表达式或复数.

空矩阵 [ ] 无任何元素的矩阵 X=[] ,其维数为 0


运算无合适结果 []
例 数值矩阵
>>x=[-1.3, sqrt(3); sin(45),(1+2+3)*4/5]
不含未知变量的表达式

>>x=5 ; >>y=[-1 , 3 ; cos(x),


x/5]
复数矩阵
名称 含义 名称 含义 名称 含义
abs 绝对值 conj 复数共轭 real 复数实部
angle 相角 imag 复数虚部    
>>a=[1+2i,2;5,3-8i] >>real(a)
06/29/2022
ans =1 2
5 3
>> a=[1,2;3,4]
a =1 2
3 4
>> ae=[1,exp(2);3,4]
ae =
1.0000 7.3891
3.0000 4.0000
>> ai=[1,2i;3,4]
ai =1.0000 + 0.0000i 0.0000 + 2.0000i
3.0000 + 0.0000i 4.0000 + 0.0000i
>> aie=real(ai)
aie =1 0
3 4
>> whos
Name Size Bytes Class Attributes
a 2x2 32 double
ae 2x2 32 double
ai 2x2 64 double complex
aie 2x2 32 double

06/29/2022
2. 矩阵元素存储和访问
(1). 矩阵 A 元素存储顺序

a ij
1列 2列 n列

按列先后顺序存储,先存第 1 列,再第 2 列,以此类推

size(A) : 获取矩阵的行数和列数
(2) 矩阵元素标识 ----- 访问矩阵元素
元素单下标表示法
A(k)

A 矩阵第 k 存储位置元素

>> A=[1,2,1;3,4,3;5,6,5]
A=
1 2 1 a(3)
3 4 3 ans =5
5 6 5
1 个向量 x=[x(1), x(2)……x(n)]

 x1  0.6  sin( x1)  0.3  cos( x2)  0 建立方程组常用到单下标表示向量



X=[x(1),x(2)] 中元


 x2  0.6  cos( x1)  0.3  sin( x2)  0 function y=myfun(x)
y(1)=x(1)-0.6*sin(x(1))-0.3*cos(x(2));
X=[x(1),x(2)] y(2)=x(2)-0.6*cos(x(1))+0.3*sin(x(2));
06/29/2022 单下标常用在数值求解非线性方程组,微分方程组
元素全下标表示法:A(i,j)

A 矩阵第 i 行第 j 列元素

(3). 矩阵元素标识的转化:
全下标转化单下标 : ind=sub2ind(size(A),i,j)
单下标转化全下标 : [i,j]=ind2sub(size(A),k)

06/29/2022

>> a=[1,2,3;4,5,6;7,8,9]
a =1 2 3
4 5 6
7 8 9 >> sub2ind(size(a),2,1)
>> a(4) ans = 2
ans = 2 [r,c]=ind2sub (size(a),2)
>> a(1,2)
ans = 2
例 (4) 查找矩阵下标 find

功能:查询满足某关系矩阵下标

用法: [i,j]=find( 关系式 )


i: 元素的行号,
j: 元素的列号

k=find( 关系式 )
k: 满足条件的元素单下标数
Find 矩阵元素查找矩阵中大于 4 、小于 8 的那些元
素。
aa = 8 1 6
3 5 7
4 9 2
>> kk=find(aa>4&aa<8)
kk = 5
7
8
>> aa(kk)
ans = 5
6
7
1.5.2 数组
 MATLAB 使用最广的一种数据类型,
 数组不是数学概念,而是一般高级语言都有的概念,是计
算机编程语言上对一组数的通称,是一种数据结构数组元
素不一定是数值型,也可以使字符串型、单元结构
 数值型的数组和矩阵, MATLAB 运算不同,矩阵运算从
矩阵整体出发,采用线性代数的运算规, 数组运算从数
据元素出发,针对每个元素运算

数组结构和矩阵相同,表示、建立、存
储无区别;区别是运算符和运算法则。
空数组
一维相当于向量
数组结构 二维相当于矩阵
多维数组
1.6 字符串
1.6.1 字符串数组的构造
1.6.2 字符串与数值间的转换

非常重要数据类型
创建字符串
字符串 由一个或多个字符构成字符串,用单引号 ‘ 括起

一维字符串:‘ 字符串’以行向量形式
存储
每个字符就是行向量一个元素。

country = 'China';
size(country) 1 5
class(country) char
ischar ( country ) 1
>> a=1234;
>> c='1234';
>> d='1 2 3 4'

Name Size Bytes Class Attributes

a 1x1 8 double
c 1x4 8 char
d 1x7 14 char

06/29/2022
Isstr 是否为字符串
Isletter 是否英文字母
Isspace 是否空格
a='this is a'; 例
>> isletter(a)
ans = 1 1 1 1 0 1 1 0 1
>> isspace(a)
ans = 0 0 0 0 1 0 0 1 0
deblank(c) 自动删除 char 生成的空

>> a='sss '
例 a =sss
>> deblank(a)
ans =sss
>> whos
Name Size Bytes Class
a 1x6 12 char
ans 1x3 6 char
1.2.3.2 字符串数值转换的函数
1. 字符串转换为数值函数
2. 数值转换为字符串函数
 数值转换为字符

例 >> Whos
a= num2str(a)
ans = Name Size Bytes
8 1 6 8 1 6 Class
3 5 7 3 5 7 a 3x3 72 double
4 9 2 4 9 2
ans 3x7 42 char
>> a=pascal(3)
a =1 1 1
1 2 3 >> whos
1 3 6 Name Size Bytes Class Attributes
>> aa=int2str(a) a 3x3 72 double
aa =1 1 1 aa 3x7 42 char
1 2 3
1 3 6
3.eval(s) 运行字符串的表达式功能

>> 'a=sin(45)'

ans =a=sin(45)

>> eval('a=sin(45)')
a =.850903524534118
double('a=sin(45)')

ans = 97 61 115 105 110 40 52 53 41


4. 字符串应用
数值运算
待求函数的形式: 字符串表达式
一元函数最小值
0.1 x 2
Y= e  sin( x )  0.5( x  0.1)  sin x
S=fminbnd('exp(-0.1*x)*(sin(x)^2)-0.5*(x+0.1)*sin(x)',6,10)

s= 8.023562824723015
>> quadl(‘x.^2’,1,2) % 积分
ans = 2.333333333333333

06/29/2022
1.7 单元数组(元胞数组 cell array )
1.7 单元数组 (元胞数组 cell
array )
1 . 单元变量:用 { } 表示
① 不同类型的数据在一个变量名下管理;

② 每元素为一个单元 (cell) ;
③ 每单元可存放任何类型大小和维数的数据。

2. 创建两种方式:
④ 直接赋值语句 { }

⑤ cell 函数分配存储空间 , 再单元逐一赋值。


① 直接赋值法 : { }
 直接赋值整个单元数组

>> a={[1,2],[1,2;3,4];'sdfg',linspace(1,5,3)} 例
a =[1x2 double] [2x2 double]
'sdfg' [1x3 double]
>> class(a)
ans =cell
>> whos a
Name Size Bytes Class Attributes
a 2x2 312 cell
a(i,j) 只显示该元素压缩内容
单元数组元素访问 :
a{I,j} 显示该元素具体内容

>>b{2,2}
0.097131781235848 0.317099480060861 0.438744359656398
0.823457828327293 0.950222048838355 0.381558457093008
0.694828622975817 0.034446080502909 0.765516788149002
>>b(2 ,2)
[3x3 double]
显示单元数组全部内容 :

>> celldisp(a)
>> a{1,1} =1 2
celldisp(a) a{2,1} =sdfg
a{1,2} =1 2
3 4
a{2,2} = 1 3 5
② cell 函数定义法
创建空单元数组:A=cell(m,n) 或
cell(size(a))
例 >> a=cell(4,3)

a =[] [] []
[] [] []
[] [] []
[] [] []

>> a(1,2)={1:10};
然后再为数组元素赋值 >> a =
[] [1x10 double] []
[] [] []
[] [] []
[] [] []

>> ss=cell(2,2)
ss = [] []
[] []
>> ss{1,2}=2;
>> ss{2,1}='3'
ss = [] [2]
'3' []
>> ss{2,1}=magic(3)
ss = [] [2]
[3x3 double] []
>> ss{2,1}={magic(3)}
ss = [] [2]
{1x1 cell} []
06/29/2022
1.8 结构数组(结构体 structure )

1. 结构型变量: ① 不同类型大小数据放在一起;
② 组织数据能力强于元胞数组;
③ 结构体变量和每元素有自己名字;
④ 通过元素名字访问每个元素。

2. 两种定义方法:① 直接赋值定义
② 函数 struct 定义
① 直接赋值
创建格式 结构体变量名 . 成员名 = 表达

例 >> x.real=3; 指针操作符“ .” 连结构变量名与属性名
>> x.imag=2;
>> x
访问元素 单下标 或全下标(压缩)
x = real: 3
imag: 2
结构体变量名 . 成员名(具体)
动态扩充为 1*2 数组: 查看两个对象:

>> x(2).real = '123'; >> x(1,1) x(2).imag% 调用具体值


>> x(2).imag = rand(5,1); ans = real: 3 ans =
>> x imag: 2 694/7115
x = 1x2 struct array with fields: >> x(1,2) 408/1465
real ans = 1324/2421
imag real: '123' 338/353
imag: [5x1 double] 687/712
建立温室的名字、体积和参数的结构数组


green_house.name = ' 一号温室 '; % 创建温室名字段
green_house.volume = '2000 立方米 '; % 创建温室容量字段
green_house.parameter.temperature=[31.2 30.4 31.6 28.7;29.7 31.1
30.9 29.6]; % 创建温室温度字段
green_house.parameter.humidity=[62.1 59.5 57.7 61.5; 62.0 61.9 59.2
57.5]; % 创建温室湿度字段

>> green_house
>> green_house.parameter
ans =
green_house = name: ' 一号温室 '
temperature: [2x4 double]
volume: '2000 立方米 '
humidity: [2x4 double]
parameter: [1x1 struct]
② struct 定义结构型变量
结构型变量名 =struct( 元素名 1, 元素值 1, 元素 2, 元素值 2,
…)
person=struct('name','lili','height', 164,'weight',
51,'hobby','game')

person =name: 'lili'
height: 51
weight: 164
hobby: 'game'
person =
例 name: 'lili'
height: 51
weight: 164
hobby: 'game'

• 添加

>> person.email='matlab- • 删除 rmfield


hit1@163.com'
person = >> person =
name: 'lili' rmfield(person,'hobby')
height: 51 person =
weight: 1.640000000000000 name: 'lili'
hobby: 'game' height: 51
email: 'matlab-hit1@163.com' weight: 1.640000000000000
email: 'matlab-hit1@163.com'
符号方程求解的输出结果:结构数组

求 dx/dt=y, dy/dt=-x 的解

s=dsolve('Dx=y','Dy=-x','t')
s = x: [1x1 sym]
y: [1x1 sym]

06/29/2022

You might also like