matlab教程第2课
matlab第二次课 ( 1 )
2.1 信号的表示与运算
矩阵的创建与修改
•
用load函数装载矩阵
如 load sn.txt load a.mat
sn.txt a.mat为已建立的2个文件
2.1 信号的表示与运算
矩阵的创建与修改
直接修改
可用键找到所要修改的矩阵,用键移 动到要修改的矩阵元素上即可修改。 指令修改 可以用A(,)= 来修改。
plot的调用格式
2.2 matlab 绘图之二维绘图
S的标准设定值 字母 y m c r g b w k 颜色 黄色 粉红 亮蓝 大红 绿色 蓝色 白色 黑色 标点 · ○ × + - : -· (--) 线型 点线 圈线 ×线 +字线 实线 星形线 虚线 点划线
2.2 matlab 绘图之二维绘图 plot的特点
信号自变量t的常用2种生成方法 t=linspace(t1,t2,N);
在区间[t1,t2]s上均匀产生N个时间样点值。
t= t1:1/fs:t2
在区间[t1,t2]s上以采样率f信号的生成 例: 生成在[0,10]s上长度为30的单位阶跃信号, 并作图表示。 t=linspace(0,10,30); y=ones(1,30); Stem(t,y)
信号的生成
1
0.5
0
生成周期三角波
-0.5
sawtooth(T):对时间向量T产生周期三角波
sawtooth(T,WIDTH):WIDTH为(0,1)的偏离系数
0 0.05
-1
0.1
0.15
0.2
在(0,1.5)上生成频率 为50HZ的三角波信号,
1
0.5
采样率为10KHZ.
0
t=0:0.0001:1.5;
matlab教程ppt(完整版)
展示部分与整体的关系,通过扇形面积或角度表 示占比。
三维图形
01
02
03
04
三维散点图
在三维空间中展示两个变量之 间的关系,通过点的位置展示
数据。
三维曲面图
通过曲面表示两个或多个变量 之间的关系,可以展示数据的
分布和趋势。
三维等高线图
表示三维空间中数据的分布和 变化,通过等高线的形状和密
集程度展示数据。
处理运行过程中出现的错误和 异常情况。
通过优化算法和代码结构,提 高程序的运行效率。
对代码进行重新组织,使其更 易于阅读和维护。
03
MATLAB可视化
绘图基础
散点图
描述两个变量之间的关系,通过点的分布展示数 据。
条形图
比较不同类别的数据大小,通过条形的长度或高 度进行比较。
折线图
展示时间序列数据或多个变量之间的关系,通过 线条的走势呈现数据变化。
控制系统仿真
使用MATLAB进行控制系统仿真 ,模拟系统动态性能。
控制系统优化
对控制系统进行优化设计,如权 重优化、多目标优化等。
THANK YOU
感谢聆听
对图像进行几何变换,如缩放、旋转、平移 等操作。
动画制作
帧动画
通过一系列静态图像的连续播放,形 成动态效果。
路径动画
让对象沿指定路径移动,形成动态效 果。
变形动画
让对象从一个形状逐渐变形为另一个 形状,形成动态效果。
交互式动画
允许用户通过交互操作控制动画的播 放、暂停、回放等操作。
04
MATLAB在科学计算中的应用
对函数进行数值积分和微分, 用于解决定积分和微分方程问 题。
数值优化
matlab教程ppt(完整版)
`int8()`,
`char()`, `logical()`等。
流程控制结构
顺序结构
按照代码的先后顺序执行 。
选择结构
通过条件语句实现分支选 择,包括`if`、`else`、 `elseif`等。
循环结构
通过循环语句实现重复执 行代码块,包括`for`、 `while`等。
函数编写
函数定义
使用`function`关键字定义函数, 指定输入和输出参数。
介绍MATLAB中的机器学习工具箱,包括工具箱中的函数、算 法和使用方法等。
通过实际案例演示如何使用MATLAB进行机器学习,包括数据 预处理、特征选择、模型训练和评估等。
THANKS
[ 感谢观看 ]
信号的傅里叶变换
介绍傅里叶变换的基本原理 ,以及如何使用MATLAB进 行信号的傅里叶变换和逆变 换。
滤波器设计
介绍滤波器的基本原理和设 计方法,以及如何使用 MATLAB进行滤波器的设计 和实现。
信号处理实例
通过实际案例演示如何使用 MATLAB进行信号处理,包 括信号的频谱分析、滤波、 降噪等。
数值计算基础
数值类型
介绍MATLAB中的数值类型,包括双精度、单精 度、复数等。
变量声明
解释如何声明和初始化变量,以及如何使用 MATLAB的数据类型。
运算符
介绍基本的算术运算符、关系运算符和逻辑运算 符及其用法。
方程求解
代数方程求解
介绍如何使用MATLAB求解一元和多元代数方程。
微分方程求解
介绍如何使用MATLAB求解常微分方程和偏微分方程。
MATLAB应用领域
MATLAB是一种用于算法开发、数据 可视化、数据分析和数值计算的高级 编程语言和交互式环境。
MATLAB-2基础入门
数值显示格式设置
缺省显示格式:简洁的短(short g)格式 窗口命令及语法格式:format 显示格式 关键字 如:format long %15位数字显示
21
各种 format 格式
格式
format
format short format long
为便于学习,以算例方式叙述,并通过 算例归纳一些MATLAB最基本的规则和语法结 构。
【例】
求 [12 2 (7 4)] 32 的算术运算结果。 本例演示:最初步的命令输入形式和必需的 操作步骤。
(1)用键盘在MATLAB命令窗中输入以下内容
>> (12+2*(7-4))/3^2
(2)在上述表达式输入完成后,按 [Enter] 键,该命令被执行,并显示如下结果。
29
Matalab7.1的workspace窗口
Matalab6.5的workspace窗口
32
工作空间浏览器主要功能及其操作方法
四、历史指令窗(Command History)
历史窗口:
首先记录每次启动时间;并记录在命令窗口输入 命令,此次运行期间,输入的所有命令被记录为 一组,并以此次启动时间为标志。
>>radius=5.2; %圆的半径 >>area=pi*5.2^2, circle_len=2*pi*5.2 area = 84.9487 circle_len = 32.6726
以上两例,命令行中用到了等号“=” 。 计算结果不再赋给“ans”,而是赋给 用户指定的变量y、area、circle_len 。 无论是预定义变量还是用户自定义变量 都被存储在系统的工作空间内,即系统 定义的一个存储窗口变量的内存空间。 Who、whos命令用来显示工作空间的 变量 clear命令用来清除工作空间的变量。
matlab教程ppt(完整版)
数据处理
应用MATLAB的信号处理和统计 分析函数库,进行数据预处理、
特征提取和模型训练。
机器学习与深度学习
机器学习
介绍MATLAB中的各种机器学习算法,如线性回归、决策 树、支持向量机等,以及如何应用它们进行分类、回归和 聚类。
深度学习
介绍深度学习框架和网络结构,如卷积神经网络(CNN) 、循环神经网络(RNN)等,以及如何使用MATLBiblioteka B进行 训练和部署。感谢观看
THANKS
符号微积分
进行符号微分和积分运算,如极限、导数和 积分。
符号方程求解
使用solve函数求解符号方程。
符号矩阵运算
进行符号矩阵的乘法、转置等运算。
05
MATLAB应用实例
数据分析与可视化
数据分析
使用MATLAB进行数据导入、清 洗、处理和分析,包括描述性统
计、可视化、假设检验等。
可视化
利用MATLAB的图形和可视化工 具,如散点图、柱状图、3D图等
数值求和与求积
演示如何对数值进行求和与求积 操作。
数值计算函数
介绍常用数值计算函数,如sin、 cos、tan等。
方程求解
演示如何求解线性方程和非线性方 程。
03
MATLAB编程基础
控制流
01
02
03
04
顺序结构
按照代码的先后顺序执行,是 最基本的程序结构。
选择结构
通过if语句实现,根据条件判 断执行不同的代码块。
数据分析
数值计算
MATLAB提供了强大的数据分析工具,支 持多种统计分析方法,可以帮助用户进行 数据挖掘和预测分析。
MATLAB可以进行高效的数值计算,支持 多种数值计算方法,包括线性代数、微积 分、微分方程等。
matlab教程ppt(完整版)
可以使用`'`运算符对矩阵进行 转置。
矩阵高级运算
01
逆矩阵
可以使用`inv`函数求矩阵的逆矩阵 。
行列式
可以使用`det`函数求矩阵的行列式 。
03
02
特征值和特征向量
可以使用`eig`函数求矩阵的特征值 和特征向量。
秩
可以使用`rank`函数求矩阵的秩。
04
04
matlab绘图功能
绘图基本命令
控制设计
MATLAB提供了控制系统设计和分析 工具箱,可以方便地进行控制系统的 建模、分析和优化。
03
信号处理
MATLAB提供了丰富的信号处理工具 箱,可以进行信号的时域和频域分析 、滤波器设计等操作。
05
04
图像处理
MATLAB提供了图像处理工具箱,可 以进行图像的增强、分割、特征提取 等操作。
02
matlab程序调试技巧分享
01
调试模式
MATLAB提供了调试模式,可以 逐行执行代码,查看变量值,设 置断点等。
日志输出
02
03
错误处理
通过使用fprintf函数,可以在程 序运行过程中输出日志信息,帮 助定位问题。
MATLAB中的错误处理机制可以 帮助我们捕获和处理运行时错误 。
matlab程序优化方法探讨
显示结果
命令执行后,结果将在命令窗口中显示。
保存结果
可以使用`save`命令将结果保存到文件中。
matlab变量定义与赋值
定义变量
使用`varname = value`格式定义变 量,其中`varname`是变量名, `value`是变量的值。
赋值操作
使用`=`运算符将值赋给变量。例如 ,`a = 10`将值10赋给变量a。
matlab教程ppt(完整版)
控制流语句
使用条件语句(如if-else)和 循环语句(如for)来控制程序 流程。
变量定义
使用赋值语句定义变量,例如 `a = 5`。
矩阵运算
使用矩阵进行数学运算,如加 法、减法、乘法和除法等。
函数编写
创建自定义函数来执行特定任 务。
02
MATLAB编程语言基础
变量与数据类型
变量命名规则
数据类型转换
编辑器是一个文本编辑器 ,用于编写和编辑 MATLAB脚本和函数。
工具箱窗口提供了一系列 用于特定任务的工具和功 能,如数据可视化、信号 处理等。
工作空间窗口显示当前工 作区中的变量,可以查看 和修改变量的值。
MATLAB基本操作
数据类型
MATLAB支持多种数据类型, 如数值型、字符型和逻辑型等 。
04
MATLAB数值计算
数值计算基础
01
02
03
数值类型
介绍MATLAB中的数值类 型,包括双精度、单精度 、复数等。
变量赋值
讲解如何给变量赋值,包 括标量、向量和矩阵。
运算符
介绍基本的算术运算符、 关系运算符和逻辑运算符 及其优先级。
数值计算函数
数学函数
列举常用的数学函数,如 三角函数、指数函数、对 数函数等。
矩阵的函数运算
总结词:MATLAB提供了许多内置函 数,可以对矩阵进行各种复杂的运算
。
详细描述
矩阵求逆:使用 `inv` 函数求矩阵的 逆。
特征值和特征向量:使用 `eig` 函数 计算矩阵的特征值和特征向量。
行列式值:使用 `det` 函数计算矩阵 的行列式值。
矩阵分解:使用 `factor` 和 `expm` 等函数对矩阵进行分解和计算指数。
matlab教程(完整版)
01 MATLABChapterMATLAB简介MATLAB是一种高级编程语言和环境,主要用于数值计算、数据分析、信号处理、图像处理等多种应用领域。
MATLAB具有简单易学、高效灵活、可视化强等特点,被广泛应用于科研、工程、教育等领域。
MATLAB提供了丰富的函数库和工具箱,方便用户进行各种复杂的数学计算和数据分析。
MATLAB安装与启动MATLAB界面介绍工作空间用于显示当前定义的所有变量及其值。
命令历史记录了用户输入过的命令及其输出结果。
基本运算与数据类型02矩阵运算与数组操作Chapter01020304使用`[]`或`zeros`、`ones`等函数创建矩阵创建矩阵使用`size`函数获取矩阵大小矩阵大小通过下标访问矩阵元素,如`A(i,j)`矩阵元素访问使用`disp`或`fprintf`函数显示矩阵信息矩阵信息矩阵创建与基本操作对应元素相加,如`C = A+ B`加法运算矩阵运算对应元素相减,如`C = A-B`减法运算数与矩阵相乘,如`B = k *A`数乘运算使用单引号`'`进行转置,如`B = A'`转置运算满足乘法条件的矩阵相乘,如`C = A * B`矩阵乘法使用`inv`函数求逆矩阵,如`B = inv(A)`逆矩阵数组创建数组大小数组元素访问数组操作数组操作01020304线性方程组求解数据处理与分析特征值与特征向量图像处理矩阵与数组应用实例03数值计算与数据分析Chapter数值计算基础MATLAB基本运算数值类型与精度变量与表达式函数与脚本数据分析方法数据导入与预处理学习如何导入各种格式的数据(如Excel、CSV、TXT等),并进行数据清洗、转换等预处理操作。
数据统计描述掌握MATLAB中数据统计描述的方法,如计算均值、中位数、标准差等统计量,以及绘制直方图、箱线图等统计图表。
数据相关性分析学习如何在MATLAB中进行数据相关性分析,如计算相关系数、绘制散点图等。
MATLAB经典教程(全)PPT课件
THANKS FOR WATCHING
感谢您的观看
信号时域分析和频域分析
时域分析
研究信号随时间变化的规律,包括波形、幅度、频率、相位等。
频域分析
将信号转换为频域表示,研究信号的频谱结构和频率特性,包括幅 度谱、相位谱、功率谱等。
时域与频域关系
时域和频域是信号分析的两个方面,它们之间存在对应关系,可以 通过傅里叶变换相互转换。
数字信号处理基础
数字信号表示
MATLAB工作环境与界面
MATLAB工作环境
包括命令窗口、工作空间、命令历史窗口、当 前文件夹窗口等。
界面介绍
详细讲解MATLAB界面的各个组成部分,如菜 单栏、工具栏、编辑器窗口等。
基本操作
介绍如何在MATLAB环境中创建、保存、运行脚本和函数,以及如何进行基本 的文件操作。
基本数据类型与运算
数据统计描述性分析
描述性统计量
介绍均值、中位数、众数、方差、标准差等常见 描述性统计量的计算方法和意义。
数据分布形态
通过直方图、箱线图等图形展示数据的分布形态 ,帮助用户了解数据的整体特征。
数据间关系
探讨协方差、相关系数等统计量在揭示数据间关 系方面的应用。
数据可视化方法
二维图形绘制
详细讲解MATLAB中二维图形的绘制方法,包括线图、散点图、 柱状图等。
特征值与特征向量
特征值与特征向量的定义
设A为n阶方阵,若存在数λ和n维非零向量x,使得Ax=λx ,则称λ为A的特征值,x为A的对应于特征值λ的特征向量 。
特征值与特征向量的性质
包括特征值的和等于方阵对角线元素之和、特征值的积等 于方阵的行列式等性质。
MATLAB求解
使用MATLAB内置函数`eig`求解方阵的特征值和特征向量 。
MATLAB编程及应用 李辉 PPT课件 第2章 MATLAB基本计算和基础知识
2.2.2 系统预定义变量
MATLAB系统提供了一些用户不能清除的特殊变量,
即系统预定义变量。
MATALB系统预定义变量及其含义
预定义变量名
含义
ans pi eps nan或NAN inf i或j
运算结果默认变量名 圆周率 浮点数的精度,也是系统运算时确定的极小值 非数,如0/0 无穷大,如1/0 虚数标志,i=j=sqrt(-1)
1.0000 + 2.0000i >> b=3+4*j b=
3.0000 + 4.0000i
2.3.2 逻辑类型
MATLAB本身并没有专门提供逻辑类型,而借用整型来描
述逻辑类型数据。MATLAB规定,逻辑数据真(true)为1、
逻辑数据假(false)为0。
>> 2<3 ans =
logical 1 >> 2>3 ans = logical 0
>> sin(pi/3) ans =
0.8660
➢ 复数的计算:MATLAB还具有超越计算器的功能, 它认识复数,能够进行复数的计算。
>> (2+3i)+(4+5i) ans =
6.0000 + 8.0000i
Байду номын сангаас
2.2 变量
变量是指在程序执行过程中其值可以变化的量。
变量
用户自定义变量 系统预定义变量
2.3 数据类型
MATLAB数据类型
数值类型 逻辑类型 字符串类型 单元类型 结构类型
2.3.1 数值类型
数值类型分类方法
根据数据存 储空间和方 式分类
根据数据结 构分类
复旦大学Matlab课件--CHAPTER2
1 0 0
1 0 0
M 2 0 1 0 L2 0 1 0
0 0.04 1
0 0.04 1
线性方程组求解
Ax = b LU = PA Ly = Pb Ux = y
x = A\b
舍去和舍入
p 22 3.142857142857142857... 7
六位有效数字: 舍去浮点表示(chopped floating-pointing representation)
x
x
条件数:
Ax
max
(a)
x A A1
Ax
min
x
扰动分析
Ax b Ax x b b
b M x b m x
x ( A) b
x
b
条件数是相对误差放大因子,也是刻画矩阵奇异性的测度。
例子
A 94..71 62..68,b 94..71, x 10
b~ 94..7101, ~x 00..9374
Matlab Math 线性方程组
Cleve Morler著 陈文斌(wbchen@)
复旦大学2002
线性方程组
Ax = b பைடு நூலகம்x = A-1b,但实际上并不显式求A-1
例子: 7x = 21 x = 21/7=3
如果求逆
x = 7-1× 21 = .142857 × 21 = 2.99997
b 13.8, b 0.01, x 1, x 1.63,
b
x
0.0007246, 1.63,
b
x
( A) 1.63 2249.4
0.0007246
norm1
例子
假设矩阵的第一个元素a11=0.1,所有其他元素和b是整数,且A 的条件数是1012。假设用IEEE双精度53位浮点算法,且我们 假设可以精确求解计算机中的系统,那么由唯一的误差是由 0.1的二进制表示引起的,我们可以预期
第2章MATLAB的基本语法课件
handmard
Handmard矩 rosser 阵
hankel hilb invhilb
Hankel矩阵 toeplize Hilbert矩阵 vander
Hilbert逆矩 wilkinson 阵
魔方矩阵
Pascal矩阵
经典的对称 特征值测试 矩阵 Toeplize矩阵
Vanderm阵
此外,常用的函数还有reshape(A,m,n),它在 矩阵总元素保持不变的前提下,将矩阵A重新 排成m×n的二维矩阵。
4. 建立大矩阵 大矩阵可由方括号中的小矩阵建立起来。 例如
A=[1 2 3;4 5 6;7 8 9]; C=[A,eye(size(A)); ones(size(A)),A]
C=
3. 内存变量文件 ❖利用MAT文件(.mat)可以把当前MATLAB
工作空间中的一些有用变量长久地保留下 来。
❖MAT文件的生成和装入由save和load命令 来完成。常用格式为:
save 文件名 [变量名表] [-append][-ascii]
load 文件名 [变量名表] [-ascii]
2.3 MATLAB矩阵
• 数据输出时用户可以用format命令设置或改 变 数 据 输 出 格 式 。 format 命 令 的 格 式 为 : format 格式符
• 注意,format命令只影响数据输出格式,而 不影响数据的计算和存储。
2.2.4 预定义变量
在MATLAB工作空间中,还驻留几个由 系统本身定义的变量。它们有特定的含 义,在使用时,应尽量避免对这些变量 重新赋值。
❖ 变量的元素用圆括号“( )”中的数字 (下标)表示。一维矩阵(数组)中的
元素用一个下标表示;二维矩阵用两个 下标表示,以逗号分开
《MATLAB程序设计教程(第二版)》第2章 MATLAB矩阵及其运算
显然,linspace(a,b,n)与a:(b-a)/(n-1)可由方括号中的小矩阵或向量建立起来。
2.2.2 矩阵的拆分
1.矩阵元素的引用方式
通过下标引用矩阵的元素,例如 A(3,2)=200 采用矩阵元素的序号来引用矩阵元素。矩阵元素 的序号就是相应元素在内存中的排列顺序。在
2.利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩 阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第
j列的元素。
A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素; A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在 第k~k+m列中的所有元素。
辑器可以直接观察变量中的具体元素,也可修改
变量中的具体元素。
clear命令用于删除MATLAB工作空间中的变量。
who和whos这两个命令用于显示在MATLAB工作 空间中已经驻留的变量名清单。who命令只显示
出驻留变量的名称,whos在给出变量名的同时,
还给出它们的大小、所占字节数及数据类型等信 息。
MATLAB中,矩阵元素按列存储,先第一列,再
第二列,依次类推。
例如
A=[1,2,3;4,5,6];
A(3) ans = 2 显然,序号(Index)与下标(Subscript )是一一对应的,
以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j1)*m+i。其相互转换关系也可利用sub2ind和 ind2sub函数求得。
x,y必须为相同大小的实矩阵或为标量。
2.1.5 数据的输出格式
matlab课件--第2讲-数组和矩阵
键入: A=[1 2 3;4 5 6;7 8 9];
C=A(1:2, [1 3]) %A的第1,2行,
输出:C=
%A的第1,3列
13
46
还有A(1:2:3, 3:-1:1)
第34页,共66页。
Matlab 软件实习
5) 矩阵的拼接
将几个矩阵接在一起称为拼接,左右拼接 行数要相同,上下拼接列数要相同。
ans = 0.9501 0.2311 0.6068 0.4860 0.8913 1.05
>>x(find(x>0.5)) ans =
0.9501 0.6068 0.8913
>>x([1 2 3 4 4 3 2 1]) ans =
Columns 1 through 8
0.9501 0.2311 0.6068 0.2311 0.9501
2)利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门建立一个M 文件.下面通过一个简单例子来说明如何利用M文件创建矩阵.
例 利用M文件建立MYMAT矩阵. (1) 启动有关编辑程序或MATLAB文本编辑器,并输入待 建矩阵;
(2) 把输入的内容以纯文本方式存盘(设文件名为 mymatrix.m). (3) 在MATLAB命令窗口中输入mymatrix,即运行该M 文件,就会自动建立一个名为MYMAT的矩阵,可供以后 使用.
c. 对角矩阵
命令
运行结果
diag(A)
生成一个由矩阵A主对角线元素组 成的列向量。主对角线总是从矩阵 左上角开始。对于方阵来说结束于 矩阵的右下角。
diag(x)
生成一个n维的方阵,它的主对角 线元素取自向量x,其余为0。
diag素组成的列向量。k=0为主对角线; k<0为下第k对角线; k>0为上第k 对角线。
matlab基本使用方法ppt课件
ppt课件.
31
例:
floor(2/3) round(2/3) floor(1./[1 2 3]) ceil(1/2) fix(1/3) floor(-1/3) mod(-2,-3) mod(2,-3) rem(2,-3)
ppt课件.
32
2.1.2 Matlab的数学运算符
运算操作符
符号(矩阵)
例:
logspace(0,2,3) logspace(1,2)
ppt课件.
18
3 由函数生成特殊矩阵
zeros(m,n): 产生m*n的全0矩阵; ones(m,n): 产生m*n的全1矩阵; rand(m,n): 产生均匀分布随机矩阵,元素
取值范围为0-1; randn(m,n): 产生正态分布的随机矩阵; magic(n): 产生n阶魔方矩阵; eye(m,n): 产生m*n的单位矩阵; diag(m): 产生以m向量为对角元素的对角阵
矩阵输入的方法
1. 直接输入矩阵。 2. 通过语句生成矩阵。 3. 由矩阵生成函数产生特殊矩阵。 4. 用户自己编写M文件产生矩阵。 5. 通过导入外部数据文件生成矩阵。
1 直接输入矩阵
(1) 矩阵中元素应用方括号括住。 (2) 每行内的元素间用逗号或空格隔开; (3) 行与行之间用分号或回车键隔开。 (4) 元素可以是数值或表达式。
ppt课件.
45
逻辑运算
Matlab的逻辑操作符主要有:
指令
含义
指令
含义
& (and) 与、和
| (or)
或
~ (not)
否、非
xor(a, b) (异或逻辑函数)
a,b对应元素同为0 或非0时,为0, 否则为1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二讲MATLAB程序设计MATLAB有两种工作方式:交互式的命令行工作方式M文件的程序工作方式一. M文件用MATLAB语言编写的程序,称为M文件。
M文件有两类:命令文件和函数文件。
命令文件:没有输入参数,也不返回输出参数。
函数文件:可以输入参数,也可返回输出参数。
1.M文件的建立与编辑建立新的M文件:从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。
编辑已有的M文件:从MATLAB命令窗口的Flie菜单中选择Open M-file命令。
2.命令文件将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。
【例1】建立一个命令文件将变量a,b的值互换。
e31.m文件:a=1:9;b=[11,12,13;14,15,16;17,18,19];c=a;a=b;b=c;ab在MATLAB的命令窗口中输入e31,将会执行该命令文件。
二.数据的输入输出1. input函数:用于向计算机输入一个参数。
调用格式:A=input(提示信息,选项);注:‘s’选项,则允许用户输入一个字符串。
例如想输入一个人的姓名,可采用命令xm=input('What''s your name:','s')【例2】求一元二次方程a2+bx+c=0的根。
a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]将该程序以aa.m文件存盘,然后运行aa.m文件。
2.pause函数:暂停程序的执行。
调用格式:pause(延迟秒数)注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。
3.disp函数:命令窗口输出函数。
调用格式:disp(输出项)注:输出项为字符串或矩阵。
例如A='Hello,MATLAB';disp(A)输出为:Hello,MATLAB三.程序设计(一)选择结构选择结构的语句有if语句和switch语句。
1.if语句格式一:if 条件语句组end格式二:if 条件语句组1else语句组2end(一)选择结构格式三:if 条件1语句组1elseif 条件2语句组2……elseif 条件m语句组melse语句组m+1end(一)选择结构【例4】输入三角形的三条边,求面积。
A=input('请输入三角形的三条边:');if A(1)+A(2)>A(3) & A(1)+A(3)>A(2) & A(2)+A(3)>A(1) p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));disp(s);elsedisp('不能构成一个三角形。
')end运行:请输入三角形的三条边:[4 5 6]9.9216(一)选择结构【例5】输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。
c=input('','s');if c>='A' & c<='Z'disp(setstr(abs(c)+1));elseif c>='a'& c<='z'disp(setstr(abs(c)-1));elsedisp(c);end2 switch语句switch语句根据变量或表达式的取值不同,分别执行不同的语句。
其格式为:switch 表达式case 值1语句组1case 值2语句组2……case 值m语句组motherwise语句组m+1end(一)选择结构(一)选择结构【例6】根据变量num 的值来决定显示的内容。
num=input('请输入一个数');switch numcase -1disp('I am a teacher.');case 0disp('I am a student.');case 1disp('You are a teacher.');otherwisedisp('You are a student.');end(二)循环结构实现循环结构的语句:for语句和while语句。
1.for语句:格式:for 循环变量=表达式1:表达式2:表达式3循环体语句end注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。
步长为1时,表达式2可以省略。
(二)循环结构2.while语句格式为:while (条件)循环体语句end【例7】根据例3.6中求y的表达式,求:(1)y<3时的最大n值。
(2)与(1)的n值对应的y值。
(二)循环结构求y的表达式y=0; i=1;while 1 %循环的条件为1,即循环条件总是满足的,这是一个永真循环f=1/(2*i-1);y=y+f;if y>3break;endi=i+1;endn=i-1y=y-f(二)循环结构3.循环的嵌套如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。
多重循环的嵌套层数可以是任意的。
可以按照嵌套层数,分别叫做二重循环、三重循环等。
处于内部的循环叫作内循环,处于外部的循环叫作外循环。
【例8】求[100,1000]以内的全部素数。
n=0;for m=100:1000 flag=1; j=m-1;i=2;while i<=j & flagif rem(m,i)==0flag=0;end i=i+1;endif flagn=n+1;prime(n)=m; endendprime %变量prime存放素数三.程序设计(二)循环结构四.函数文件函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。
事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。
1.函数文件格式函数文件由function语句引导,其格式为:function 输出形参表=函数名(输入形参表)注释说明部分函数体注:其中函数名的命名规则与变量名相同。
输入形参为函数的输入参数,输出形参为函数的输出参数。
当输出形参多于1个时,则应该用方括号括起来。
【例9】编写函数文件求小于任意自然数n的Fibonacci数列各项。
function f=ffib(n)%用于求Fibonacci数列的函数文件%f=ffib(n)%1999年9月30日编f=[1,1];i=1;while f(i)+f(i+1)<nf(i+2)=f(i)+f(i+1);i=i+1;end 将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2 000的Fibonacci数。
ffib(2000)2.函数调用函数文件编制好后,就可调用函数进行计算了。
如上面定义ffib函数后,调用它求小于2000的Fibonacci数。
函数调用的一般格式是:[输出实参表]=函数名(输入实参表)【例10】利用函数文件,实现直角坐标(x,y)与极坐标(γ,θ)之间的转换。
函数文件tran.m :function [gama,theta]=tran(x,y)gama=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m 的命令文件main1.m :x=input('Please input x=:');y=input('Please input y=:');[gam,the]=tran(x,y);gam the已知转换公式为:极坐标的矢径:γ=极坐标的幅角:θ=【例11】利用函数的递归调用,求n!。
function f=factor(n)if n<=1f=1;elsef=factor(n-1)*n;endreturn; %返回在命令文件main2.m中调用函数文件factor.m:for i=1:10fac(i)=factor(i);endfac 程序运行结果是:fac=Columns 1 through 6 1 2 6 24 120 720 Columns 7 through 10 504 40320 362880 36288003 .函数所传递参数的可调性MATLAB在函数调用上有一个与众不同之处:函数所传递参数数目的可调性。
凭借这一点,一个函数可完成多种功能。
在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。
只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。
【例12】nargin用法示例函数文件examp.m:function fout=charray(a,b,c) if nargin==1fout=a;elseif nargin==2fout=a+b;elseif nargin==3fout=(a*b*c)/2;end命令文件mydemo.m:x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)执行mydemo.m后的输出是:ans=1 2 3ans=2 4 6ans=21五.全局变量和局部变量在MATLAB中,全局变量用命令global定义。
函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。
但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。
全局变量的作用域是整个MATLAB工作空间,即全程有效。
所有的函数都可以对它进行存取和修改。
因此,定义全局变量是函数间传递信息的一种手段。
四. 函数文件【例13】全局变量应用示例先建立函数文件wadd.m,该函数将输入的参数加权相加。
function f=wadd(x,y)%add two variableglobal ALPHA BETAf=ALPHA*x+BETA*y;在命令窗口中输入:global ALPHA BETA ALPHA=1;BETA=2;s=wadd(1,2)输出为:s =5习题1. 输入20个数,求其中最大数和最小数。
要求分别用循环结构和调用MATLAB的max函数、min函数来实现。
2. 求Fibonacci数列(1)大于4000的最小项。