《MATLAB图像处理实例详解》:学习第一天(2022.09.07)

2.2 MATLAB的数据类型

2.2.1 数值类型

        1、整数型  

int8
uint8
int16
uint16
int32
uint32
int64
uint64


 

        2、浮点型

single
double

        3、浮点型的取整

round(x)
fix(x)
floor(x)
ceil(x)

        4、数值类型的转换

int8(x)
uint8(x)
int16(x)
uint16(x)
int32(x)
uint32(x)
int64(x)
uint64(x)
single(x)
double(x)

        5、变量和常量

                (1)不需要提前定义

                (2)注意变量名的命名格式

                (3)MATLAB中有默认常量,程序已经定义好其数值

ans pi
eps i,j
NaN

Inf

2.2.2 字符与字符串

        1、字符和字符串的操作函数

函数 说明 函数 说明
blanks(n) 生成一个由n个空格组成的字符串 str2double(s) 将字符串数组转化为数值数组
cellstr(s) 利用给定的字符数s组创建字符串单元数组 strcat(s1,s2,…) 将多个字符串串联
char(s1,s2,…) 利用给定的字符串或单元数组s1、s2、…创建字符数组 strcmp(s1,s2) 判断字符串是否相等
deblank(s) 删除字符串s尾部的空格 strcmpi(s1,s2) 判断字符串是否相等(忽略大小写)
double(s) 将字符串s转化成ASC码形式 strjust(s1,type) 按照指定的type调整一个字符串数组
findstr(s1,s2) 在长字符串中查找短字符串 strfind(s1,s2) 在是字符串s1中查找s2
int2str(x) 将整数型转换为字符串 strncmp(s1,s2,n) 判断前n个字符串是否相等
iscellstr(A) 判断是不是字符串单元数组 strncmpi(s1,s2,n) 判断前n个字符串是否相等(忽略大小写)
ischar(A) 判断是不是字符串数组 strrep(s1,s2,s3) 将字符串 s1中出现的s2用s3代替
isletter('A') 判断是不是字母 strtok(s1,D) 查找s1中的第一个给定的分隔符之前和之后的字符串
isspace('s') 判断是不是空格 strtrim(s) 删除字符串s开始和结尾的空格
lower(s) 将一个字符串写成小写 strvcat(s1,s2,…) 将多个字符串竖直排列
num2str(x) 将数字转换成字符串 upper(s) 将一个字符串写成大写

        

        2、字符串的基本操作          

                  (1)字符串是一个行向量,可用单引号“ ‘’ ”创建一个字符串

                  (2)计算字符串大小:size( )

                  (3)显示字符串:disp( )

                                例子:

A='GHSDHBHSBC';
disp(A);

                                命令行窗口就会显示:

 

        3、字符串的比较

                (1)比较方法:关系运算符、字符串比较函数

                (2)运用关系运算符进行比较时,比较的两个字符串长度必须相同,对应字符相互比较,关系表达式为真时返回1,关系表达式为假时返回0,返回值组成一个逻辑数组,其大小与字符串大小相同。

                (3)运用字符串比较函数进行比较时,比较的两个字符串长度可以不相同

        4、进制转换

bin2dec( )
dec2bin( ) 二进制和十进制之间进行转换
dec2hex( )
hex2dec( ) 十进制和十六进制之间进行转换
base2dec( ) 任意进制转换成十进制数

2.2.3 逻辑类型

        1、MATLAB用“1”和“0”分别代表“逻辑真”和“逻辑假”,但在运算过程中将所有非0值看作逻辑真,将0看作逻辑假。和一般的数据类型不同,逻辑类型数值只能通过数值类型转换,或者使用特殊的函数生成逻辑数组或矩阵。

        2、相关函数

logical( ) 将任意类型矩阵转换为逻辑矩阵
true(n) 生成n阶逻辑真矩阵
false(n) 生成n阶逻辑假矩阵


2.2.4 函数句柄

        1、相关说明

        (1)函数句柄是一个可调用的MATLAB函数的关联,有了函数句柄这种关联,用户在任何情况下都可以通过函数句柄调用MATLAB函数,即使是超出正常的函数调用范围仍然可以。

        (2)对于一些私有函数,外部函数不能直接调用,定义了函数句柄以后,外部函数可以通过函数句柄调用私有函数。
       

         2、函数句柄主要有以下4个用途:


                (1)可以将一个函数传递给另一个函数。

                (2)可以捕获一个函数的数值供下一次使用。

                (3)可以在正常范围外调用函数。

                (4)可以将函数句柄以.mat文件类型保存,供下一次MATLAB运行时使用。

       

         3、函数句柄的建立

        在函数名前加一个“@”符号就可以建立一个函数句柄,一旦创建一个函数句柄,就可以通过函数句柄调用函数,函数句柄包含函数保存的绝对路,用户可以从任何位置调用该函数。如:

f=@sin

y=f(2*pi)

        4、函数句柄相关操作函数

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

