Matlab 统计每行或每列中,元素出现的个数及比例

研究背景:

使用地理探测器进行探测分析,有X变量是单一值,因为有大量的矩阵,不能手动单一修改,所以要先对矩阵按列,统计每列各个元素的个数,若有一列只有一个或两个值,则要删除该列。
在这里插入图片描述

使用的函数:tabulate()函数

tabulate()函数是一个常用的计算矩阵中各个元素出现次数的函数,这里我们只需要稍加变通,设全部的矩阵为dataall,只需要在前面加上一句:data = dataall(:,1),类似于这样的一句,这样table = tabulate(data)计算的就是某一列各元素出现的个数。

再通过if函数判断,如果table行数少于3,那么便是不符合要求的数据。

实例:

    
    %检索每列元素的出现次数,使用tab在输出文件名上标记,单独对个别的不符合要求的数据进行手动处理
    datax1=dataall(:,2);
    datax2=dataall(:,3);
    datax3=dataall(:,4);
    tablex1 =  tabulate(datax1);
    tablex2 =  tabulate(datax2);
    tablex3 =  tabulate(datax3);
    %删除table中出现次数为0的行,次数在第二列
    tablex1(find(tablex1(:,2)==0),:)=[];
    tablex2(find(tablex2(:,2)==0),:)=[];
    tablex3(find(tablex3(:,2)==0),:)=[];
    %计算table的行数,如果少于3行,就不能进行地理探测
    [m1,n1]=size(tablex1);
    [m2,n2]=size(tablex2);
    [m3,n3]=size(tablex3);
    if m1<3 || m2<3 || m3 <3 
        tab = "j";
    else
        tab = "a";
    end 
    
    %输出路径与文件名
    outpath1=strcat('D:\city\2000\\',tab,pathori(1:4));
    outpath=strcat(outpath1,'.xlsx');

在这里插入图片描述
这样只从几百个里面筛选出来了几个不符合要求的,幸好不符合要求的不多,可以手动删除,否则还要使用matlab进行修改,删掉不符合要求的列

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值