文本和数值数据类型的有效组合
只要矩阵中的所有元素属于同一类型,矩阵和数组可以由几乎所有 MATLAB® 数据类型的元素组成。如果您在构造矩阵时纳入了不同类的元素,MATLAB 会转换一些元素,以使生成的矩阵中包含的所有元素都为同一类型。
数据类型转换与预设的类优先级相关。下表显示了您可以进行异类串联而不出错的 6 个类。表中的一个例外是无法将逻辑值转换为 char 数据类型。
类型 | 字符串 | 字符 | 整数 | 单精度值 | 双精度值 | 逻辑值 |
|---|---|---|---|---|---|---|
字符串 | 字符串 | 字符串 | 字符串 | 字符串 | 字符串 | 字符串 |
字符 | 字符串 | 字符 | 字符 | 字符 | 字符 | 无效 |
整数 | 字符串 | 字符 | 整数 | 整数 | 整数 | 整数 |
单精度值 | 字符串 | 字符 | 整数 | 单精度值 | 单精度值 | 单精度值 |
双精度值 | 字符串 | 字符 | 整数 | 单精度值 | 双精度值 | 双精度值 |
逻辑值 | 字符串 | 无效 | 整数 | 单精度值 | 双精度值 | 逻辑值 |
例如,串联 double 和 single 矩阵始终都会生成 single 类型的矩阵。MATLAB 将 double 元素转换为 single 以完成该过程。
x = single(1); y = double(2); z = [x y]
z =
1×2 single row vector
1 2将其他数据类型与字符串串联会将这些其他数据类型转换为字符串,并将它们作为新元素添加到一个字符串数组中。
s = "Hello"; c = 'world'; x = [1 2 3]; newstr = [s c x]
newstr =
1×5 string array
"Hello" "world" "1" "2" "3"您可以使用 + 运算符将其他数据类型作为文本追加到字符串。当标量以这种方式与数组组合时,文本会追加到每个元素。
s = "Hello"; c = 'world'; x = [1 2 3]; newstr = s + c + x
newstr =
1×3 string array
"Helloworld1" "Helloworld2" "Helloworld3"