持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情
导语
本文为我之前在CSDN平台上的一篇博客记录。原链接为:blog.csdn.net/u011426236/…
1.MATLAB命令行下的换行输入方法
(1).可以在该行输入语句后加空格然后...即可。(用于续接一行内容)
(2).按下Shift+Enter即可换行。(用于希望先输入多条语句,然后再同时顺序执行它们)
2.MATLAB的基本数据类型
MATLAB中的基本数据类型包括数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组类型。
2.1数值类型
(1).未加说明时与特殊定义时,MATLAB对所有数值按照双精度浮点数类型进行存储和操作。
>> x = 5;
>> y = 2/5;
>> z = 0.2687;
>> m = 0;
>> whos
Name Size Bytes Class Attributes
m 1x1 8 double
x 1x1 8 double
y 1x1 8 double
z 1x1 8 double
(2).在MATLAB中,单精度浮点数类型不能与整数类型进行算术运算。
>> c = single(6.02);
>> d = 7.36;
>> n = int16(10);
>> result = c * n
错误使用 .*
整数只能与相同类的整数或标量双精度值组合使用。
>> result = d * n
result =
74
2.2逻辑类型
与C/Java等编程语言不同点之一是不等于的关系操作符是~=,而非!=
2.3字符和字符串
(1).字符串内各元素存放的是各个字符的ASCII码值。
>> str = 'Hello world.';
>> nstr = str + 2.5
nstr =
74.5000 103.5000 110.5000 110.5000 113.5000 34.5000 121.5000 113.5000 116.5000 110.5000 102.5000 48.5000
(2).字符串内的单引号由两个连续的单引号来表示。
>> String = 'I''m a goog boy.'
String =
I'm a goog boy.
(3).可以直接将字符串用数组方式来实现连接。
>> A = 'Hell0 ';
>> B = 'world!';
>> C = [A, B]
C =
Hell0 world!
2.4函数句柄
函数句柄即函数的首地址,暂时我是这样理解的。
2.5结构体类型
2.5.1结构体的创建
(1).可以通过字段赋值来逐个给结构体中的成员变量赋值。
>> Student.name = 'Amy';
>> Student.age = '20';
>> Student.height = '168';
>> Student.weight = '55';
>> Student
Student =
name: 'Amy'
age: '20'
height: '168'
weight: '55'
(2).可以利用struct函数来创建结构体。
>> newArray = struct('Day', {'Thursday','Friday'},'Time', {'15:00','21:00'},'Number', {12});
>> newArray
newArray =
1x2 struct array with fields:
Day
Time
Number
>> newArray[1]
newArray[1]
|
错误: 圆括号或方括号不对称或异常。
>> newArray(1)
ans =
Day: 'Thursday'
Time: '15:00'
Number: 12
>> newArray(2)
ans =
Day: 'Friday'
Time: '21:00'
Number: 12
在这里,数组的下标是用()而非[]。
2.6数组类型
在MATLAB中可以使用:来代替一系列数值,比如在定义数组时,用以生成从a到b,步长为1的数组,其格式为:
数组名 = a:b
>> Array = 4:10
Array =
4 5 6 7 8 9 10
需要设置步长时,只需在中间加一个参数即可,格式为:
数组名 = a:c:b;%步长为c
例如:
>> Array = 1:2:20
Array =
1 3 5 7 9 11 13 15 17 19
也可以使用linspace函数来创建线性序列和逻辑序列。其应用的两种格式为
数组名 = linspace(起始值, 结束值)%这个方法默认生成100个元素。
数组名 = linspace(起始值, 结束值, 元素个数)
>> Array = linspace(1,11,11)
Array =
1 2 3 4 5 6 7 8 9 10 11
2.7单元数组类型
单元数组是一种不限制元素类型的广义矩阵(维数不限制)。组成单元数组的每一个元素称为一个单元。
2.7.1单元数组的创建
(1).使用赋值语句创建单元数组。其使用花括号{}来界定,使用逗号,或空格来分隔每一个单元,使用分号;来分行。
>> C = {'x', [1,3,6];10, pi}
C =
'x' [1x3 double]
[10] [ 3.1416]
(2).利用cell函数来创建空单元数组,其格式为:
单元数组名 = cell(行数, 列数)%这是一般二维数组的函数,若更多维则继续添加参数(该维度的长度)即可。
>> a = cell(2,2)
a =
[] []
[] []
2.7.2单位数组的访问
对于单元数组C,其访问包括对寻访单元与单元中的内容的访问。第m行第n列的单元数组外标识的访问是通过C(m, n)格式访问,第m行第n列的单元的访问是通过C{m, n}格式进行。
>> C{1, 1}
ans =
x
>> C(1, 1)
ans =
'x'
2.7.3单元数组的操作
(1).单元数组的合并与结构体的合并类似,直接{}内连接即可
>> C = {'x', [1,3,6];10, pi}
C =
'x' [1x3 double]
[10] [ 3.1416]
>> D = {25; 'MATLAB'}
D =
[25]
'MATLAB'
>> T = {C D}
T =
{2x2 cell} {2x1 cell}
(2).单元数组中指定单元的删除,只需要将空矩阵赋值给该单元即可。
示例略
(3).单元数组的形状改变,需使用reshape函数,其格式如下:
更改后单元数组名 = reshape(要改变的单元数组名, 改变后的行数, 改变后的列数)
但应注意的是,reshape前后单元数组的元素个数不能改变。
>> C = {'x', [1,3,6];10, pi};
>> X = reshape(C, 1, 3)
错误使用 reshape
要执行 RESHAPE,请勿更改元素数目。
>> X = reshape(C, 1, 4)
X =
'x' [10] [1x3 double] [3.1416]
2.8map容器类型
2.8.1map类型概述
map即为映射的意思,即将map的键(key)映射为一个数据对象(value),因而可以将其理解为一种快速查找数据结构的方式。对于一个map元素进行寻访的索引称为“键”。一个键可以是以下任何一种数据类型:
(1).1*N的字符串;
(2).单精度或双精度的实数标量;
(3).有符号或无符号标量整数。
这些键与其对应的数据存储在map中。且各键属性需要一致!map类的对象具有三种属性,包括Count(表示map中key/value对的总数)、KeyType(键的类型)和ValueType(值的类型)通过“map名.属性名”即可查看属性值。
2.8.2map对象的创建
map对象通过其构造函数来创建,其格式如下:
map对象名 = containers.Map({键1, 键2, ……}, {值1, 值2, ……})
map对象名 = containers.Map() %用于生成空的map对象
>> mapObj = containers.Map({'小明', '小红'}, {15010230014, 15070150220})%姓名到学号的简单映射
mapObj =
Map (带属性):
Count: 2
KeyType: char
ValueType: double
>> mapObj.Count
ans =
2
>> mapObj.KeyType
ans =
char
>> mapObj.ValueType
ans =
double
2.8.3查看/读取map对象
(1).查看map对象,可以通过keys函数与values函数实现。
(2).读取map对象可通过以下格式实现:
返回值 = map对象名(键值)
(3).若要对多个键值进行访问,可以使用values函数,格式如下:
返回数组名 = values(map对象名, {键1, 键2, ……})
>> mapObj = containers.Map({'小明', '小红', '小亮'}, {150102, 150707, 150209});
>> keys(mapObj)
ans =
'小明' '小红' '小亮'
>> values(mapObj)
ans =
[150102] [150707] [150209]
>> number_x = mapObj('小明')
number_x =
150102
>> numbers = values(mapObj, {'小红', '小亮'})
numbers =
[150707] [150209]
2.8.4map对象的编辑
(1).从map对象中删除keys/values对。一般使用remove函数删除,其调用格式为:
remove(map对象名, 键名)
(2).从map对象中增添keys/values对。添加时,要确保新加入键的类型必需要与其他键的类型一致,其格式如下:
map对象名(新键名) = 新键值
(3).修改keys。若要在保持值不变的情况下修改键名,只能采用先删除该键值对,然后添加一个新的键值对的方法。
(4).修改values。直接通过赋值操作,覆盖掉原有值即可。
>> mapObj = containers.Map({'小明', '小红', '小亮'}, {150102, 150707, 150209});
>> remove(mapObj, '小亮')
ans =
Map (带属性):
Count: 2
KeyType: char
ValueType: double
>> mapObj('小刚') = 150104;
>> mapObj('小红') = 140108;
>> keys(mapObj)
ans =
'小明' '小刚' '小红'
>> values(mapObj)
ans =
[150102] [150104] [140108]