• MATLAB的数据类型


    MATLAB中有15种基本数据类型,其中常用的数据类型主要是整型、浮点型、逻辑类型、结构体、元胞数组及字符串等。

    整型

    >> x = int8(12)
    
    x =
    
      int8
    
       12
    
    >> y = uint16(x)
    
    y =
    
      uint16
    
       12
    
    >> A = zeros(3, 'uint8') 
    % 生成全零矩阵
    A =
    
      3×3 uint8 矩阵
    
       0   0   0
       0   0   0
       0   0   0
       
       
    >> intmin('int8')
    % 确定整型数据类型的数据范围
    ans =
    
      int8
    
       -128
    
    >> intmax('int8')
    
    ans =
    
      int8
    
       127
    
    

    浮点型

    >> a = single(32)
    % 单精度
    a =
    
      single
    
        32
        
     >> b = double(10000)
    %双精度
    b =
    
           10000
     >> z = 10
    % 默认为双精度
    z =
    
        10
    >> B = ones(3,'single')
    % 三个单精度全1矩阵
    B =
    
      3×3 single 矩阵
    
         1     1     1
         1     1     1
         1     1     1
         
     >> realmin('double')
    % 浮点型数据的取值范围查询
    ans =
    
      2.2251e-308
    
    >> realmax('double')
    
    ans =
    
      1.7977e+308
    

    逻辑类型

    % 1. if 语句的判断
    >> a = 5;
    >> if a > 0
         disp('大于0')
       else
         disp('小于0')
       end
    大于0
    
    % 2. 查找矩阵中符合一定条件的数据
    >> a = magic(3)
    
    a =
    
         8     1     6
         3     5     7
         4     9     2
    
    >> a > 5
    
    ans =
    
      3×3 logical 数组
    
       1   0   1
       0   0   1
       0   1   0
    
    % 3. 逻辑运算
    
    >> x = [1 2 3 -2 0 -1];
    >> ~ x  
    % x中元素为0 则返回"1",否则返回“0”
    ans =
    
      1×6 logical 数组
    
       0   0   0   0   1   0
    

    字符串

    字符串的生成

    一维字符串的生成

    % 1. 一维字符串的生成
    % 1.1 直接赋值发
    >> str = "ABCDE"
    
    str = 
    
        "ABCDE"
        
     % 1.2 连接法
    >> str1 = strcat(str,"FGH")
    
    str1 = 
    
        "ABCDEFGH"
        
    >> str2 = [str1, "STR"]
    
    str2 = 
    
      1×2 string 数组
    
        "ABCDEFGH"    "STR"
    
    >> str3 = [str1,str2]
    
    str3 = 
    
      1×3 string 数组
    
        "ABCDEFGH"    "ABCDEFGH"    "STR"
    

    二维字符串的生成

     % 2. 二维字符串的生成    
     >>  str1 = ['abcd';'efg'] % 注意二维数组在创建时要保证每行列数相同,不然会报下面的错误
    	要串联的数组的维度不一致。  
      
     >>  str1 = ['abcd';'efg ']
    % 空格填充
    str1 =
    
      2×4 char 数组
    
        'abcd'
        'efg '
        
     >> str2 = char('ABC','DE')
    % 通过char()创建二维字符串
    str2 =
    
      2×3 char 数组
    
        'ABC'
        'DE '
        
     >> str3 = strvcat(str1,str2)
    % 字符串的垂直连接
    str3 =
    
      4×4 char 数组
    
        'abcd'
        'efg '
        'ABC '
        'DE  '   
    

    字符串的操作

    字符串的判断

    % 1. 字符串的判断
    >> str1
    str1 =
      2×4 char 数组
        'abcd'
        'efg '
    
    >> ischar(str1)
    % 判断是否为字符串
    ans =
    
      logical
    
       1
     >> isletter(str1)
    % 判断每个字符是否为字母
    ans =
    
      2×4 logical 数组
    
       1   1   1   1
       1   1   1   0	
     >> isspace(str1)
    % 判断每个字符是否为空格
    ans =
    
      2×4 logical 数组
    
       0   0   0   0
       0   0   0   1
    

    字符串的访问

    % 2. 字符串的访问
    >>  str1 = char('abc','d f',' lee3')
    
    str1 =
    
      3×5 char 数组
    
        'abc  '
        'd f  '
        ' lee3'
        
    >> str1(1,:)
    % 访问字符串中的第1行
    ans =
    
        'abc  '
        
    >> str1(1,2)
    % 访问第1行第2个元素
    ans =
    
        'b'
        
    >> str1([1,2])
    % 索引访问第1,2行首个元素
    ans =
        'ad'
        
    >> str1([1,2],[2,3])
    % 访问第1行2、3个元素和第2行2、3个元素
    ans =
      2×2 char 数组
    
        'bc'
        ' f'
    

    字符串的查找与替换

    %3. 字符串的查找与替换
    >> str1 = 'Specify character data by placing characters inside a pair of single qutes';
    >> k = strfind(str1, 'ar')
    % 查找指定字符串,返回其位置
    k =
    
        11    37
    
    >> k = strfind(str1,'are')
    % 不存在返回空列表
    k =
    
         []
    
    >> k = findstr(str1,'are')
    
    k =
    
         []
    
    >> k = findstr(str1,'ar')
    
    k =
    
        11    37
    
    >> strrep(str1,'ar','are')
    % 替换字符串中的字符
    ans =
    
        'Specify chareacter data by placing chareacters inside a pair of single qutes'
    
    >> i = strmatch('min',strvcat('min','minimax','maximum'))
    % 字符串中匹配查找
    i =
    
         1
         2
    
    >> i = strmatch('min',strvcat('min','minimax','maximum'),'exact')
    % 查找其精确位置
    i =
    
         1
    

    字符串的比较

    % 4. 字符串的比较
    >> str1 = 'ABC';
    >> str2 = 'ABC';
    >> str3 = 'abc';
    >> str4 = 'ABCD';
    >> k1 = strcmp(str1,str2)
    % 比较字符串,相等返回1 
    k1 =
    
      logical
    
       1
    
    >> k2 = strcmp(str1,str3)
    % 不相等返回0
    k2 =
    
      logical
    
       0
    
    >> k3 = strcmpi(str1,str3)
    % 不区分大小写的比较
    k3 =
    
      logical
    
       1
    
    >> k4 = strncmp(str1,str4,3)
    % 比较两个字符串的前n位是否相同
    k4 =
    
      logical
    
       1
    

    字符串的大小写转换

    %5. 字符串的大小写转换
    >>  str = "Hello MATLAB";
    >> s  = lower(str)
    
    s = 
    
        "hello matlab"
    
    >> s = upper(str)
    
    s = 
    
        "HELLO MATLAB"
    

    字符串的执行 (eval()函数)

    % 6. 字符串的执行 (eval()函数)
    >> A = rand(3)
    
    A =
    
        0.9649    0.9572    0.1419
        0.1576    0.4854    0.4218
        0.9706    0.8003    0.9157
    
    >> eval('length(A)') % 此处直接执行字符串
    
    ans =
    
         3
         
     >> [I,J] = eval('size(A)')
    
    I =
    
         3
    
    
    J =
    
         3
         
    >> for i = 1:3   % 实现分别给a1,a2,a3赋值操作
         eval(['a',num2str(i),'=2*i'])
    end
    
    a1 =
    
         2
    
    a2 =
    
         4
    
    a3 =
    
         6     
    

    元胞数组

    元胞数组的创建

    直接赋值法创建元胞数组

    % 1. 直接赋值法创建元胞数组
    %1.1 元素下标使用
    >> a{1,1} = 8;
    >> a{1,2} = 'cell study';
    >> a{2,1} = magic(3);
    >> a{2,2} = magic(3)> 5;
    >> a
    
    a =
    
      2×2 cell 数组
    
        {[       8]}    {'cell study'}
        {3×3 double}    {3×3 logical }
        
    >> b{1,1} = {8};
    >> b{1,2} = {'cell study'};
    >> b{2,1} = {magic(3)};
    >> b{2,2} = {magic(3) > 5};
    >> b
    
    b =
    
      2×2 cell 数组
    
        {1×1 cell}    {1×1 cell}
        {1×1 cell}    {1×1 cell}    
    

    cell()函数创建元胞数组

     % 2. cell()函数创建元胞数组   
     >> a = cell(2)
     
    a =
    
      2×2 cell 数组
    
        {0×0 double}    {0×0 double}
        {0×0 double}    {0×0 double}
    
    >> a = {1,'c',2,cell(3)}   
    

    元胞数组的操作

    访问元胞数组

    % 1. 访问元胞数组
    >> a = {8, 'cell study';magic(3), magic(3) > 5}
    
    a =
    
      2×2 cell 数组
    
        {[       8]}    {'cell study'}
        {3×3 double}    {3×3 logical }
    
    >> a{1,1}
    
    ans =
    
         8
    
    >> a{1,:}
    
    ans =
    
         8
    
    
    ans =
    
        'cell study'
    
    >> a{:,2}
    
    ans =
    
        'cell study'
    
    
    ans =
    
      3×3 logical 数组
    
       1   0   1
       0   0   1
       0   1   0
    
    >> a{2,2}(1,1)
    
    ans =
    
      logical
    
       1
     >>  a{2,2}(1,1) + 1
    
    ans =
    
         2  
         
     >> a(1,1)
    
    ans =
    
      1×1 cell 数组
    
        {[8]}
    
    >> a(1,1) + 1  %小括号访问不能修改值
    未定义与 'cell' 类型的输入参数相对应的运算符 '+'。
    

    元胞数组的显示

    % 2. 元胞数组的显示
    >> celldisp(a)
     
    a{1,1} =
     
         8
    
     
     
    a{2,1} =
     
         8     1     6
         3     5     7
         4     9     2
    
     
     
    a{1,2} =
     
    cell study
     
     
    a{2,2} =
     
       1   0   1
       0   0   1
       0   1   0
       
     >> celldisp(a,'s') % 以s为元胞数组命名
     
    s{1,1} =
     
         8
    
     
     
    s{2,1} =
     
         8     1     6
         3     5     7
         4     9     2
    
     
     
    s{1,2} =
     
    cell study
     
     
    s{2,2} =
     
       1   0   1
       0   0   1
       0   1   0
    >> cellplot(a) % 以图形化的方式显示元胞数组
    

    image.png

    删除元胞数组的内容

    % 3.删除元胞数组的内容
    >> a{1,1} = []
    
    a =
    
      2×2 cell 数组
    
        {0×0 double}    {'cell study'}
        {3×3 double}    {3×3 logical }
    
    >> a{1,1}
    
    ans =
    
         []
    

    结构体

    结构体的生成

    直接赋值法

    %1. 直接赋值法
    >> ss.name = 'matlba';
    >> ss.age = 2019;
    >> ss.num = [5:2:16];
    >> ss
    
    ss = 
    
      包含以下字段的 struct:
    
        name: 'matlba'
         age: 2019
         num: [5 7 9 11 13 15]
    
    

    函数法

    % 2. 函数法 
    >> ss1 = struct('name','matlab','age',2019,'num',[5:2:16])
    % struct()函数创建结构体
    ss1 = 
    
      包含以下字段的 struct:
    
        name: 'matlab'
         age: 2019
         num: [5 7 9 11 13 15]
    

    结构体的操作

    访问结构体中的元素

    % 1. 访问结构体中的元素
    >> stu = struct('sname',{'xiaoming','xiaoli','xiaochen'},'sage',{20,21,22})
    
    stu = 
    
      包含以下字段的 1×3 struct 数组:
    
        sname
        sage
    
    >> stu(:,1)
    
    ans = 
    
      包含以下字段的 struct:
    
        sname: 'xiaoming'
         sage: 20
    
    >> stu(1)
    
    ans = 
    
      包含以下字段的 struct:
    
        sname: 'xiaoming'
         sage: 20
    
    >> stu.sname
    
    ans =
    
        'xiaoming'
    
    
    ans =
    
        'xiaoli'
    
    
    ans =
    
        'xiaochen'
    
    >> stu(1).sname
    
    ans =
    
        'xiaoming'
    

    结构体的显示

    % 2. 结构体的显示
     >> names = fieldnames(stu)
    % 显示结构体的域名
    names =
    
      2×1 cell 数组
    
        {'sname'}
        {'sage' }
    
    >> f = getfield(stu,'sname')
    % 显示域名中的内容
    f =
    
        'xiaoming'
    

    结构体的删除

    % 3. 结构体的删除
     >> s = rmfield(stu,'sage')
    
    s = 
    
      包含以下字段的 1×3 struct 数组:
    
        sname
    
  • 相关阅读:
    [LeetCode] Diagonal Traverse 对角线遍历
    [LeetCode] Find Bottom Left Tree Value 寻找最左下树结点的值
    [LeetCode] Next Greater Element I 下一个较大的元素之一
    [LeetCode] Teemo Attacking 提莫攻击
    [LeetCode] 494. Target Sum 目标和
    记一次Android studio升级之后的坑
    Flutter:Slivers大家族,让滑动视图的组合变得很简单!
    flutter控件之ListView滚动布局
    flutter 生命周期
    Flutter 案例学习之:GridView
  • 原文地址:https://www.cnblogs.com/sinlearn/p/12840068.html
Copyright © 2020-2023  润新知