Matlab中数值类型(三)

news/2025/1/3 4:15:26/

目录

创建复数

无穷大和 NaN

无穷大

NaN

确定数值类

数值的显示格式

合并不同的整数类型

合并不同大小的整数的示例

合并有符号与无符号整数的示例

合并整数与非整数数据

空矩阵


创建复数

        复数由两个单独的部分组成:实部和虚部。基本虚数单位等于 -1 的平方根。这在 MATLAB® 中通过以下两个字母之一表示:i 或 j。以下语句显示了一种在 MATLAB 中创建复数值的方法。变量x被赋予了一个复数值,该复数的实部为 2,虚部为 3:

x = 2 + 3i;

        创建复数的另一种方法是使用complex函数。此函数将两个数值输入组合成一个复数输出,并使第一个输入成为实部,使第二个输入成为虚部:

x = rand(3) * 5;
y = rand(3) * -8;z = complex(x, y)
z =4.7842 -1.0921i   0.8648 -1.5931i   1.2616 -2.2753i2.6130 -0.0941i   4.8987 -2.3898i   4.3787 -3.7538i4.4007 -7.1512i   1.3572 -5.2915i   3.6865 -0.5182i

        也使用real 和 imag 函数分解复数,捕获其实部和虚部:

无穷大和 NaN

无穷大

         MATLAB® 用特殊值 inf 表示无穷大。除以零和溢出等运算会生成无穷大,从而导致结果因太大而无法表示为传统的浮点值。MATLAB 还提供了一个称为 inf的函数,该函数以 double 标量值形式返回正无穷大的 IEEE® 算术表示。下面显示了在 MATLAB 中返回正无穷大或负无穷大的多个语句示例。

x = 1/0
x =
Inf

x = 1.e1000
x =
   Inf

x = exp(1000)
x =
   Inf

x = log(0)
x =
   -Inf

        使用 isinf函数验证 x 是否为正无穷大或负无穷大:

x = log(0);isinf(x)
ans =1

NaN

        MATLAB 使用一个称为 NaN(代表“非数值”)的特殊值来表示不是实数或复数的值。

        0/0 和 inf/inf 之类的表达式会生成 NaN,就像执行涉及 NaN 的任何算术运算一样:

x = 0/0x =NaN

        可以通过以下方式创建 NaN

x = NaN;whos xName      Size                   Bytes  Classx         1x1                        8  double

        NaN函数将 NaN 的一个 IEEE 算术表示形式作为 double 标量值返回。此 NaN 值的按位十六进制精确表示形式为:

format hex
x = NaNx =fff8000000000000

        始终使用 isnan函数来校验数组中的元素是否为 NaN

isnan(x)
ans =1

        MATLAB 保留其他NaN表示形式的“非数值”状态,并同等对待NaN的所有不同表示形式。但是,在某些特殊情形中(可能由于硬件限制),MATLAB 在整个计算过程中不保留其他 NaN 表示形式的精确位模式,而是使用上文定义的标准 NaN 位模式。对 NaN 执行逻辑运算。由于两个 NaN 彼此不相等,因此与 NaN 相关的逻辑运算始终返回 false,但测试是否不相等 (NaN ~= NaN) 除外:

NaN > NaN
ans =0NaN ~= NaN 
ans =1

确定数值类

        可以使用以下任意命令检查变量 x 的数据类型。

命令

运算

whos x

显示 x 的数据类型。

xType = class(x);

将 x 的数据类型赋予变量。

isnumeric(x)

确定 x 是否为数值类型。

isa(x, 'integer')
isa(x, 'uint64')
isa(x, 'float')
isa(x, 'double')
isa(x, 'single')

确定 x 是否为指定的数值类型。(此处显示了任意整数、无符号的 64 位整数、任意浮点数、双精度数和单精度数的示例)。

isreal(x)

确定 x 是实数还是复数。

isnan(x)

确定 x 是否不是数值 (NaN)。

isinf(x)

确定 x 是否为无限值。

isfinite(x)

确定 x 是否为有限值。

数值的显示格式

        默认情况下,MATLAB® 使用5位短格式显示数值。例如,

x = 4/3
x =1.3333

        可以使用 format函数更改在命令行窗口或编辑器中的显示。

format long
xx =1.333333333333333

        format函数仅设置当前 MATLAB 会话中的格式。要设置后续会话中的格式,请在环境部分的主页选项卡上,点击  预设。选择 MATLAB > 命令行窗口,然后选择数值格式选项。

        下表总结了数值输出格式选项。

Style

结果

示例

short (default)

短固定十进制小数点格式,小数点后包含 4 位数。

3.1416

long

长固定十进制小数点格式,double 值的小数点后包含 15 位数,single 值的小数点后包含 7 位数。

3.141592653589793

shortE

短科学记数法,小数点后包含 4 位数。

3.1416e+00

longE

长科学记数法,double 值的小数点后包含 15 位数,single 值的小数点后包含 7 位数。

3.141592653589793e+00

shortG

短固定十进制小数点格式或科学记数法(取更紧凑的一个),总共 5 位。

3.1416

longG

长固定十进制小数点格式或科学记数法(取更紧凑的一个),对于 double 值,总共 15 位;对于 single 值,总共 7 位。

3.14159265358979

shortEng

短工程记数法,小数点后包含 4 位数,指数为 3 的倍数。

3.1416e+000

longEng

长工程记数法,包含 15 位有效位数,指数为 3 的倍数。

3.14159265358979e+000

+

正/负格式,对正、负和零元素分别显示 +- 和空白字符。

+

bank

货币格式,小数点后包含 2 位数。

3.14

hex

