第3章Matlab数据类型
第3章 Matlab中的编程与流程控制

第三章 MATLAB编程与流程控制----------王立明 3.设置搜索路径 将自己目录加入到MATLAB的搜索路径的方法:双击 PiIe菜单下的set path命令,会打开一个路径设置窗口 (Set Path)如图1.3所示。按照窗口中各个按钮上的指 示进行操作即可。
第三章 MATLAB编程与流----------王立明
将
将它存入D 盘的mag.m文件,要将它读入上作空间,可键入命令
第三章 MATLAB编程与流程控制----------王立明 例:
第三章 MATLAB编程与流程控制----------王立明 输入函数文件 后,键入
结果
第三章 MATLAB编程与流程控制----------王立明 3.子函数文什
4.全局变量
如果几个函数文件要共用一个变量,那么要在这些函数 文件中部定义这个变量是全局变量。如果在指令窗中也 要使用这个变量,就还要在指令窗中定义这个变量为全 局变量。必须在使用函数之前定义全局变量。
第三章 MATLAB编程与流程控制
3.1 程序文件 3.2 指令类文件和函数类文件 3.3 流程控制
3.4 数据的输入和输出
习题
第三章 MATLAB编程与流程控制----------王立明
3.1 程序文件
3.3.1 程序文件的编辑与调试
MATLAB的程序文件都足以.m为扩展名,所以称为M文件。 在M4TL入B中带有一个编辑器可以编辑M文件。 MATLAB 中的许多指令和全部的工具箱文件都是M文件。在M文件中, 凡是说明性的文字都用%并头。
第三章matlab编程与流程控制王立明第三章matlab编程与流程控制31程序文件32指令类文件和函数类文件33流程控制34数据的输入和输出习题第三章matlab编程与流程控制王立明31程序文件331程序文件的编辑与调试matlab的程序文件都足以
Matlabch3_数组

双曲类
sinh, cosh, tanh, coth, sech, csch
asinh, acosh, atanh, acoth, asech, acsch
指数函数
Exponential
exp
log, log10, log2, log1p, reallog
%
Ass1 =
8
As22 =
2 14
3 15
As26=A([1,3],:)%
As26 =
1 4 7 10 13 16
3 6 9 12 15 18
3)
Ais1=A(8)%
ind=[1,3,18];%
%
Ai1r=A(ind)%
Ai1c=A(ind')%
Ais1 =
8
Ai1r =
1 3 18
Ai1c =
1
ans =
1
1
1
diag(diag(D))%
ans =
1 0 0
0 1 0
0 0 1
randsrc(3,20,[-3,-1,1,3],1)
%
%
ans =
Columns 1 through 12
-1 -1 -3 1 -3 1 -3 3 3 -3 -3 1
1 -3 -1 -1 3 -1 -3 -1 3 -3 -1 1
L1=LA&LB
LL1=A&B%
LA =
1 1 0 0 1 1 1
LB =
0 1 1 0 1 1 1
L1 =
0 1 0 0 1 1 1
LL1 =
0 1 0 0 1 1 1
第3章 数据类型 yw

一个正数的补码就是其原码,例如整数7在八位
计算机中的补码是0000 0111。 对于负数的补码是将数字的反码加上1,就得到 了这个数字的补码。例如-7在8位计算机中的补码是 1111 1001。
关于数字在计算机中二进制表示的详细解释请参
阅相应的计算机原理方面的书籍。
14
例子3-3(a) 数据位“与”操作。
计的一种数组。利用空数组可以修改数组的大小,但是不能 修改数组的维数。 下面通过具体的例子来说明空数组创建和使用的过程。 例子3-6 创建空数组。
和创建普通的数组(矩阵)一样,创建空数组也有不同的
方法,在MATLAB命令行窗口中键入下面的命令:
22
>> A = [] A= [] >> B = ones(2,3,0) B= Empty array: 2-by-3-by-0 >> C = randn(2,3,4,0) C= Empty array: 2-by-3-by-4-by-0 >> whos Name Size Bytes Class A 0x0 0 double array B 2x3x0 0 double array C 4-D 0 double array Grand total is 0 elements using 0 bytes
matlab第三章课后部分答案

matlab第三章课后部分答案习题三3-2 从键盘输入一个三位整数,将它反向输出。
如输入639,输出为936程序如下:m=input('请输入一个三位整数:');m1=fix(m/100);%求m的百位整数m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);%求m的个位数字m=m3*100+m2*10+m1%反向输出m3-3 输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
程序如下:(1)if语句c=input('请输入成绩:');if c>=90&c<=100disp('A 成绩合理');elseif c>=80&c<=89disp('B 成绩合理');elseif c>=70&c<=79disp('C 成绩合理'); elseif c>=60&c<=69disp('D 成绩合理'); elseif c<60disp('E 成绩合理');elsedisp('成绩错误');end(2)switch语句c=input('请输入成绩:'); switch fix(c)case num2cell(90:100)disp('A 成绩合理'); case num2cell(80:89)disp('B 成绩合理'); case num2cell(70:79)disp('C 成绩合理'); case num2cell(60:69)disp('D 成绩合理'); case num2cell(0:59)disp('E 成绩合理');x=fix(rand(1,20)*89)+10;x1=fix(sum(x)/20);disp(['平均数是:',num2str(x1)])m=(rem(x,2)==0&x<x1);n=find(m);disp(['小于平均数的数是:',num2str(x(n))]); 3-6 输入20个数,求其中最大数和最小数。
(完整版)matlab电子教案(1)

