学习matlab(一)——数据类型与运算符

本章介绍MATLAB的一些基础知识,包括基础数据类型、运算符和特殊的符号等,以及matlab中日期和时间的表示方法、计时函数的应用。

目录

0.数据类型

<0>数值类型

(1)整数

(2)浮点数

(3)复数

<1>逻辑类型

<2>字符和字符串

<3>函数句柄

<4>单元数组

<5>结构体类型

1.数据显示格式

2.运算符

<1>算术运算符

<2>关系运算符

<3>逻辑运算符

<4>运算优先级

3.日期和时间的表示

4.常量与变量


0.数据类型

在MATLAB中一共有15种数据类型,分别是8种整型数据、单精度浮点型、双精度浮点型、逻辑型、字符串型、单元数组、结构体类型和函数句柄,如下表所示:

数据类型 说明
int8、int16、int32、int64 有符号整型
uint8、uint16、uint32、uint64 无符号整型
single 单精度浮点型
double 双精度浮点型
logical 逻辑型
char 字符串型
cell 单元数组型
struct 结构体型
function_handle 函数句柄型

输入如下命令,在工作区打开各个变量观察:

>> a1 = int8(-16);//整型
>> b1 = single(2.5);//浮点型
>> c1 = 'hello';//字符串型
>> d1 = false;//逻辑型
>> e1.name = 'TOM';//结构体型
>> f1{1,1} = 100;//数组型
>> g1 = 12;//双精度浮点型
>> h = @cos;//函数句柄型

由g1可知,matlab输入数据的类型默认都是double类型。输入whos也可以查找到相关的变量信息。

<0>数值类型

在MATLAB中,数值类型分为整数和浮点数,整数分为有符号整数和无符号整数,浮点数分为单精度浮点数和双
精度浮点数。下面介绍整数、浮点数和复数,以及数值的显示格式等。

(1)整数
 

>> a = 24;
>> b1 = int8(a);
>> c = 'hello';
>> b2 = int8(c);

在MATLAB中,还有很多的取整函数,可以采用不同的方法将小数转换为整数。

函数 说明
round 向最接近的整数取整,如果小数为0 5,则取绝对值大的整数
fix 向0取整
floor 不大于该数的最接近整数
ceil 不小于该数的最接近整数

(2)浮点数

在MATLAB中,浮点数包括单精度浮点数(single) 和双精度浮点数(double)。其中双精度浮点数是MATLAB中默认的数据类型。在MATLAB中,双精度浮点采用8个字节,即64位来表示,其中第63位表示符号,0为正,1为负,第52- - 62位表示指数部分,第0-51位表示小数部分。在MATLAB中,单精度浮点数采用4个字节,即32位来表示, 其中第31位为符号位,0为正,1为负,第23- 30位为指数部分,0-22位为小数部分。单精度浮点数比双精度浮点数能够表示的数值范围和数值精度都小。

>> d1=[realmin('single') realmax('single')];
>> d2=[realmin('double') realmax('double')];

通过该命令可以知道某种数据类型的取值范围。

(3)复数

复数是对实数的扩展,包含实部和虛部两部分,虛部的单位是-1的平方根。在MATLAB中,采用i或j表示虛部的单位。可以采用赋值语句直接产生复数,也可以采用函数complex( )来产生复数。

函数 说明
complex(a, b) 创建复数,a为实部,b为虚部
real(z) 得到复数z的实部
imag(z) 得到复数z的虚部
abs(z) 得到复数z的模
angle(z) 得到复数z的角度
conj(z) 得到复数z的共轭复数

<1>逻辑类型

MATLAB中的运算包括数值计算、关系计算和逻辑计算。关系计算和逻辑计算的结果为逻辑类型。逻辑类型数据只有逻辑真和逻辑假。MATLAB中用1代表逻辑真,用函数true表示;用0代表逻辑假,用函数false表示。逻辑真和逻辑假都占用1个字节的存储空间。此外,可以采用函数logical( )将数值型转换为逻辑型,任何非0数值转换为逻辑真(即1);数值0转换为逻辑假(即0)。

