Matlab扫盲小短篇19:多类型数据混合连接和运算的结果类型
众所周知,Matlab有很多数据类型,包括浮点型、整型、字符型、逻辑型等;现在的问题是,Matlab多类型进行运算和连接后,结果是什么类型呢?下面具体说明。
1.混合连接的结果类型列表
这里所讲的连接,是指矩阵连接,是矩阵或者数组添加元素的常用方式,总体上,除逻辑型外,连接后的类型遵循向下转换的原则;逻辑型除了与自身连接是逻辑型,与其他连接转换成其他型,混合连接类型列表如下:

2.双精度、单精度浮点型与整型、字符型、逻辑型的数组连接
程序示例
>> [100 single(100)]
>> [100 single(100) int8(100)]
>> [100 single(100) int8(100) 'd']
>> [100 true] %双精度与逻辑型连接
3.整型数据内部连接
程序示例
>> [int8(100) int16(100)]
>> [int16(100) int8(100)] %遵循最左侧整型类型的原则
>> [int8(-100) uint8(100)]
>> [uint8(100) int8(-100)] %右边由有符号变为无符号,仅取到最小值0
4.多类型混合连接
程序示例
>> [true pi int32(10) single(1.23) uint8(345)] %pi为双精度,int32为整型,混合连接遵循最左侧整型数据类型原则,后面超出int32的数据会相应变化
>> [true pi single(1.23) uint8(345)] %结果取uint8
5.多个类型数据混合运算后的结果数据类型
总体上,除逻辑型和字符型,混合运算类型遵循向下转换的原则,逻辑型除了与自身运算是逻辑型,与其他运算转换成其他型,混合运算类型列表如下:

6.单精度、双精度浮点型和整型数据混合运算
>> 10+single(10) %双+单=单
>> 10+int8(10) %双+整=整
>> %[10 10]+int8(10) %双精度数组无法与整型相加,报错
7.双精度浮点型和字符型、逻辑型混合运算
>> 10+'d' %双精度+字符型=双精度
>> 'd'+'d' %字符型+字符型,先转换为双精度再运算
>> [10,'d'] %复习上节,连接:[双精度 字符型] =字符型
>> 10+true %双精度+logical=双精度
8.整型数据内部运算
>> int8(10)+int16(10) %不同类型整型无法相加运算
>> [int8(10),int16(10)].*[int8(10),int8(10)] %整型数组乘法
>> % [int8(10),int16(10)]*[int8(10);int8(10)] %矩阵乘法,前面列数等于后面行数,报错:矩阵乘法不完全支持整数类,仅支持参数之一为标量的情况
相关推荐







End