第二章Matlab 初步(12课时)一、初等运算和初等函数(0.5课时)1、简单指令:(P5/6)例1.算术运算 a=2^2+(12+2*(7-4))/3^2-2^(1/2) %注意算术运算的运算符例2. 简单矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321A 的 输入。
A = [1,2,3; 4,5,6; 7,8,9]A = [1 2 3; 4 5 6; 7 8 9]A=[1,2,34,5,67,8,9] %分行输入例3.指令的续行输入S=1–1/2+1/3–1/4+1/5–1/6+1/7 …-1/82、数值、变量和表达式(1)数值的记述MATLAB 的数值采用习惯的十进制(或科学计数法)表示,可以带小数点或负号。
(2)变量命名规则变量名、函数名是对字母大小写敏感的。
变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。
(3)MATLAB 默认的预定义变量:(P7/8)3、有关复数的函数:(P8/9)real(a) %给出复数a 的实部imag(a) %给出复数a 的虚部abs(a) %给出复数a 的模angle(a) %以弧度为单位给出复数a 的相位角例4.复数的运算——表达复数ie z i z i z 63212,21,43π=+=+=,及计算321z z z z =。
z1=3+4i %经典教科书的直角坐标表示法z2=1+2*i %运算符构成的直角坐标表示法z3=2*exp(i*pi/6) %运算符构成的极坐标表示法z=z1*z2/z3例5.复数矩阵的生成与计算(P15/10)A=[1,3;2,4]-[5,8;6,9]*iB=[1+5i,2+6i;3+8*i,4+9*i]C=A*B例6.求复数矩阵的实部、虚部、模和相角(接例5)C_real=real(C)C_imag=imag(C)C_magnitude=abs(C)C_phase=angle(C)*180/pi例7.复数的运算 ——计算-8的3次方根 (P10/11)(1) 直接计算时,得到的是处于第一象限的方根a=-8;r=a^(1/3)(2) 全部方根的计算% 先构造一个多项式a r r p -=3)(p=[1,0,0,-a]; %p 是多项式)(r p 的系数向量%指令末尾的“英文状态分号”使该指令运行后,不显示结果。
第3章 MATLAB矩阵分析与处理1

(3) 希尔伯特矩阵 在MATLAB中,生成希尔伯特矩阵的函数 是hilb(n)。 使用一般方法求逆会因为原始数据的微小 扰动而产生不可靠的计算结果。MATLAB 中,有一个专门求希尔伯特矩阵的逆的函 数invhilb(n),其功能是求n阶的希尔伯特矩 阵的逆矩阵。
例3.4 求4阶希尔伯特矩阵及其逆矩阵。 命令如下: format rat %以有理形式输出 H=hilb(4) H=invhilb(4)
(5) 伴随矩阵 MATLAB生成伴随矩阵的函数是compan(p), 其中p是一个多项式的系数向量,高次幂系 数排在前,低次幂排在后。例如,为了求 多项式的x3-7x+6的伴随矩阵,可使用命令: p=[1,0,-7,6]; compan(p)
(6) 帕斯卡矩阵 我们知道,二次项(x+y)n展开后的系数随n 的增大组成一个三角形表,称为杨辉三角 形。由杨辉三角形表组成的矩阵称为帕斯 卡(Pascal)矩阵。函数pascal(n)生成一个n阶 帕斯卡矩阵。
12
(2)构造对角矩阵
如果V是一个m个元素的向量,diag(V)将产生一个m×m对角 矩阵,
其主对角线元素即为向量V的元素。
例如:
diag([1,2,-1,4])
ans =
1000
0200 0 0 -1 0 0004 例如: diag(1:3,-1)
ans = 0000 1000 0200 0030
46.7390 33.3411 25.2880 46.8095 24.1667
y = 0.6 + sqrt(0.1)*randn(5)
2024/8/10
Application of Matlab Language
2
3.1.2 用于专门学科的特殊矩阵 (1) 魔方矩阵 魔方矩阵有一个有趣的性质,其每行、每 列及两条对角线上的元素和都相等。对于n 阶魔方阵,其元素由1,2,3,…,n2共n2个整数 组成。MATLAB提供了求魔方矩阵的函数 magic(n),其功能是生成一个n阶魔方阵。
第3章 MATLAB符号计算

复数函数。在符号计算中,复数的共轭conj、求实部real、求虚部 imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号 计算中,MATLAB没有提供求相角的命令。
2.使用syms命令创建符号变量和符号表达式
语法:
syms('arg1', ' arg2',…,参数) syms arg1 arg2 … 参数
%把字符变量定义为符号变量 %把字符变量定义为符号变量的简洁形式
说明:syms用来创建多个符号变量,以上两种方式创建的符号对象是相同的。参数设置和前面的sym命令 相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】 使用syms命令创建符号变量和符号表达式。
>> syms x y real >> z=x+i*y; >> real(z) ans = x >> sym('x','unreal'); >> real(z) ans = x/2 + conj(x)/2
%创建实数符号变量 %创建z为复数符号变量 %复数z的实部是实数x
%清除符号变量的实数特性 %复数z的实部
符号运算中的运算符有以下2种。 (1)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。
第3章 MATLAB的符号运算_微分方程求解_符号代数方程

或syms a b c x
f='a*x^2+b*2+c'
9/46
数组、矩阵与符号矩阵(P51)
m1=sym('[ab bc cd ; de ef fg ; h l j]') m2=sym('[1 12;23 34]') 例:
– >>A=hilb(3) A= 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000
dx dx2
例6:已知函数
f
= x2 sin 2 y 求
df
df ,
d2 f ,
dx dy dxdy
例7:已知函数
f
=
xe y y2
求
ff ,
xy
见example3_12
23/46
df
例8:已知导函数
= ax 求原函数
dx
b
例9:已知导函数 f (x) = x2 求 f (x)dx a
例10:计算重积分I = 2 d a r2 sin dr ?
– 例:>>rho=1+sqrt(5)/2; >>sym(rho,’d’); ans= 2.1180339887498949025257388711907
11/46
符号对象转换为数值对象的函数double(), vpa() 1、double()
这种格式的功能是将符号常量转换为双精度数值 2、vpa()
创建符号对象与函数命令(P50)
1、函数命令sym()格式 格式1 s=sym(a)(a代表一个数字值、数值矩阵、数值表达式 格式2 s=sym(‘a’)(a代表一个字符串)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
到ans中
pi
圆周率π(= 3.1415926...)
inf
无穷大∞值,如1/0
eps
浮点运算的相对精度2^(-52)
realmax 最大的正浮点数,2^(1024)-1
realmin 最小的正浮点数,2^(-1022)
NaN或nan 不定量,如0/0或inf/inf
i或j
虚数单位
nargin 函数输入参数个数
第3章 Matlab 数据类型
主要内容
常量与变量 数值类型 逻辑类型 字符和字符串 元胞数组 结构体 函数句柄
2020/8/11
Application of MATLAB
1
3.1 常数与变量
3.1.1 MATLAB系统的特殊变量和常数
特殊变量
意义
ans
默认变量名,如果用户未定义变量名,matlab自动将结果保存
N = namelengthmax Matlab用字符i和j表示虚数单位,如果涉及
到复数计算,应避免把i和j用作变量名
isvarname 8th_column
2020/8/11
Application of MATLAB
3
3.1 常数与变量
3.1.3 创建变量
在MATLAB中创建变量不必声明变量的数据类型
把数值转换为一种整型数据类型时,matlab会将结果圆整 到最近的整型值
➢ 对于小数位取5的情况,如果数值为正,则向上圆整,否则向下圆 整
➢ 将大于整型数据类型最大值的数据转换为该整型时,matlab返回最 大值。如果数据值小于数据类型的最小值,则返回最小值
2020/8/11
Application of MATLAB
例创建一个A变量 A = 9
将变量的值赋给另一个变量前,必须确定该变量有值, 否则会返回错误。
例如
A=a
??? Undefined function or variable 'a'.
如果变量已经存在,给它赋值会替换它的当前值
2020/8/11
Application of MATLAB
4
3.1 常数与变量
3.1.4 变量的数据类型
变量数据类型
logical 逻辑型
char 字符/字
符串
numeric 数值型
cell 元胞数组
structure 结构体
Java classes Java类
function handle 函数句柄
int8, unit8, int16, uint16, int32, uint32, int64, uint64,
2020/8/11
Application of MATLAB
10
3.2 数值类型数据
3.2.2 单精度浮点型数据类型
single命令将数值或变量指定为single型 single型数据所占内存为double型的一半 将double型数据转换为single型时,matlab将该数据圆整
函数句柄
@sin
2020/8/11
说明
有符号和无符号的整数类型 大部分整数类型占用比浮点类型更少的内存空间
单精度浮点类型 和双精度浮点类型相比,占用内存空间更小,精度和 数值范围都比双精度浮点类型小
双精度浮点类型 Matlab中默认的数值类型
逻辑类型数据 1代表逻辑真,0代表逻辑假
字符串类型
元胞数组类型 数组元素可以是不同的数据类型 注:存储多个字符串最好用元胞数组类型
nargout 函数输出参数个数
lasterr 存放最新的错误信息
lastwarn 存放最新的警告信息
2020/8/11
Application of MATLAB
2
3.1 常数与变量
3.1.2 变量名
变量名由字母、数字和下划线组成; 变量名中英文字母大小写是有区别的; 变量名的最大长度是有规定的
不同版本的系统规定不同:19个字符、31或63个字符等 namelengthmax函数:系统规定长度 isvarname函数:变量名的合法性
int16
无符号16位整数
0~216-1
uint16
有符号32位整数
-231~231-1
int32
无符号32位整数
0~232-1
uint32
2020/8/11
Application of MATLAB
8
3.2 数值类型数据
3.2.1 整型数据类型
int8:将值或变量指定为整型
class函数:变量数据类型
单精度
双精度(包括复数、inf和NaN等)
2020/8/11
Application of MATLAB
7
3.2 数值类型数据
3.2.1 整型数据类型型
数值范围
转换函数
有符号8位整数
-128~127
int8
无符号8位整数
0~255
uint8
有符号16位整数
-215~215-1
结构体类型 类似于C语言,通过结构体中多个成员可以存储多种 类型的数据
函数句柄,相当于一个指针
Application of MATLAB
6
3.2 数值类型数据
数值类型包括有符号整数类型、无符号整数类型、单 精度浮点类型和双精度浮点类型
数值类型
整数类型 浮点类型
有符号、无符号8位 有符号、无符号16位 有符号、无符号32位 有符号、无符号64位
single
single(383.21)
double
383.21, 4+5.2i
logical
randn(3,4)>0.5
char
‘welcome!’
cell array
a{1,1}=’hello’; a{1,2}=325; a{1,3}=ones(3,2);
structure
=’join’; a.age=13; a.mat=rand(2,3);
9
3.2 数值类型数据
3.2.1 整型数据类型
两个相同类型的数据相加,结果仍为该整型
例如x=int16(5)+int16(9) 返回结果为x=14 class(x) 返回结果为ans=int16
如果结果大于数据类型的最大值或小于最小值,会返回最 大值或最小值
例如intwarning(‘on’) int16(50000) Warning: Out of range vonverted to intmin(‘int16’) or intmax(‘int16’) ans=32767
整数类型
2020/8/11
single 单精度 浮点型
double 双精度 浮点型
Matlab支持多种数据类型
所有类型数据都被存储在矩阵或数组中进行操作
Application of MATLAB
5
3.1 常数与变量
变量的数据类型
数据类型
示例
int8, uint8, int16, uint16(7500) uint16, int32, uint32