<2>字符和字符串

在MATLAB中,字符型数据类型用char表示。字符和字符串不进行区分,将单个字符看成是的字符串,都用单引号(')括起来。字符串中的每个字符占用2个字节的存储空间。

<3>函数句柄

在MATLAB中,通过函数句柄来间接调用函数,函数句柄的数据类型为function_ handle。 函数句柄可以通过符号
@后面跟函数命令来创建,例如程序fhandle=@cos,创建了函数cos( )的函数句柄,以后就可以通过函数句柄fhandle来间接调用函数cos( )。

函数 说明
func2str(fhandle) 将函数句柄转换为字符串
str2func(str) 将字符串转换为函数句柄
functions(fhandle) 返回包含函数信息的结构体变量
isa(a, 'function_handle') 判断是否为函数句柄
isequal(fhandle1, fhandle2) 检测两个函数句柄是否对应同一函数

<4>单元数组

单元数组是一种比较特殊的数据类型,每个元素都以单元的形式存在。在MATLAB中,采用大括号({})建立单元数组,也可以采用函数cell( )来建立单元数组。在获取单元数组的元素时,也采用大括号表示下标。

1.函数cell( )  2.函数celldisp( ) // 修改元胞数组名字 3.函数cellplot( )//显示元胞数组成员的字节及内容  4.函数iscell( )//判断是否为元胞数组,返回值为布尔值 5.函数num2cell( )//将矩阵转化为元胞数组  6.函数cell2struct( )//例如cell2struct(结构体成员内容元胞,结构体成员名称元胞,2);

>> c1 = {'USA','China';[0,1,2,3,4,5],100};
>> c2{2,2} = [];
>> c3 = {1,1};
>> c4{1,1};//错误
>> c = {'USA','China';[0,1,2,3,4,5],100};
>> c{2,2} = [];
>> c{1,1};

单元数组操作如下:

>> c={'中国','China';[1:4;2:5],10};
>> c{2,4}=100;//必须赋值,否则报错
>> c(1,:);
>> c(:,3)=[];
>> d={'北京','Beijing';[],3};
>> e=[c,d];

<5>结构体类型

结构体是按照成员变量名组织起来的不同数据类型数据的集合。结构体类似于C语言的结构体数据。每个成员变量用指针操作符“.”表示,例如A.name表示结构体变量A的name成员变量。在MATLAB中结构体类型常用的函数如表所示:

函数 说明
struct 建立结构体变量
isstruct 是否为结构体
isfield 是否为结构体成员
fleldnames 结构体变量成员的名字
substruct 子结构体
struct2cell 结构体变量转换为单元型变量
orderfields 对结构体变量的成员排序
getfield 得到结构体的成员变量
setfield 设置结构体的成员变量
rmfield 删除结构体的成员变量
cell2struct 单元型变量转换为结构体变量

1.数据显示格式

在MATLAB中,可以采用函数format( )确定数值类型的显示格式。改变数值的显示格式后会一直有效,直到再次利用函数format()进行修改。

format函数格式 说明
format short或format('short') 默认显示,保留小数点后4位
format long或format('long') 有效数字16位
format long e 有效数字16位加3位指数。
format short e 有效数字5位加3位指数
format bank或format('bank') 保留两位小数位
format +或format('+') 只给出正、负
format rational或format (' rational’) 以分数形式表示
format hex或format('hex') 16进制数
format long g 15位有效数
format short g 5位有效数

2.运算符

在MATLAB中,提供了丰富的运算符,主要包括算数运算、关系运算和逻辑运算。算数运算用于数值计算。关系运算和逻辑运算的返回值为逻辑型变量,其中1代表逻辑真,0代表逻辑假。

<1>算术运算符

MATLAB提供的基本算术运算有:加(+)、减(-)、乘(*) 、除(1)和乘方(^)。常用的算数运算符如表所示。对于标量和数组,是以元素为单元进行运算。

标量和数组 矩阵 功能
+ +
- -
.* *
./ / 左除
.\ \ 右除
.^ ^ 乘方
.' ' 转置

<2>关系运算符

关系运算用于比较两个操作数的大小,返回值为逻辑型变量。在MATLAB中,关系运算符如表所示。当2个操作数都是数组或矩阵时,这2个操作数的维数必须相同,否则会显示出错信息。

关系运算符 说明 函数
< 小于 lt
<= 小于等于 le
> 大于 gt
>= 大于等于 ge
== 恒等于 eq
~= 不等于 ne

<3>逻辑运算符

在MATLAB中,有两个快速逻辑运算符,逻辑与(&&)和逻辑或(||),如表所示。&&运算符和&运算符非常相近。&&运算符,在参与运算的第一个操作数为假时,直接返回假,不再计算第二个操作数。||操作符,在参与运算的第一个操作数为真时,直接返回真,不再判断第二个操作数。

运算符 说明
&& 快速逻辑与,当第一个操作数为假时,直接返回假,否则和&相同
|| 快速逻辑或,当第一个操作数为真时,直接返回真,否则和|相同

在MATL AB中,可以对二进制数进行逐位逻辑运算,并将运算的结果转换为十进制数。可以利用函数dec2bin将十进制数转化为二进制数。

函数 函数说明
bitand(A,B) 逐位逻辑与
bitor(A,B) 逐位逻辑或
bitcmp(A,B) 逐位逻辑非
bitxor(A,B) 逐位逻辑异或

<4>运算优先级

在MATLAB中进行算数运算、逻辑运算和关系运算时,不同的运算符有不同的优先级。在进行运算时,按照运算符的优先级,从高到低进行运算。对于相同优先级的运算符,按照从左到右的顺序进行。

3.日期和时间的表示

在MATLAB中,采用函数clock( )获取当前的日期,为一个向量,分别表示年、月、日、时、分和秒;函数date()获得当前的日期;函数now( )返回采用双精度数据表示的当前日期;函数calender( )显示当月的日历;函数weekday( )产生星期几,返回值包括星期的数字和星期的字符串;函数eomday( )返回一个月的最后一天。

在MATLAB中,提供了3种表示日期的格式,分别是双精度日期、字符串以及数值向量。这些日期格式可以互相转换,通过函数datestr( )、函数datevec( )和函数datenum( )。函数datestr()将日期数字和日期向量转化为日期字符串。函数datenum( )将日期字符串和日期向量转化为数字。函数datevec( )将日期数字和日期字符串转化为日期向量。

采用函数tic、toc、 cputime和etime等进行计时。函数tic和函数toc:函数tic启动-一个秒表,函数toc停止这个秒表,并计算出所经历的时间。这两个函数配合使用,可以计算程序或函数的运行时间。函数cputime:该函数返回用秒表示的、从当前的Matlab启动之后所用的CPU时间,单位为秒。函数etime(t1, t0):该函数返回参数和之间的时间,单位为秒。

4.常量与变量

在MATLAB中,有一-些常量已经预先进行了定义,这些常量如表所示。在MATLAB中,用INF 或inf表示无穷大。MATLAB允许的最大数是21024,如果超过这个数,就被认为是无穷大。

常量 说明
ANS或ans 默认变量名,保存最后一次运算的结果
pi 圆周率
INF或inf 无穷大
NaN或nan 不定值0/0
realmax 最大的正实数
realmin 最小的正实数
eps 浮点数的相对误差e
i或j 复数单位,-1 的平方根。
nargin 函数的输入参数个数
nargout 函数的输出参数个数
varargin 可变的输入参数个数
varargout 可变的输出参数个数
beep 使计算机发出“嘟嘟”声
发布了363 篇原创文章 · 获赞 32 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_35789421/article/details/104188774