当前位置: 首页 > article >正文

MATLAB中typecast函数用法

目录

语法

说明

示例

将整数转换为相同存储大小的无符号整数

将 8 位整数转换为单精度

将 32 位整数转换为 8 位整数

将 8 位整数转换为 16 位整数

提示


        typecast函数的功能是在不更改基础数据的情况下转换数据类型。

语法

Y = typecast(X,type)

说明

        Y = typecast(X,type) 将 X 的位模式转换为 type 指定的数据类型,而不更改基础数据。X 必须为由非复数数值组成的满标量或满向量。

示例

将整数转换为相同存储大小的无符号整数

        将整数转换为相同存储大小的无符号整数。

X = int16(-1)
X = int16
    -1
Y = typecast(X,'uint16')
Y = uint16
    65535

        以十六进制表示形式显示位模式。使用 typecast 转换数据类型不会更改基础数据。

format hex
X
X = int16
   ffff

Y = typecast(X,'uint16')
Y = uint16
   ffff

将 8 位整数转换为单精度

定义一个由 8 位整数组成的 1×4 向量。

X = int8([77 60 43 26])
X = 1x4 int8 row vector

   77   60   43   26

        将使用 4 个字节(32 位)存储的四个 8 位整数转换为也使用 4 字节存储的单精度数。

Y = typecast(X,'single')
Y = single
    3.5411e-23

        以十六进制表示形式显示位模式。在十六进制记数法中,1 个字节(8 位)用两位数表示。typecast 函数在不修改数据的情况下重新排列位模式。

format hex
X
X = 1x4 int8 row vector

   77   60   43   26

Y = typecast(X,'single')
Y = single
   1a2b3c4d

将 32 位整数转换为 8 位整数

        创建一个由 32 位无符号整数组成的 1×3 向量。

X = uint32([1 255 256])
X = 1x3 uint32 row vector

     1   255   256

        使用 typecast 将 X 转换为 8 位无符号整数。每个 32 位值划分为四个 8 位段。在 little-endian 系统上运行此代码会生成以下结果。

Y = typecast(X,'uint8')
Y = 1x12 uint8 row vector

     1     0     0     0   255     0     0     0     0     1     0     0

        X 的第三个元素 256 超过了 8 个位可以容纳的最大值。因此,Y(9) 中的转换值溢出到 Y(10)。

Y(9:12)
ans = 1x4 uint8 row vector

   0   1   0   0

        可以将 Y 转换回 32 位无符号整数,而无需更改基础数据。

X2 = typecast(Y,'uint32')
X2 = 1x3 uint32 row vector

     1   255   256

        比较 typecast 和 cast 的输出,了解两个函数的不同之处。

Z = cast(X,'uint8')
Z = 1x3 uint8 row vector

     1   255   255

X2 = cast(Z,'uint32')
X2 = 1x3 uint32 row vector

     1   255   255

将 8 位整数转换为 16 位整数

        将整数从较小的数据类型 (uint8) 转换为较大的数据类型 (uint16)。使用十六进制表示来显示位模式的重新排列。typecast 函数以 little-endian 样式返回输出,从而将输入数据的四个 8 位段组合起来以生成两个 16 位段。

format hex
X = uint8([44 55 66 77])
X = 1x4 uint8 row vector

   44   55   66   77

Y = typecast(X,'uint16')
Y = 1x2 uint16 row vector

   14124   19778

        可以使用 swapbytes 函数将 little-endian 输出转换为 big-endian 输出(或相反)。

Y = swapbytes(typecast(X,'uint16'))
Y = 1x2 uint16 row vector

   11319   16973

提示

  • ​typecast 与 MATLAB cast 函数的区别在于,它不会更改输入数据。typecast 在输出 Y 中返回的字节数始终与输入 X 中的字节数相同。例如,使用 typecast 将 16 位整数 1000 转换为 uint8 会以两个 8 位段(3 和 232)的形式返回完整的 16 位,从而保持原始值 (3*256 + 232 = 1000)。而 cast 函数将此输入值截断为 255。

  • ​typecast 输出的格式可能因您使用的系统而异。某些计算机系统从数据的最低有效字节开始存储数据(称为 little-endian 排序),而其他计算机系统从最高有效字节开始存储数据(称为 big-endian 排序)。您可以使用 swapbytes 函数将字节顺序从 little-endian 反转为 big-endian(或相反)。


http://www.kler.cn/news/315208.html

相关文章:

  • 【JVM】概述
  • Mac导入iPhone的照片怎么删除?快速方法讲解
  • 《中国数据库前世今生》纪录片观感:从古至今数据库的演变与未来
  • 蓝桥杯【物联网】零基础到国奖之路:八. RTC
  • ubuntu使用Vscode进行实现UDP编程
  • 深入解析ElasticSearch从基础概念到性能优化指南
  • SQL 语法学习指南
  • 如何制作ubuntu启动U盘
  • macos tcl-tk python图形库软件包安装 port 和brew 包管理工具安装方法和使用总结
  • 单核1.5 TFLOPS、ASIL-B功能安全!Imagination发布汽车GPU IP产品Imagination DXS GPU
  • 如何写一个自动化Linux脚本去进行等保测试--引言
  • 梧桐数据库(WuTongDB):Vectorized Query Optimizers 简介
  • 【C高级】有关shell脚本的一些练习
  • Vue Router 编程式导航全攻略:深入掌握 push, replace, go, back, forward,beforeEach 方法
  • presto操作hive数据的时候如何覆盖写数据
  • Arthas sysenv(查看JVM的环境变量)
  • Give azure openai an encyclopedia of information
  • IDEA开发HelloWorld程序
  • Docker部署Joplin Server教程
  • 【ArcGISPro】配置模块
  • docker部署Stirling-PDF
  • 计算机网络笔记002
  • 【数据结构-二维差分】力扣2536. 子矩阵元素加 1
  • 插入与冒泡排序(C++)
  • C语言6大常用标准库 -- 4.<math.h>
  • Docker学习笔记(三)存储与卷
  • Vite + Vue + TypeScript 项目搭建总结
  • OpenMV学习第一步安装IDE_2024.09.20
  • 使用API有效率地管理Dynadot域名,为域名进行隐私保护设置
  • (C++23) expected 基础使用