扫码一下
查看教程更方便
matlab 不需要任何类型声明或维度声明。 每当 matlab 遇到新变量名时,它都会创建该变量并分配适当的内存空间。
如果该变量已存在,则 matlab 会用新内容替换原始内容并在必要时分配新的存储空间。
例如,
total = 42
上面的语句创建了一个名为“total”的 1×1 矩阵,并将值 42 存储在其中。
matlab 提供 15 种基本数据类型。 每种数据类型都以矩阵或数组的形式存储数据。 此矩阵或数组的大小至少为 0×0,并且可以增长到任何大小的矩阵或数组。
下表显示了 matlab 中最常用的数据类型
| 序号 | 数据类型 | 描述 |
|---|---|---|
| 1 | int8 | 8 位有符号整数 |
| 2 | uint8 | 8 位无符号整数 |
| 3 | int16 | 16 位有符号整数 |
| 4 | uint16 | 16 位无符号整数 |
| 5 | int32 | 32 位有符号整数 |
| 6 | uint32 | 32 位无符号整数 |
| 7 | int64 | 64 位有符号整数 |
| 8 | uint64 | 64 位无符号整数 |
| 9 | single | 单精度数值数据 |
| 10 | double | 双精度数值数据 |
| 11 | logical | 逻辑值 1 或 0,分别代表 true 和 false |
| 12 | char | 字符数据(字符串存储为字符向量) |
| 13 | cell array | 索引单元格数组,每个单元格都能够存储不同维度和数据类型的数组 |
| 14 | structure | 类 c 结构,每个结构都有命名字段,能够存储不同维度和数据类型的数组 |
| 15 | function handle | 指向函数的指针 |
| 16 | user classes | 从用户定义的类构造的对象 |
| 17 | java classes | 从 java 类构造的对象 |
使用以下代码创建脚本文件
str = 'hello world!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
上面的代码编译执行后,会产生如下结果
str = hello world!
n = 2345
d = 2345
un = 790
rn = 5678.9
c = 5679
matlab 提供了各种用于将值从一种数据类型转换为另一种数据类型的函数。 下表为数据类型转换函数
| 函数 | 用途 |
|---|---|
| char | 转换为字符数组(string) |
| int2str | 将整数数据转换为字符串 |
| mat2str | 将矩阵转换为字符串 |
| num2str | 将数字转换为字符串 |
| str2double | 将字符串转换为双精度值 |
| str2num | 将字符串转换为数字 |
| native2unicode | 将数字字节转换为 unicode 字符 |
| unicode2native | 将 unicode 字符转换为数字字节 |
| base2dec | 将以 n 为底的数字字符串转换为十进制数 |
| bin2dec | 将二进制数字符串转换为十进制数 |
| dec2base | 将字符串中的十进制数转换为以 n 为底的数字 |
| dec2bin | 将字符串中的十进制数转换为二进制数 |
| dec2hex | 将字符串中的十进制数转换为十六进制数 |
| hex2dec | 将十六进制数字符串转换为十进制数 |
| hex2num | 将十六进制数字符串转换为双精度数 |
| num2hex | 将单打和双打转换为 ieee 十六进制字符串 |
| cell2mat | 将元胞数组转换为数值数组 |
| cell2struct | 将元胞数组转换为结构体数组 |
| cellstr | 从字符数组创建字符串元胞数组 |
| mat2cell | 将数组转换为具有可能不同大小的单元格的单元格数组 |
| num2cell | 将数组转换为单元格大小一致的单元格数组 |
| struct2cell | 将结构体转换为元胞数组 |
matlab 提供了多种函数来识别变量的数据类型。
下表提供了用于确定变量数据类型的函数
| 函数 | 用途 |
|---|---|
| is | 检测状态 |
| isa | 判断输入是否为指定类的对象 |
| iscell | 判断输入是否为元胞数组 |
| iscellstr | 确定输入是否为字符串元胞数组 |
| ischar | 判断item是否为字符数组 |
| isfield | 判断输入是否为结构体数组字段 |
| isfloat | 确定输入是否为浮点数组 |
| ishghandle | 对于 handle graphics 对象句柄为 true |
| isinteger | 判断输入是否为整型数组 |
| isjava | 确定输入是否为 java 对象 |
| islogical | 判断输入是否为逻辑数组 |
| isnumeric | 确定输入是否为数值数组 |
| isobject | 确定输入是否为 matlab 对象 |
| isreal | 检查输入是否为实数组 |
| isscalar | 判断输入是否为标量 |
| isstr | 判断输入是否为字符数组 |
| isstruct | 判断输入是否为结构体数组 |
| isvector | 判断输入是否为向量 |
| class | 确定对象的类别 |
| validateattributes | 检查数组的有效性 |
| whos | 列出工作区中的变量,包括大小和类型 |
使用以下代码创建脚本文件
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = 'hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
当我们运行该文件时,它会产生以下结果
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
1 2 3
ans = 0
ans = 1
ans = 1
ans = 0
x = hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0