cast
将变量转换为不同的数据类型
说明
示例
将 int8 值转换为 uint8。
定义一个由 8 位整数组成的向量。
a = int8([-5 5]);
将 a 转换为无符号 8 位整数。超出 uint8 范围的值 –5 被截断为 0。
b = cast(a,"uint8")b = 1×2 uint8 row vector
0 5
创建一个由 32 位有符号整数组成的 1×3 向量。
A = int32([-12 34 56])
A = 1×3 int32 row vector
-12 34 56
创建数据类型为 double 的复数。
p = 1+2i
p = 1.0000 + 2.0000i
将 A 转换为与变量 p 相同的数据类型和复/实性。
B = cast(A,like=p)
B = 1×3 complex
-12.0000 + 0.0000i 34.0000 + 0.0000i 56.0000 + 0.0000i
创建一个由零组成的 2×3 矩阵,其元素是 32 位无符号整数。
A = zeros(2,3,"uint32")A = 2×3 uint32 matrix
0 0 0
0 0 0
创建数据类型为 double 的 2×2 稀疏矩阵。
p = sparse(2,2,pi)
p = 2×2 sparse double matrix (1 nonzero)
(2,2) 3.1416
将 A 转换为与变量 p 相同的数据类型和稀疏性。
B = cast(A,like=p)
B = 2×3 sparse double matrix
All zero
输入参数
输入数组,指定为标量、向量、矩阵或多维数组。A 的数据类型可以是内置数据类型,也可以是支持转换为指定的新数据类型的其他数据类型。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
复数支持: 是
新数据类型,指定为 "single"、"double"、"int8"、"int16"、"int32"、"int64"、"uint8"、"uint16"、"uint32"、"uint64"、"logical" 或 "char"。
原型,指定为标量、向量、矩阵或多维数组。p 的数据类型可以是内置数据类型,或是支持从输入数据类型转换的其他兼容数据类型。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
复数支持: 是
输出参量
输出数组,以标量、向量、矩阵或多维数组形式返回。
扩展功能
用法说明和限制:
枚举输入在编译时必须具有标量值。不支持枚举数组。
用法说明和限制:
枚举输入在编译时必须具有标量值。不支持枚举数组。
cast 函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
cast 函数支持 GPU 数组输入,但有以下用法说明和限制:
对于语法
B = cast(A,like=p),当且仅当p是gpuArray时,输出B才是gpuArray。
有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
cast 函数支持分布式数组输入,但有以下用法说明和限制:
对于语法
B = cast(A,like=p),当且仅当p是分布式数组时,输出B才是分布式数组。
有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出当转换复数输入时,cast(A,newtype) 语法会保留复实性,即使转换后的结果的虚部为零也是如此。
例如,假设有类型为 double 的复数。将此数转换为 single 类型。输出是虚部为零且类型为 single 的复数。
a = complex(1,1e-48);
b = cast(a,"single")b = single 1.0000 + 0.0000i
whos
Name Size Bytes Class Attributes a 1x1 16 double complex b 1x1 8 single complex
0。tf = isreal(b)
tf = logical 0
对于比较,在以前的版本中,转换相同的数会返回类型为 single 的实数。
a = complex(1,1e-48);
b = cast(a,"single")b =
single
1whos
Name Size Bytes Class Attributes a 1x1 16 double complex b 1x1 4 single
1。tf = isreal(b)
tf = logical 1
从 R2022a 开始,当 p 的数据类型是 MATLAB® 数值类型的子类时,语法 cast(A,like=p) 返回与原型 p 一致的输出。
例如,以下代码现在返回与 p 具有相同数据类型的输出:
p = matlab.lang.OnOffSwitchState.on; x = cast(1,like=p)
x =
OnOffSwitchState enumeration
onlogical 的 x = 1。从 R2021b 开始,语法 cast(A,newtype) 的 newtype 输入参量区分大小写。您必须将 newtype 指定为表示新数据类型的字符向量或小写字母字符串。
例如,要将 double 值转换为 int8 数据类型,必须使用 cast(1.234,"int8")。命令 cast(1.234,"Int8") 现在会出错。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)