Matlab学习笔记·

Matlab的小小笔记(数据类型)

2019-01-14  本文已影响0人  MelonEater_plus

Matlab知识点

主题 文章
Matlab数据类型 此篇

Matlab数据类型

前言

emmmm,本来手写笔记但是怕写完就扔了,看也不方便,所以记录电子版
第一次用MarkDown,看着链接推荐跑来了简书
也看着一篇简书文章学学基础知识

数据类型

字节数 类型 取值
8 double(默认) -10^{308} \sim 10^{308}
4 single
uint32
int32
-10^{38} \sim 10^{38}
[0,4294967295]
[-2147483648,2147483647]
2 uint16
int16
char
[0,65535]
[-32768,32767]
字符
1 uint8
int8
logical
[0,255]
[-128,127]
0/1

数据类型转换

直接利用数据类型名

>> a = [-1 0 100 255 256];
>> whos a 
  Name      Size            Bytes  Class     Attributes
  a         1x5                40  double  
>> b = uint8(a)
b =
  1×5 uint8 行向量

     0     0   100   255   255
>> whos b
  Name      Size            Bytes  Class    Attributes
  b         1x5                 5  uint8    

  其他的一些转换也是如此,即格式为期望数据 = 期望类型(原始数据)。当原始数据大于期望数据上限时候,期望数据直接取上限;反之直接取下限。所以在转换之前可用max(a(:))min(a(:))来检查原始数据的上下限,否则可能会造成数据的失真。

利用特定转换函数im2...

函数名 输出类型 输入类型
im2uint8 uint8 GrayscaleImg uint8,int16,single,double
TruecolorImg uint8,int16,single,double
BinaryImg logical
IndexedImg uint8,uint16,double
GPU加速 gpuArray
不支持 int8,char,int32,uint32
im2uint16 uint16 logical,uint8,uint16,int16,single,double,gpuArray
不支持 int8,char,int32,uint32
(可以具体看看官网文件)
mat2gray [0,1]的double 全都支持,归一化用用
im2double double logical,uint8,uint16,int16,single,double,gpuArray
不支持 int8,char,int32,uint32
im2bw logical uint8,uint16,int16,single,double
不支持 int8,char,int32,uint32,gpuArray
可以是logical,但是没意义

关于double/single规则会和前面有挺大的区别,分im2doublemat2gray两种情况:

>> a = uint8([0 100;128 200]);
>> b = im2double(a)
b =

         0    0.3922
    0.5020    0.7843
>> c=gpuArray(a)
c =

  2×2 uint8 gpuArray matrix

     0   100
   128   200
>> im2double(c)
ans =

         0    0.3922
    0.5020    0.7843
>> a = double([0 100;128 200]);
>> b = im2double(a)
b =

     0   100
   128   200
>> c=mat2gray(a)
c =

         0    0.5000
    0.6400    1.0000
>> a = [-1 0.1;1 2]
a =
   -1.0000    0.1000
    1.0000    2.0000
>> whos a
  Name      Size            Bytes  Class     Attributes
  a         2x2                32  double  
>> im2uint16(a)
ans =
  2×2 uint16 矩阵

       0    6554
   65535   65535   
上一篇 下一篇

猜你喜欢

热点阅读