精华内容
下载资源
问答
  • MATlab--MATLAB数值数据

    2021-02-17 15:02:11
    无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、 无符号64位整数。 带符号整数:带符号8位整数、带符号16位整数、带符号32位整数、 带符号64位整数 无符号8位整数数据范围:00000000-11111111(0~28...

    1.数值数据类型的分类

     整型  浮点型  复数型

    (1)整型

    • 无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、 无符号64位整数。
    • 带符号整数:带符号8位整数、带符号16位整数、带符号32位整数、 带符号64位整数

    无符号8位整数数据范围:00000000-11111111(0~28-1)。
    带符号8位整数数据范围:10000000-01111111(-27~27-1)。

    (2)浮点型

    • single函数:将其他类型的数据转换为单精度型。

    • double函数:将其他类型的数据转换为双精度型。

    >> class(4)
    ans =
    double
    >> class(single(4))
    ans =
    single
    

    (3)复型

    复型数据包括实部和虚部两个部分,实部和虚部默认为双精度型,虚数单位用i或j来表示。

     real函数:求复数的实部
     imag函数:求复数的虚部

    2.数值数据的输出格式
    format命令的格式:format 格式符

    >> format long
    >> 50/3
    ans =
    16.666666666666668
    >> format 
    >> 50/3
    ans =
    16.6667
    

    3.常用数学函数

    (1)函数的调用格式为:函数名(函数自变量的值)

    
    >> A=[4,2;3,6]     矩阵A
    A =
    4 2
    3 6
    >> B=exp(A)
    B =
    54.5982 7.3891
    20.0855 403.4288
    

    函数在运算时是将函数逐项作用于矩阵
    的每个元素上,所以最后运算的结果就
    是一个与自变量同型的矩阵。

    (2)常用函数的应用
    ① 三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。

    >> sin(pi/2)
    ans =
    1
    >> sind(90)
    ans =
    1
    

    ② abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。

    >> abs(-4)
    ans =
    4
    >> abs(3+4i)
    ans =
    5
    >> abs('a')
    ans =
    97
    

    ③用于取整的函数有fix、floor、ceil、round。

    
    >> round(4.7)
    ans =
    5
    >> fix(-3.2)
    ans =
    -3
    >> floor(3.6)
    ans =
    3
    >> ceil(-3.8)
    ans =
    -3
    

    round函数是按照四舍五入的规则来取整。
    ceil是向上取整,取大于等于这个数的第一个整数。
    floor是向下取整,取小于等于这个数的第一个整数。
    fix是固定取靠近0的那个整数,也就是舍去小数取整。

    ④函数应用举例。
     分别求一个三位正整数的个位数字、十位数字和百位数字。

    >> m=345;
    >> m1=rem(m,10)
    m1 =
    5
    >> m2=rem(fix(m/10),10)
    m2 =
    4
    >> m3=fix(m/100)
    m3 =
    3
    

    变量及其操作

     变量与赋值语句  预定义变量  变量的管理

    1.变量与赋值语句
    在MATLAB中,变量名是以字母开头,后接字母、数字或下画线的字符序列,
    最多63个字符

     变量名区分字母的大小写。
     标准函数名以及命令名一般用小写字母。

    赋值语句两种格式:

     变量=表达式
     表达式

    在这里插入图片描述

    
    >> x=sqrt(7)-2i;
    >> y=exp(pi/2);
    >> z=(5+cosd(47))/(1+abs(x-y))
    z =
    1.4395
    

    2.预定义变量
    预定义变量是在MATLAB工作空间中驻留,由系统本身定义的变量。

     ans是默认赋值变量
     i和j代表虚数单位
     pi代表圆周率
     NaN代表非数

    3.变量的管理
    (1)内存变量的删除与修改
    在这里插入图片描述
    who命令与whos命令
    在这里插入图片描述
    (2)内存变量文件

    用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。
     save命令:创建内存变量文件。
     load命令:装入内存变量文件。

    
    >> save mydata a x
    >> load mydata
    

    MATLAB矩阵的表示

     矩阵的建立
     冒号表达式
     结构矩阵和单元矩阵

    1.矩阵的建立

    (1)利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。

    >> A=[1,2,3;4,5,6;7,8,9]
    A =
    1 2 3
    4 5 6
    7 8 9
    

    (2)利用已建好的矩阵建立更大的矩阵:
    一个大矩阵可以由已经建立好的小矩阵拼接而成

    >> A=[1,2,3;4,5,6;7,8,9];
    >> B=[-1,-2,-3;-4,-5,-6;-7,-8,-9];
    >> C=[A,B;B,A]
    C =
    1 2 3 -1 -2 -3
    4 5 6 -4 -5 -6
    7 8 9 -7 -8 -9 -1 -2 -3 1 2 3
    -4 -5 -6 4 5 6
    -7 -8 -9 7 8 9
    

    可以用实部矩阵和虚部矩阵构成复数矩阵

    
    >>B=[1,2,3;4,5,6];
    >>C=[6,7,8;9,10,11];
    >>A=B+i*C A =
    1.0000 + 6.0000i 2.0000 + 7.0000i 3.0000 + 8.0000i
    4.0000 + 9.0000i 5.0000 +10.0000i 6.0000 +11.0000i
    

    2.冒号表达式
    在这里插入图片描述

    省略步长e2,则步长为1。例如, t=0:5与t=0:1:5等价。

    
    >> t=0:1:5
    t =
    0 1 2 3 4 5
    

    在这里插入图片描述

    当n省略时,自动产生100个
    元素。

    >> x=linspace(0,pi,6)
    x =
    0 0.6283 1.2566 1.8850 2.5133 3.1416
    

    3.结构矩阵和单元矩阵

    (1)结构矩阵由结构数据构成的矩阵就是结构矩阵,结构矩阵里的每个元素就是结构数据类型。
    格式为:
    结构矩阵元素.成员名=表达式

    >> a(1).x1=10; a(1).x2='liu'; a(1).x3=[11,21;34,78];
    >> a(2).x1=12; a(2).x2='wang'; a(2).x3=[34,191;27,578];
    >> a(3).x1=14; a(3).x2='cai'; a(3).x3=[13,890;67,231];
    

    (2)单元矩阵
    建立单元矩阵和一般矩阵相似,直接输入就可以了,只是单元矩阵元素用大括号括起来。

    
    > >> b= {10,'liu',[11,21;34,78];12,'wang',[34,191;27,578];...
    14,'cai',[13,890;67,231]}
    b = 
    [10] 'liu' [2x2 double]
    [12] 'wang' [2x2 double]
    [14] 'cai' [2x2 double]
    
    

    矩阵元素的引用

     矩阵元素的引用方式
     利用冒号表达式获得子矩阵
     利用空矩阵删除矩阵的元素
     改变矩阵的形状

    1.矩阵元素的引用方式

    (1) 通过下标来引用矩阵的元素
    A(3,2)表示A矩阵第3行第2列的元素。

    >> A(3,2)=200
    
    
    >> A=[1,2,3;4,5,6];
    >> A(4,5)=10
    A =
    1 2 3 0 0
    4 5 6 0 0
    0 0 0 0 0
    0 0 0 0 10
    

    注意:如果给出的行下标或列下标大于原来矩阵的行数和列数,
    那么MATLAB将自动扩展原来的矩阵,并将扩展后没有赋值的矩阵元素置为0。

    (2)通过序号来引用

     在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
     矩阵元素的序号就是矩阵元素在内存中的排列顺序

    
    >> A=[1,2,3;4,5,6]
    A =
    1 2 3
    4 5 6
    >> A(3)
    ans =2
    

    序号与下标是一一对应的,以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)×m+i

    sub2ind函数:将矩阵中指定元素的行、列下标转换成存储的序号。调用格
    式为:
    在这里插入图片描述
    sub2ind函数举例。
    在命令窗口输入:

    >>  A=[4 7 2 9 8;3 9 1 4 3;1 5 9 6 4;8 3 7 1 0]
    A =
         4     7     2     9     8
         3     9     1     4     3
         1     5     9     6     4
         8     3     7     1     0
    

    则A中每个元素对应的索引如下(MATLAB中数据是按列的方式存储的):
    1 5 9 13 17
    2 6 10 14 18
    3 7 11 15 19
    4 8 12 16 20

    ind=sub2ind(siz,I,J):
    siz表示要转换的矩阵的行列数,
    I是要转换矩阵的行标,
    J是要转换矩阵的列标。
    I,J的行列数必须相同。
    ind为输出参数,其行列数与I,J相同。
    ind即为索引。

    在命令窗口中输入:

    >> ind=sub2ind(size(A),[1,2;3,4],[1,1;2,2])
    

    则显示

    ind =
         1     2
         7     8
    

    从运算结果可以看出,在矩阵A中,下标(1,1)的索引值为1,下标(2,1)的索引值为2,下标(3,2)的索引值为7,下标(4,2)的索引值为8

    2.利用冒号表达式获得子矩阵
    子矩阵是指由矩阵中的一部分元素构成的矩阵。
    2.利用冒号表达式获得子矩阵

    A(i,:) 第i行的全部元素
    A(:,j) 第j列的全部元素
    A(i:i+m,k:k+m) 第i~i+m行内且在第k~k+m列中的所有元素
    A(i:i+m,:) 第i~i+m行的全部元素

    >> A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]
    A =
    1 2 3 4 5
    6 7 8 9 10
    11 12 13 14 15
    >> A(1:2,:) 
    ans =
    1 2 3 4 5
    6 7 8 9 10
    >> A(2:3,1:2:5)
    ans =
    6 8 10
    11 13 15
    

    end运算符:表示某一维的末尾元素下标

    >>A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];
    >>A(end,:)     最后一行end   “:”:所有列
    ans =
    16 17 18 19 20
    >> A([1,4],3:end)    一和四行,第三列到最后一列
    ans =
    3 4 5
    18 19 20
    

    A(end,1:2:end) 的意思是从A中取元素,取得的元素为A的最后一行,从第1列开始每个两个元素取一个
    在这里插入图片描述
    3.利用空矩阵删除矩阵的元素
    空矩阵是指没有任何元素的矩阵。

    >> x=[]
    x =
    []
    

    X是一个空矩阵。

    
    >> A=[1,2,3,0,0;7,0,9,2,6;1,4,-1,1,8]
    A =
    1 2 3 0 0
    7 0 9 2 6
    1 4 -1 1 8
    >> A(:,[2,4])=[]
    A =
    1 3 0
    7 9 6
    1 -1 8
    

    4.改变矩阵的形状
    reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成m×n的二维矩阵。

    注意:reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。

    >> x=[23,45,65,34,65,34,98,45,78,65,43,76]; 
    >> y=reshape(x,3,4) 
    y 
    23 34 98 65
    45 65 45 43
    65 34 78 76
    

    A(: ) :将矩阵A的每一列元素堆叠起来,成为一个列向量。

    >> A =[-45,65,71;27,35,91]
    A =
    -45 65 71
    27 35 91
    >> B=A(:)
    B =
    -45
    27
    65
    35
    71
    91
    

    A(:)等价于reshape(A,6,1)

    MATLAB基本运算

     算术运算
     关系运算
     逻辑运算
    1.算术运算

    (1)基本算术运算

    基本算术运算符:
    +(加)、-(减)、*(乘)、/(右除)、(左除)、
    ^(乘方)。

    • MATLAB的算术运算是在矩阵意义下进行的。
    • 单个数据的算术运算只是矩阵运算的一种特例。

    加减运算

     若两矩阵同型,则运算时两矩阵的相应元素相加减。
     若两矩阵不同型,则MATLAB将给出错误信息。
    一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的 每一个元素进行加减运算

    乘法运算

    •  矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。
    •  如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。

    除法运算
    在MATLAB中,有两种矩阵除法运算:右除/和左除\。
    如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B。

    点运算

     点运算符:.*、./、.\和.^。
     两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。

    >> A=[1,2,3;4,5,6;7,8,9];
    >> B=[-1,0,1;1,-1,0;0,1,1];
    >> C=A.*B
    C =
    -1 0 3
    4 -5 0
    0 8 9
    >> D=A*B
    D =
    1 1 4
    1 1 10
    1 1 16
    

    当x=0.1、0.4、0.7、1时,分别求y=sin x cos x的值。

    
    >> x=0.1:0.3:1;
    >> y=sin(x).*cos(x);
    

    字符串处理

     字符串的表示  字符串的操作

    1.字符串的表示 在MATLAB中,字符串是用单引号括起来的字符序列。

    
    >> xm='Central South University'
    >> xm(1:3)   第一到第三个符号
    ans =
    Cen
    

    若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。

    >> 'I''m a teacher.'
    ans =
    I'm a teacher
    

    建立多行字符串,形成字符串矩阵。

    >> ch=['abcdef';'123456'];
    >> ch(2,3)
    ans = 3
    

    建立一个字符串向量,然后对该向量做如下处理:
    ① 取第1~5个字符组成的子字符串。
    ② 将字符串倒过来重新排列。
    ③ 将字符串中的小写字母变成相应的大写字母,其余字符不变。
    ④ 统计字符串中小写字母的个数

    >> ch='ABc123d4e56Fg9';
    >> subch=ch(1:5) 
    subch =
    ABc12
    >> revch=ch(end:-1:1) 
    revch =
    9gF65e4d321cBA
    >> k=find(ch>='a'&ch<='z') 
    k =
    3 7 9 13
    >> ch(k)=ch(k)-('a'-'A') 
    ch =
    ABC123D4E56FG9
    >> length(k) 
    ans =4
    

    2.字符串的操作
    (1) 字符串的执行
    格式: eval(s)

    >> t=pi;
    >> m='[t,sin(t),cos(t)]';
    >> y=eval(m)
    y =
    3.1416 0.0000 -1.0000
    

    (2)字符串与数值之间的转换
     abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
     char函数可以把ASCII码矩阵转换为字符串矩阵。

    >> s1='MATLAB';
    >> a=abs(s1)
    a =
    77 65 84 76 65 66
    >> char(a+32)
    ans =
    matlab
    

    (3)字符串的比较

    字符串的比较有两种方法:利用关系运算符或字符串比较函数。
     关系运算符比较:两个字符串里的每个字符依次按ASCII值大小逐个进行比较,比较的结果是一个数值向量,向量中的元素要么是1,要么是0。

    >> 'www0'>='W123'
    ans =
    1 1 1 0
    

     字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下:

    •  strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则 返回0。

    •  strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。

    •  strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相
      等,返回1,否则返回0。

    •  strncmpi(s1,s2,n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。

    (4)字符串的查找与替换
     findstr(s1,s2):返回短字符串在长字符串中的开始位置。
     strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符
    串s3。

    >> p=findstr('This is a test!','is')
    p =
    3 6
    >> p=findstr('is','This is a test!')
    p =
    3 6
    >> result=strrep('This is a test!','test','class')
    result =
    This is a class!
    
    展开全文
  • 基本数据类型和数据类型转换 一.基本数据类型 整数类型默认int类型,浮点类型默认double类型。...char类型的是16位无符号整数,与c语言不同,它占据2个字节。布尔的占据1个字节。具体如下图所示:...

    基本数据类型和数据类型转换

    一.基本数据类型

    • 整数类型默认为int类型,浮点类型默认为double类型。
    • 整数类型的byte、short、int和long分别是8位、16位、32位和64位的有符号整数,分别占据1字节、2字节、4字节和8字节。float和double类型分别占据48位和64位。char类型的是16位的无符号整数,与c语言不同,它占据2个字节。布尔型的占据1个字节。具体如下图所示:
    • img

    二.数据类型转换

    • 布尔型和其他基本数据类型之间不能相互转换,既不能进行自动类型的提升,也不能强制类型转换, 否则,将编译出错

    • 自动类型转换:从低位类型到高位类型自动转换;

      • byte/char/short -->int–>long–>float–>double 该顺序为低位到高位排序;
    • 强制类型转换:从高位类型到低位类型需要强制类型转换

      • 目标类型 变量名 = (目标类型)(被转换的数据);举例:以下两个赋值有没有区别?

        float f1 = (float)12.345;

        float f2 = 12.345F;

      • 分析:f1是将一个double类型的值强制转换为float类型,这样会进行截取,而f2本身定义就是一个float类型。第二种是较好的赋值方式。

    • 基本数据类型转换需遵守的规则之一:

      整数直接量可以直接赋值给byte、short、char,但不能超取值范围。

    • 基本数据类型转换需遵守的规则之二:

      byte、char或short类型之间进行算术运算,需要先转换为int类型,再进行运算;另外,char型其本身是unsigned型,同时具有两个字节,其数值范围是0 ~ 2^16-1,因为,这直接导致byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为负数的问题),同时,byte当然可以直接提升到short型。

    • 特殊情况

      (1)如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。所以

      • short s = 1; s +=1; 这个式子是正确的,因为s为short类型的变量,在进行+=运算时,会先将short转为int,和1进行运算,然后将结果转为short类型,赋值给s.
      • short s = 1; s = s + 1; 这个就是错误的,因为运算后得到的int类型为较高位,不可以直接赋给较低位short类型。该式子会编译时报错。
    • (2) 当运算符为自动递增运算符(++)或自动递减运算符(–)时,如果操作数为byte,short或char类型不发生改变;

    • 例一:详解math.round方法,理解在该方法中的强制类型转换。该方法求的值为小于等于参数+0.5的最大整数。该方法只有传入double参数时,才需要进行强制类型转换。

      • //round该方法有两种,一种传入float类的数据,返回的为int类型的数据,故不用强制类型转换
        public static int round(float f);
        //另一种传入Double类型的数据,返回的为long类型的数据,需要强制类型转换。
        public static long round(double d);
        //另外:
        //如果参数为 NaN,那么结果为 0。
        //如果结果为负无穷大或任何小于等于 Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE //的值。
        //如果参数为正无穷大或任何大于等于 Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE //的值。
        //实例:
        float f =1.849f;
        double d = 1.849;
        system.out.println(math.round(f));//2
        system.out.println(math.round(d));//2 
        int c = math.round(d);//此处可以使用int类型的参数来接收
        int a= (int)math.round(d)//此处不可以直接使用int类型的参数来接收,因为返回值为long类型,要进行强制类型转换
        system.out.println(a);//2
        System.out.println(Math.round(a*100)/100.0);
        //原理:小数点先右移两位后应用Math.round方法进行四舍五入,得到185的整型,然后与double类型运算,在将小数点向左移两位,得到double类型的数值1.85;
        
        //特殊之处:
        math.round(-12.5);//结果为-12;实际上为:(int)math.floor(a+0.5),该题中,返回小于等于-13.0的最大整数,那肯定为-12
        math.round(12.5);//结果为13;该题中返回小于等于13.0的最大整数,肯定为13;
        
    • 例二:

    • class RoundTest
      {
          public static void main(String[] args)
          {
              //byte的值的范围在-128-127,超过范围需要使用强制类型转换
              byte b = 127;
              byte b1 = (byte) 1000;
              
              //chat的值的范围在0-2^16-1,超过需要强制类型转换,不然编译报错
              char ch = 0;
              
              //short的值的范围在-2^15-2^15-1,超过需要强制类型转换,不然编译报错
              short sh1 = (short)1111111;
              //byte类型可以直接类型提升为short类型;但是byte和char,char和short不可以直接提升。
              short s =  b1 ;
              
              //后面字面量默认为int类型,但int类型的范围为-2^31-2^31-1;该值超过int的最大值,故报错;
              //Long l =1111111111111;
              //在数值后面加上标识,注明为long类型就不用担心该问题了。
              Long l1 =1111111111111L;
              
              //将一个int类型的字面量赋值给byte类型,因为此编译时即可判断字面量是否符合要求,故不会编译出错。
              int a1 = 1;
              byte by =2;
              //将一个int类型变量赋值给byte类型,会报错,即使赋值是在一定的范围内,但因为需要到运行期间才能确定这个不同类型的值是否符合要求;此时需要使用强制类型转换,让编译过程不出错。
             byte by1 =(byte)a1;
              //类型相同可以赋值;
              byte by2 = by;
              
              //double 和 float的转换
              double dou = 1.235;
              float flo = (float)1.245;//double无法自动类型转换为float,
              float flo1 = 1.234f;
              double dou1 = 1.234f;//float可以自动类型转换为double;
              
              //int 和 float、double之间的转换,低位转高位使用字面量或者变量都不会编译报错,而高位转低位一定要使用强制类型转换。
              double dou2 = 1;
              float flo2 = 2;
              int in = (int)flo1;
              int in2 = (int)dou2;
              
              //int 和 long 之间的转换,低位转高位使用字面量或者变量都不会编译报错,而高位转低位一定要使用强制类型转换。
              long lo = 3;
              int in3 = (int)lo;
              int in4 = (int)14L;
              long lo1 = in3;
          }
          public static String getType(Object o){ //获取变量类型方法
              return o.getClass().toString(); //使用int类型的getClass()方法
          }}
      
    • 例三

    • int a = 233;
      byte b = (byte)a;
      system.out.println(b);
      //答案
      -23;
      因为int类型的数据233,转为二进制为24位0加11101001,截取后面8位,由于第一位为1,故值为负值,最后结果为-23;
      
    • 精度损失

      • 转换过程中的精度损失,看下图为低位转高位的自动类型转换,实线表示无信息丢失的转换,而虚线表示有精度损失的转换。可见,int、long类型转换为float,会有精度损失,long类型转换为double也有精度损失
      • 而高位转低位都会损失精度。
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5qnhLPJj-1578314043571)(C:\Users\admini\Desktop\20194893912036.png)]

    笑话一则:

    砖家在河边看到两只乌龟缩着一动不动,问一农民:”它们在干吗? “。农民说:”在比赛!“。砖家不解:”动都没动过,比什么赛?“。农民:”在比装死!“。砖家:”可是壳上有甲骨文的那只,早就死了啊? “。这时,一只乌龟猛然探出头来骂道:”MD,死了也不吭一声! “。突然另一只也伸出头来:“傻子!砖家的话你也信,你输了 !”。

    展开全文
  • (一)OpenCV函数

    2018-12-31 12:02:27
    输入图像数据,图像数据无符号8位或无符号16位或单精度浮点型数据 2 dst 输出图像数据,保持与输入相同的尺寸和深度 3 code 图像转换编码,ColorConversionCodes 4 dstCn 转换的图像通道数 ...

    简洁版翻译.

    1 cvtColor

    功能:改变图片颜色.
    参数描述

    序号 参数 描述
    1 src 输入图像数据,图像数据为无符号8位或无符号16位或单精度浮点型数据
    2 dst 输出图像数据,保持与输入相同的尺寸和深度
    3 code 图像转换编码,ColorConversionCodes
    4 dstCn 转换的图像通道数

    图像转换码,常用,左右可互转.

    序号 参数 描述
    1 COLOR_BGR2BGRA BGR三通道图像转为BGRA四通道图像
    2 COLOR_BGR2RGBA BGR三通道转为RGBA四通道图形
    3 COLOR_BGR2GRAY BGR三通道图像转为灰度图像
    4 COLOR_GRAY2BGR 灰度图像转为三通道BGR图像
    5 COLOR_BGR2XYZ BGR三通道图形转为XYZ图形
    6 COLOR_BGR2Luv BGR三通道图形转为Luv图形
    7 COLOR_BGR2HLS BGR三通道图形转为HLS图形

    2 threshold()

    功能:改变图形像素数值,将固定阈值与图形的每个像素值作用,输出改变后的数值dst及阈值retval;

    参数描述

    序号 参数 描述
    1 src 输入图像数据,单通道8位或32位浮点型数据
    2 dst 输出数据,与输入数据同尺寸,同类型
    3 thresh 阈值
    4 maxval 最大值,使用THRESH_BINARY和THRESH_BINARY_INV计算dst
    5 type 阈值类别,查看ThresholdTypes

    3 ThresholdTypes

    功能:根据阈值类型,获取阈值输出值;

    序号 类型 计算方式
    1 THRESH_BINARY dst(x,y)={maxvalif src(x,y) > thresh0othervisedst(x,y)=\begin{cases} maxval & \text {if $src(x,y)$ > $thresh$} \\ 0 & \text{othervise} \end {cases}
    2 THRESH_BINARY_INV dst(x,y)={0if src(x,y) > threshmaxvalotherwisedst(x, y)=\begin{cases} 0 &\text{if $src(x,y)$ > $thresh$} \\ maxval &\text{otherwise} \end{cases}
    3 THRESH_TRUNC dst(x,y)={thresholdif src(x,y) > threshsrc(x,y)otherwisedst(x, y)=\begin{cases} threshold &\text{if $src(x,y)$ > $thresh$} \\ src(x,y) &\text{otherwise} \end{cases}
    4 THRESH_TOZERO dst(x,y)={src(x,y)if src(x,y) > thresh0ohterwisedst(x, y)=\begin{cases} src(x,y) &\text{if $src(x,y)$ > $thresh$} \\ 0 &\text{ohterwise} \end{cases}
    5 THRESH_TOZERO_INV dst(x,y)={0if src(x,y) > threshsrc(x,y)otherwisedst(x, y)=\begin{cases} 0 &\text{if $src(x,y)$ > $thresh$} \\ src(x,y) &\text{otherwise} \end{cases}
    6 THRESH_MASK
    7 THRESH_OTSU 标志位,使用Otsu算法选择优化的阈值
    8 THRESH_TRIANGLE 标志位,使用Triangle算法选择优化的阈值

    4 adaptiveThreshold()

    功能:获取自适应阈值retval输出及图像输出dst;
    参数描述

    序号 参数 描述
    1 src 8位单通道图像数据
    2 dst 输出的图像数据,与原图像同尺寸同通道数
    3 maxValue 满足阈值条件的非零值,填充到对应像素点
    4 adaptiveMethod 自适应算法,用于计算阈值
    5 thresholdType 阈值类型,必须为THRESH_BINARY或THRESH_BINAYR_INV
    6 blockSize 计算阈值的像素区域尺寸,如3,5,7…
    7 C 从权重均值或均值中减去的常量,其值可正可负可零

    5 AdaptiveThresholdTypes

    功能:根据自适应阈值类型,获取阈值输出值;
    参数描述

    序号 参数 描述
    1 ADAPTIVE_THRESH_MEAN_C 阈值T(x,y)计算方式:T(x,y)=mean(blockSize×blockSize)CT(x,y)=mean(blockSize\times blockSize)-C
    2 ADAPTIVE_THRESH_GAUSSIAN_C 阈值T(x,y)计算方式:T(x,y)=weightedsum(blockSize×blockSize)CT(x,y)=weighted sum(blockSize\times blockSize)-C

    展开全文
  • matlab数值数据: ... uint8()把数值转换为无符号整型 int8()将数值转换为有符号整型 浮点型   单精度 :single()将其他数值转换为单精度型。  双精度(默认):double()……转换为双精度型。 复数型  ...

    matlab数值数据
    class()获取数值类型。
    整型:无符号8位(0~255)
          带符号8位(-128~127)
     还有 16 32 64位
     uint8()把数值转换为无符号整型 int8()将数值转换为有符号整型
    浮点型 
          单精度      :single()将其他数值转换为单精度型。
          双精度(默认):double()……转换为双精度型。
    复数型
         形式如:a+bj(i);
         real():求复数的实部
         imag():求复数的虚部
    数值数据的输出格式
    format命令的格式:format 格式符(long/空格:15位小数/分数)

    常用数学函数
    函数名(函数自变量的值)
    函数自变量规定为矩阵变量,也可以为标量。
    exp()函数自然指数函数
    三角函数:以角度为单位的函数在函数名后加d以示区别。(sin cos tan)。
    abs()函数 可求:实数->绝对值
                    复数->模
                    字符串->ASCII码值
    取整函数:
         fix()取靠近0的。
         floor()取小
         ceil()取大
         round()四舍五入
    求余函数:
         rem(x,y):例如rem(123,10)=3
         mod(x,y):    mod(123,10)=3
    判断是否为素数的函数:isprime()函数 是则返回1 否则返回0
    find()找出所有非零数的下标。
    求[1,100]区间的所有素数:
    >>x=1:100;
    >>k=isprime(x);
    >>k1=find(k);           
    >>p=x(k1)

    展开全文
  • Matlab 命令集合(一)

    2018-08-18 21:53:33
    matlab数值数据: ... uint8()把数值转换为无符号整型 int8()将数值转换为有符号整型 浮点型  单精度 :single()将其他数值转换为单精度型。  双精度(默认):double()……转换为双精度型。 ...
  • MATLAB学习一

    2021-01-20 00:30:58
    无符号整数:无符号8整数、16、32、64 取值范围:0000000011111111(02 8-1) 带符号整数:带符号8整数、16、32、64 取值范围:10000000~01111111(-2 7~2 7-1) 浮点型 single函数:将其他类型的数据转换为单...
  • Golang基础(整型)

    2020-10-14 10:23:39
    api文档 ... 整型分为有符号整型和无符号整型 有符号整型有正数和负数.其二进制最高表示符号,0正数1负数.int和intx有符号整型 整型和浮点型 //int8 举例 0000 0010=2 1000 0010
  • 4 实型(单精度浮点型以float表示 `双精度浮点型以double表示) long可以用来修饰int(表示长整型)和double 5 signed(有符号) 和 unsigned(无符号)⊥可以用来修饰char型和int型(包括long int) ⊥ ⊥ 6 有符号 ...
  • 4.整型常数的后缀在16位字长的机器上,基本整型的长度也为16位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围0~65535,有符号数-32768~+32767。八进制无符号数的表示范围0~0177777。十六进制...
  • 一、下载须知 .........................1.用于传播和交流思想 .........................2.章节目录。 .........................3.............................4.............................5....浮点类型.....……….....
  • 图像增强的实现

    2012-06-07 15:42:03
    NB 伪编码的最大值,即编码范围 0~NB,缺省值 NB=16; OPT 指定了编码的方式(缺省值 'mat'),即: OPT='row' ,按行编码 OPT='col' ,按列编码 OPT='mat' ,按整个矩阵编码 ABSOL 是函数的控制参数...
  • (很多编译器在表达式求值的时候仍然把所有的float型转换为double进行运算)。但如果一个变量的地址确定且必须为特定的类型时,以上规则就不再适用。很多时候,人们错误地认为C语言类型的大小都有精确的定义。事实...
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    当按二、八、十六进制输出时,是按其补码形式输出,最高符号位(正数0、负数1)。 所以此法可得到一个负数的补码表示。 (1)按二进制输出 %b或%B %b等价与%B。 %b 12 = 0b1100 %b 0xffffffff = 0b1111 ...
  • 编程卓越之道:卷一/二

    热门讨论 2010-10-10 08:31:04
    2.5 有符号数与无符号数 24 .2.6 二进制数一些有用的特性 25 2.7 符号扩展,零扩展,以及缩减 27 2.8 饱和操作(saturation) 30 2.9 二进制编码的十进制(BCD)表示法 31 2.10 定点表示法 33 2.11 比例数...
  •  3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针  基本的指针应用  4.1 指针到底有什么好处?  4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char *p; *p =malloc...
  • 3.21 “无符号保护”和“值保护”规则的区别在哪里? 42 第4章 指针 45 基本的指针应用 45 4.1 指针到底有什么好处? 45 4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char ...
  • 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char *p; *p =malloc(10); ...
  • 本书系统地介绍了8位单片机MCS-51系列和16位单片机8098的原理和应用技术。 首先概述了计算机的组成及工作原理,计算机中的数制和码制,然后系统地介绍了MCS-51 系列单片机的结构原理、指令系统、汇编语言程序设计...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.21 “无符号保护”和“值保护”规则的区别在哪里? 42 第4章 指针 45 基本的指针应用 45 4.1 指针到底有什么好处? 45 4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char ...
  • 3.21 “无符号保护”和“值保护”规则的区别在哪里? 71 第4章 指针 74 基本的指针应用 74 4.1 指针到底有什么好处? 74 4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char *p; *p...
  • 3.21 “无符号保护”和“值保护”规则的区别在哪里? 71 第4章 指针 74 基本的指针应用 74 4.1 指针到底有什么好处? 74 4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char *p; *p...
  • 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处?  4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char*p;*p=malloc(10);...
  • 3.21 “无符号保护”和“值保护”规则的区别在哪里? 第4章 指针 基本的指针应用 4.1 指针到底有什么好处? 4.2 我想声明一个指针并它分配一些空间,但却不行。这些代码有什么问题呢?char*p;*p=malloc(10);...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

无符号16位转换为浮点型