Loading

2.1 MATLAB的数据类型

2.1 MATLAB的数据类型

  • 每种数据类型都是以矩阵的形式存在的
  • 数据类型:数值型、字符型、元胞型、结构体、函数句柄
  • 数值型包含:双精度类型、单精度类型、整型
  • 支持不同数据的转换

2.1.1 变量与常量

1.变量

  • 无须事先声明
  • 无须指定变量类型,MATLAB会自动根据变量的赋值与相关操作来确定变量的类型
  • 命名规则:
    • 区分大小写
    • 必须字母开头,可以包含字母、数字、下划线
    • 变量名长度不超过63个

2.常量

常量 说明
pi 圆周率
Inf 无穷大
NaN 不定值(0/0)
eps 浮点运算的相对精度
realmax 最大的正实数
realmin 最小的正实数
ans 默认变量名
i,j 虚数单位,定义为√-1
  • 定义变量名避免与常量名相同

 2.1.2 数值型数据

1.MATLAB的数值精度

MATLAB的数值精度为2-1074,任何绝对值小于2-1074的实数都视为0

2.MATLAB的显示精度

显示精度:MATLAB所能显示的有效位数;默认下,整型则以整型显示,实数 以保留小数点后4位的浮点数显示

显示格式控制;format,digits,vpa

eps 
ans = 2.2204e-16

eps 
format short
ans =2.220446049250313e-16

eps
format long
ans =2.2204e-16

eps
format rat
ans =2.2204e-16
 eps
digits(10)
ans = 1/4503599627370496

vpa(pi)
ans =3.141592654
 
vpa(pi,20) 
ans =3.1415926535897932385
View Code

 

2.1.3 字符型数据

syms a  b %创建符号变量

字符串可以进行加减乘除

 

2.1.4 元胞数组

 元胞数组的基本组成单元是元胞,元胞可以存放任意类型、任意大小的数组,同一元胞数组中个元胞的内容可以不同

 元胞数组可以通过赋值语句直接定义(使用{}括号),也可以由cell函数预先分配存储空间再对元胞元素逐个赋值(节约内存占用,提高执行效率)

元胞的创建例如:

a = {[1,2,3],ones(3),'matlab'}
a =    {1×3 double}    {3×3 double}    {'matlab'}

b = cell(1,3);
b{1,1} = [1,2,3];
b{1,2} = ones(3);
b{1,3} = 'matlab';
b = {1×3 double}    {3×3 double}    {'matlab'}

 

 2.1.5 结构体

也可以存放不同类型的数据类型

和元胞的差异:元胞通过值传递,结构体通过指针传递

定义:直接赋值,或通过struct函数定义

clc,clear,close all;
A.b1 = [1,2,3];
A.b2 = ones(2);
A.b3 = 'matlab';

B = struct('b1',1,'b2',ones(2),'b3',',matlab');

>> A

A = 

  包含以下字段的 struct:

    b1: [1 2 3]
    b2: [2×2 double]
    b3: 'matlab'

>> B

B = 

  包含以下字段的 struct:

    b1: 1
    b2: [2×2 double]
    b3: ',matlab'
View Code

 

2.1.6 函数句柄

用于间接调用一个函数的MATLAB的值或者数据类型

提高函数调用的速度,扩大子函数和私用函数的可调用范围,并迅速获得同名重载函数的位置、类型信息

创建:通过命令fhandle = @ functionname 来创建,如:trig_f = @ sin 或者 sqr = @ (x)x.^2

使用:fhandle(arg1, arg2, ...argn) 或者 fhandle()(无参数)

clc, clear, close all;
sin_f = @sin
a = sin_f(pi);

myadd = @(x,y) x+y^2;
b1 = myadd(1,2);


a =

       1/8165619676597685

b1 =

        5
View Code

 

2.1.7 数据类型间转换

 

 对于图像而言,一般读入为uint8 型数据,需要转换为double类型

im1 = im2double(img)

 

 注意理解一下代码:

clc,clear,close all;
a = '2';
b = double(a);
b1 = str2num(a);
c = 2*a;
d = 2*b;
e = 2*b1;

a = 2 
b = 50
b1 = 2
c = 100
d = 100
e = 4
View Code

 

posted @ 2019-07-29 11:37  ZHGQCN  阅读(593)  评论(0编辑  收藏  举报