Matlab入门短篇34:表table的排序、查找、提取、删除、计算、与结构数组的转换
freexyn
2025年03月06日 20:58
收录于文集
共55篇

1.表格的统计分析

表的统计分析包括计算均值、方差等,这些参数可以通过函数summary一次计算出来,程序示例如下:

xingming={'zhangsan';'lisi';'wangwu'}; %首先创建表变量

xuehao={'1001';'1002';'1003'};

chengji=[89 95;90 87;88 84];

t=table(xingming,xuehao,chengji)

运行结果:

t =

  3×3 table

      xingming       xuehao     chengji

    ____________    ________    ________

    {'zhangsan'}    {'1001'}    89    95

    {'lisi'    }    {'1002'}    90    87

    {'wangwu'  }    {'1003'}    88    84

summary(t)  %无法统计字符型元胞数组,可以对chengji双精度型进行统计处理(按列统计)

运行结果:

Variables:

    xingming: 3×1 cell array of character vectors

    xuehao: 3×1 cell array of character vectors

    chengji: 3×2 double

        Values:

                      Column 1    Column 2

                      ________    ________

            Min          88          84  

            Median       89          87  

            Max          90          95 

mean(t.chengji)  %字段索引再mean函数(默认维度按列即字段名求均值)

mean(t.chengji,2)  %2表示第2维度即按行求均值

t.pingjunzhi=mean(t.chengji,2)  %使用字段索引并赋值

运行结果:

ans =

   89.0000   88.6667

ans =

   92.0000

   88.5000

   86.0000

t =

  3×4 table

      xingming       xuehao     chengji     pingjunzhi

    ____________    ________    ________    __________

    {'zhangsan'}    {'1001'}    89    95         92  

    {'lisi'    }    {'1002'}    90    87       88.5  

    {'wangwu'  }    {'1003'}    88    84         86 

2.表的排序、查找、删除

直接看程序示例:

sortrows(t,'xingming')  %按行排序,表格t按字段'xingming’按字母升序

运行结果:

ans =

  3×4 table

      xingming       xuehao     chengji     pingjunzhi

    ____________    ________    ________    __________

    {'lisi'    }    {'1002'}    90    87       88.5  

    {'wangwu'  }    {'1003'}    88    84         86   

    {'zhangsan'}    {'1001'}    89    95         92  

t(:,[1 2 4 3])  %用索引排序:任意行,列将34列互换

运行结果:

ans =

  3×4 table

      xingming       xuehao     pingjunzhi    chengji

    ____________    ________    __________    ________

    {'zhangsan'}    {'1001'}         92       89    95

    {'lisi'    }    {'1002'}       88.5       90    87

    {'wangwu'  }    {'1003'}         86       88    84

% t.pingjunzhi=[]  %删除,用字段索引赋空值删除该列

3.提取满足特定条件的数据

tf=t.pingjunzhi>90  %查找平均值大于90的学生信息,返回逻辑值;

t(tf,:)  %使用tf作为逻辑索引,索引表格中符合条件的学生的信息

运行结果:

tf =

  3×1 logical 数组

   1

   0

   0

ans =

  1×4 table

      xingming       xuehao     chengji     pingjunzhi

    ____________    ________    ________    __________

    {'zhangsan'}    {'1001'}    89    95        92   

4.与元胞数组、结构数组的转换

使用相应函数进行处理,与结构数组转换table2structstruct2table,与元胞数组转换table2cellcell2table,程序示例如下:

s=table2struct(t)  %表格转换为结构数组后,每一行都变为1个元素,因此是31列的结构数组

运行结果:

s =

  包含以下字段的 3×1 struct 数组:

    xingming

    xuehao

    chengji

    pingjunzhi

s(1)  %查看第1个元素的值

运行结果:

ans =

  包含以下字段的 struct:

      xingming: 'zhangsan'

        xuehao: '1001'

       chengji: [89 95]

    pingjunzhi: 92

 

struct2table(s) %反向转换

运行结果:

ans =

  3×4 table

      xingming       xuehao     chengji     pingjunzhi

    ____________    ________    ________    __________

    {'zhangsan'}    {'1001'}    89    95         92  

    {'lisi'    }    {'1002'}    90    87       88.5  

    {'wangwu'  }    {'1003'}    88    84         86  

c=table2cell(t)  %表格转换为元胞数组后,变量名称消失,变量值转换为元胞数组,其中多列的双精度值会自动拆分为多个单列表示

运行结果:

c =

  3×4 cell 数组

    {'zhangsan'}    {'1001'}    {[89 95]}    {[     92]}

    {'lisi'    }    {'1002'}    {[90 87]}    {[88.5000]}

    {'wangwu'  }    {'1003'}    {[88 84]}    {[     86]}

cell2table(c)  %反向转换

运行结果:

ans =

  3×4 table

         c1            c2          c3        c4

    ____________    ________    ________    ____

    {'zhangsan'}    {'1001'}    89    95      92

    {'lisi'    }    {'1002'}    90    87    88.5

    {'wangwu'  }    {'1003'}    88    84      86

更多精彩内容

End