二进制双精度数字的十六进制表示形式。

400921fb54442d18

rat

小整数的比率。

355/113

        显示格式只影响数值的显示方式,不影响它们在 MATLAB 中的存储方式。

合并不同的整数类型

        如果在矩阵中合并不同的整数类型(例如有符号与无符号,或 8 位整数与 16 位整数),MATLAB® 将返回所有元素都属于一个公共类型的矩阵。MATLAB 将生成矩阵的所有元素设置为输入矩阵中的最左侧元素的数据类型。例如,以下串联生成由 3 个 16 位有符号整数组成的向量:

A = [int16(450) uint8(250) int32(1000000)]

合并不同大小的整数的示例

        禁用如上所示的整数串联警告后,一次串联下面的两个数字,然后转换它们的顺序。返回值取决于整数的串联顺序。最左侧的类型决定着向量中的所有元素的数据类型:

A = [int16(5000) int8(50)]
A =5000   50B = [int8(50) int16(5000)]
B =50   127

        第一个操作返回由 16 位整数组成的向量。第二个操作返回由 8 位整数组成的向量。元素 int16(5000) 设置为 127,即 8 位有符号整数的最大值。

        相同规则也适用于垂直串联:

C = [int8(50); int16(5000)]
C =50127

        注:可以使用intmax和intmin函数查找任何 MATLAB 整数类型的最大值或最小值。对于浮点类型,请使用 realmax和 realmin。

合并有符号与无符号整数的示例

        现在使用有符号与无符号整数做相同的练习。同样,最左侧的元素决定着生成矩阵中的所有元素的数据类型:

A = [int8(-100) uint8(100)]
A =-100   100B = [uint8(100) int8(-100)]
B =100   0

        元素 int8(-100) 设为零,因为它不再有符号。MATLAB 在将每个元素串联为一个合并数组之前计算每个元素。换句话说,在合并两个元素前,以下语句的计算结果为一个 8 位有符号整数(等于 50)和一个 8 位无符号整数(无符号的 -50 设为零)。按照该串联,第二个元素保留其零值,但采用无符号 int8 类型:

A = [int8(50), uint8(-50)]
A =50    0

合并整数与非整数数据

        合并 doublesingle 或 logical 类的整数,将为生成矩阵的所有元素提供最左侧整数的数据类型。例如,以下向量的所有元素设置为 int32

A = [true pi int32(1000000) single(17.32) uint8(250)]

空矩阵

        使用空矩阵元素构造矩阵,生成矩阵中会忽略空矩阵:

A = [5.36; 7.01; []; 9.44]A =5.36007.01009.4400


http://www.ppmy.cn/news/335587.html

相关文章

B-plus开发像高级驾驶员辅助系统 技术详解

[TOC]B-plus开发像高级驾驶员辅助系统(B-plus开发像高级驾驶员辅助系统) B-plus是汽车行业的一个既定的和公认的合作伙伴。凭借强大的专注于未来技术,B-plus开发像高级驾驶员辅助系统(ADAS),安全控制单元,路侧环境和室…

oracle11g dbf恢复数据库,dbf文件如何恢复数据库

数据文件丢失如何恢复 摘要: 数据文件丢失如何恢复,内容来自以下讨论:http://www.itpub.net/348275.html数据库归档模式,新建表空间testtbs, 数据文件testtbs.dbf关闭数据库删除数据文件testtbs.dbf启动数据库提示:ORA…

Linux开发环境搭建

在VMware中安装CentOS7 进入CentOS下载官网,找到64位的CentOS7版本。 点进来后,发现它给我们列出了所在区域可用镜像源(可以说是非常的良心的),我们随便选择一个,这里以阿里云的为例: 选择标准的…

ESP8266_Linux环境搭建

工具链设置 适用于 Linux 的 ESP8266 工具链可从 Espressif 网站下载: 对于 64 位 Linux: https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz 对于 32 位 Linux: https://dl.espressif.com/dl/xten…

ESP32开发二_LED闪烁灯

LED闪烁灯 交流QQ: 1048272975 QQ交流群: 636564526 控制LED灯的亮灭是MCU开发中一个最简单的应用功能,实现这个应用功能包含了MCU开发中工程的构建、编译的过程、下载烧录的方式、开机运行的流程等等内容。 1. 开发工具链 针对ESP32开发&#xff0…

g4600黑苹果efi_【玩机教程】最全黑苹果安装教程 之 小白也能掌握(完结篇)

感谢您关注“執念渗透”公众号,如您尚未关注,请点击上方蓝字关注我们,获取更多知识方法更新,与您不见不散大家好我是執念昨天我已经介绍了安装黑苹果的部分介绍与教程,那么今天我们就来说一下咱们第二部分安装的教程 “mac OS 安装的具体教程与所需工具”。需要看昨天所讲…

搭建PhoneGap的开发环境

搭建PhoneGap的开发环境 由 王宇 原创并发布 : 一 Cordova介绍 Cordova是一个开源的移动开发框架。它允许你使用标准WEB技术跨平台开发,例如HTML5, CSS3 和JavaScript。回避每种移动平台自己的开发语言。在每个平台上,应用执行被封装的目标程…

【Solidity】本地安装Solidity并运行开发环境

本地环境 xiaoyu@LIXIAOYUdeMBP.com➤ npm -v 5.3.0 ❖ ~ [17:45:03] xiaoyu@LIXIAOYUdeMBP.com➤ node -v v8.4.0安装 我们选择最简单的npm安装的方式,在这里加上-g进行全局安装。 xiaoyu@LIXIAOYUdeMBP.com➤ npm install -g solc npm ERR! code EINTEGRITY npm ERR! sha…