为什么类型转换会增加矩阵的行/列大小?

Ank*_*lon 1 matlab matrix typecast-operator

当我编写这段代码时(仅用于测试.这件事也会出现其他类型的代码):

y_quan=typecast(y_quan,'int8');
Run Code Online (Sandbox Code Playgroud)

y_quan的维度发生了巨大变化.在进行类型转换之前,它是双类型1X15310矩阵.但是在这个类型转换操作之后它变成了int8型1X122480矩阵.为什么会这样?有人请解释一下.我怎么能阻止这个?

Mar*_*ler 5

我怎么能阻止这个?

不要使用typecast,这显然是错误的功能.

这是你明确要求的行为.从Matlab文档中,这是人们在研究功能时应该看到的显而易见的地方:

typecast与MATLAB® cast功能的不同之处在于它不会改变输入数据.typecast始终在输出Y中返回与输入X中相同的字节数.例如,使用类型转换将16位整数1000转换为uint8将返回两个8位段(3和232)中的完整16位,从而保持它的原始值(3*256 + 232 = 1000).另一方面,强制转换函数将输入值截断为255.

这意味着您的double矩阵每个元素有64位,具有15310*8字节存储空间.现在,将其转换为8位(== 1Byte)值,结果是8倍的元素.