2.2.5 结构类型

        1、相关说明

        (1)结构类型是包含一组彼此相关、数据结构相同但类型不同的数据类型。结构类型的变量可以是任意一种 MATLAB数据类型的变量,也可以是一维的、二维的或者多维的数组。但是,在访问结构类型数据的元素时,需要使用下标配合字段的形式。

        (2)结构体是可以存储不同类型数据的数据结构

        2、结构类型的建立

        (1)可以直接给结构体成员变量赋值建立结构体

        (2)利用函数 struct( ) 建立结构体

                如书上的例子:       《MATLAB图像处理实例详解》:学习第一天(2022.09.07)_第1张图片

         个人理解:stu(1,2) 是查询第一个结构体的第二个数据

        3、结构类型的操作

函数 说明
fieldnames(s) 获取指定结构体所有成员名
getfield(s,'field') 获取指定成员内容
isfield(s,'field') 判断是否是指定结构体中的成员
orderfields(s) 对成员按结构数组重新排序
rmfield(s,'field') 删除指定结构体中的成员
setfield(s,'field', value) 设置结构体成员内容

2.2.6 细胞数组类型

        细胞数组是MATLAB特有的一种数据类型,组成它的元素是细胞,细胞是用来存储不同类型数据的单元,细胞数组中每个细胞存储一种类型的MATLAB数组,此数组中的数据可以是任何一种MATLAB数据类型或用户自定义的类型,其大小也可以是任意的。相同数组的第二个细胞的类型与大小可以和第一个细胞完全不同。【即单元(cell)数组】

        1、细胞数组类型的建立

                (1)直接赋值

                (2)使用 cell( ) 函数创建空细胞数组

        2、细胞数组类型的操作

函数 说明
cell2struct(cellArray, fields, dim) 将细胞数组转换成结构数组
iscell(c) 判断指定数组是否是细胞数组
struct2cell(s) 将结构数组转换成细胞数组
mat2cell(A, m, n) 将矩阵拆分成细胞数组矩阵
cell2mat(c) 将细胞数组合并成矩阵
num2cell(A) 将数值数组转换成细胞数组
celldisp(c) 显示细胞数组内容
cellplot(c) 显示细胞数组结构图


        3、注意

        (1)对于单元数组,C(m,n)指的是单元数组中第m行第n列的单元,C{m,n}指的是单元数组中第m行第n列的单元的内容

2.3 MATLAB的运算符

2.3.1 算术运算符

        MATLAB的算术运算分为矩阵运算和矩阵内元素运算,矩阵内元素运算在矩阵运算符前加 “.”,MATLAB算术运算符要求参与运算的矩阵必须是维数相同,但如果运算对象是标量和矩阵,则是标量和矩阵内每一个元素相运算。

        运算符号前没加 “.” 的都是矩阵运算,满足矩阵运算规则;运算负号前加 “.” 的都是点运算,是矩阵对应元素的运算。
 

运算符 说明 运算符 说明
+ .\ 左除法
- \ 矩阵左除法
.* 乘法 .^ 求幂
* 矩阵乘法 ^ 矩阵求幂
./ 右除法 .' 转置
/ 矩阵右除法 ' 矩阵求秩,复数求共轭

2.3.2 关系运算

        1、关系运算符两侧的矩阵维数必须相同

        2、关系运算是对矩阵内元素运算。如果参与运算的元素使关系运算式为真则返回值为逻辑1,反之返回值为逻辑0。

        3、标量与矩阵进行关系运算时,是将标量与矩阵内每一个元素进行运算。

运算符 说明 函数
< lt(a,b)
<= le(a,b)
> gt(a,b)
>= ge(a,b)
== 恒等于 eq(a,b)
~= 不等于 ne(a,b)

2.3.3 逻辑运算符

        参与矩阵元素逻辑运算的逻辑矩阵必须是维数相同的矩阵,如果逻辑运算符的一侧为标量,则是标量和逻辑矩阵的每一个元素进行逻辑运算。逻辑运算符有:与运算“&”、

        MATLAB中提供两个快速逻辑运算符,快速逻辑与(&&)和快速逻辑或(||),快速运算只在if语句或while语句中应用。在执行if语句或while 语句中的表达式时,如果快速逻辑运算符左侧的操作数可以确定整个逻辑运算式的值,那么逻辑运算符右侧的操作数自动被短路。

运算符 说明 函数
& and(a,b)
| or(a,b)
~ not(a)
xor 异或 xor(a,b)


2.3.4 运算优先级

        运算符的优先级从最高到最低如下:

  1.  括号运算
  2. 转置运算,幂运算,复数共钜转置运算,矩阵幂运算
  3. 正号,负号,逻辑非运算
  4. 点乘法,点除法,矩阵乘法、矩阵除法
  5. 加法,减法
  6. 冒号运算
  7. 小于,小于等于,大于,大于等于,恒等于,不等于
  8. 逻辑与
  9. 逻辑或
  10. 短路逻辑与
  11. 短路逻辑或


 

你可能感兴趣的:(MATLAB图像处理实例详解,matlab)