Download presentation
Presentation is loading. Please wait.
1
第三章 数据类型 常数和变量 数组和矩阵 字符串和多维数组 结构和单元数组
2
1.1、内部常数 常 数 返 回 值 ans 默认变量名,保存最近的结果 eps 浮点相对精度 realmax 最大浮点数 realmin
常 数 返 回 值 ans 默认变量名,保存最近的结果 eps 浮点相对精度 realmax 最大浮点数 realmin 最小浮点数 pi 圆周率 i,j 虚数单位 inf 无限值 NaN 不合法的数值值,非数值 computer 计算机类型 version MATLAB版本字符串
3
例1. 计算有理数 例2. >> 2000/21 ans = 95.2381 a=abs(3+4i) a= 5
huge=exp(log(realmax)) huge= 1.7977e+308 toobig=pi*huge Toobig= inf
4
1.2、变量 变量命名规则 变量名的第一个字符必须是一个英文字母,最多 可包括31个字符;
x1, x2, x3,alpha, · · · · · · · · · 变量名可由英文字母、数字和下划线混合组成; 变量名不得包含空格和标点,但可以有下连字符 变量名和函数名对字母的大小写敏感; X,x, Z, z 是不同变量
5
创建变量 在命令窗口中直接输入变量名称创建 A=9 A= 9 isvarname 8th_column //确认变量名的合法性 ans=
6
1.3、数据类型 数据类型 举 例 描 述 逻辑型数组 Magic(4)>10 包含1、0或true、false 字符型数组
举 例 描 述 逻辑型数组 Magic(4)>10 包含1、0或true、false 字符型数组 ‘Hello’ 长度16位,即为字符串 Int8、unit8 int16、unit16 Uint8(magic(3)) 长度未8位、16位的有符号和无符号整型数组 single 3*10^38 单精度数值型数组 double 3*10^3005+6i 双精度数值型数组 单元数组 {17’hello’eye(2)} 包含其他数组。将不同大小有关系的数据集中到一起 结构数组 a.day=12;a.color=‘red’;a.mat=magic(3); 具有字段名。包含其他数组。与单元数组类似
7
MATLAB用format命令来控制输出格式,
format short 短格式 format long 长格式 format short e 短格式e e+000 format long e 长格式e e+000 format rat 分数格式 /113 format bank 银行格式 计算机浮点数记法 5.11× e+8 =1.5× 1.5e-6, = 2.456×107 e+7
8
只需要用空格或逗号间隔数组元素,再用方括号括起来。
2.1、数组 只需要用空格或逗号间隔数组元素,再用方括号括起来。 如:X=[ ] 创建数组向量的三种常用方法: 1.增量法(利用冒号生成向量) x = i : j 如果 i<j, 生成以i为初值, j为终值,1为步长的有限等差数列; x = i: j: k 如果 i<k, 生成以i为初值, k为终值,j为步长的有限等差数列; x = i: -j: k 如果 i>k, 生成以i为初值, k为终值,-j为步长的有限等差数列;
9
>>a=1:4;b=3:6;c=dot(a,b) c=50 >>a=1:3;b=2:4;cross(a,b)
2. 利用linspace(a,b)生成等差向量 x= linspace(2,8)将生成100个数,以2开始,以8结束。 y=linspace(2,8,10)将生成10个数,以2开始,以8结束。 3. 利用logspace(a,b)生成等比向量 例3. 用dot()、cross()进行向量点积运算 >>a=1:4;b=3:6;c=dot(a,b) c=50 >>a=1:3;b=2:4;cross(a,b) ans =
10
2.2、矩阵 A=[1 1/2 1/3;1/2 1/3 1/4; 1/3 1/4 1/5] 2.2.1 创建矩阵的常用方法:
——矩阵的创建/ 直接输入法—— 创建矩阵的常用方法: 1.直接输入法; 2.函数法; 3.矩阵编辑器;4.数据文件法 直接输入法三条规则: 矩阵元素必须在方括号[ ]之内; 同一行相邻元素间用逗号或空格分隔; 矩阵的行与行之间必须用分号分隔. 例4. 三阶Hilbert矩阵 A=[1 1/2 1/3;1/2 1/3 1/4; 1/3 1/4 1/5] A = 2/18
11
B=zeros(3,4) ——产生3×4阶全“0”矩阵 D=ones(3,4) ——产生3×4阶全“1”的矩阵
——矩阵的创建/函数法—— 函数法构造特殊矩阵 C=[ ] — 产生空阵 r =rand —— 产生随机数 R=rand(3,4)——产生3×4阶随机矩阵 E=eye(3) —— 产生3阶单位矩阵 B=zeros(3,4) ——产生3×4阶全“0”矩阵 D=ones(3,4) ——产生3×4阶全“1”的矩阵 X=magic(3)——产生3阶幻方 Y=vander(4)——产生4阶范德蒙矩阵 6/18
12
聚合矩阵 通过连接一个或多个矩阵来形成新的矩阵 C=[A B]//水平方向上聚合 C=[A;B]//垂直方向上聚合
例 A=ones(2,5)*6; B=rand(3,5); C=[A;B] C=
13
聚合具有相同高度的矩阵 聚合具有不同高度的矩阵
14
获取矩阵的元素 A(row,column) A=[2 6 9;4 2 8;3 5 1] A= A(3,2) ans= 5 A(6) //等同A(3,2) Sum(A(1:3,3)) //求第三列元素之和
15
矩阵的子矩阵可以通过向量、标量或冒号的标识来引用和赋值 1.子矩阵的序号向量标识: A(u, v)
A=magic(3); B1=A(1,:), B12=A(1:2,:), B13=A([1,3],[1,3]) B1 = B12 = B13 = 12/18
16
3.1、字符串 创建字符串-使用单引号创建 Country=‘China’;
name=[‘Li Yi’;’Hu Xu’]//创建二维字符串数组 name= Li Yi Hu Xu name=[‘Liu Ying’;’Hu Xu ’]//字符串长度要相同 name=char(‘Liu Ying’,’Hu Xu’)//使用char函数创建
17
Str2double函数将字符串单元数组转换为双精度值
c={’37.294e-1’;’ ’;’13.796’}; d=str2double(c) d= 3.7294 Int2str:整型转换为字符串型 num2str:实数转换为字符串型 mat2str:矩阵转换为字符串型
18
比较字符串 str1=‘hello’; str2=‘help’; strcmp(str1,str2) C= //false str1==str2 ans= //确定两个字符串中的相同字符 strncmp: 可选择字符串的前n+1个字符进行比较
19
聚合字符串 num_chars=28; s=[‘There are ‘int2str(num_chars)’characters here’]; s=sprintf(‘There are %d characters here\n’,num_chars); country=‘China’; province=‘SiChuan’; strcat(country,’,’,province) ans= China,SiChuan
20
3.2、多维数组 索引生成 A=[5 7 8;0 1 9;4 3 6]; //创建一个二维数组
A(:,:2)=[1 0 4;3 5 6;9 8 7]; //为A添加第三维 MATLAB函数生成 B=randn(4,3,2); //创建正态分布随机数的4×3×2的数组 类似的函数有ones(),zeros()等 cat函数生成 B=cat(dim,A1,A2…) //按指定的维数将多个数组聚合
21
4.1、结构 -调用字段的数组 1、使用赋值语句创建结构数组 2、使用struct函数
student.name=‘Lu dan’;//可包含任何类型的数据 student.ID=02; student.test=[ ; ; ]; student(2).name=‘Han xu’;//扩展结构数组 student(2).ID=10; student(2).test=[ ; ; ]; 2、使用struct函数 str_array=struct(‘field1’,val1, ‘field2’,val2,…)
22
3、获取数据 str=student(2).name student(3).test(2,2)=87 IDs=[student.ID]//包含所有的ID字段 4、操作字段 student(2).gender=‘boy’;//为数组的每个结构添加字段 student=rmfield(student,’name’);//删除给定字段 mean((student(2).test));//计算test数组的行均值 total=sum([student.ID]);所有ID字段求和
23
4.2、单元数组 -能包含其它数组 1、创建单元数组 A[1,1]={[1 4 3; 0 5 8;7 2 9]};
A[1,2]={‘Liu zhong’}; A[2,1]={3+7i;} A[2,2]={-pi:pi/10:pi};//通过矩阵单元索引访问数据 或 A{1,1}=[1 4 3; 0 5 8;7 2 9]; A{1,2}=‘Liu zhong’; A{2,1}=3+7i; A{2,2}=-pi:pi/10:pi;//通过矩阵内容索引访问数据
Similar presentations