欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Matlab實現統(tǒng)計集合中各元素出現次數的示例代碼

 更新時間:2022年05月05日 11:40:26   作者:slandarer  
統(tǒng)計數組中各個元素數量是一個很常用的功能,本文主要為大家介紹了如何利用Matlab優(yōu)雅的統(tǒng)計集合中各元素出現的次數,感興趣的可以了解一下

前言

統(tǒng)計數組中各個元素數量是一個很常用的功能,但我試著用了MATLAB中自帶的統(tǒng)計函數 tabulate:

但是發(fā)現了兩個問題:

當元素中英文混雜時:

X = {'slandarer';'slandarer';'hikari';'hikari';'公眾號';'公眾號';
    'CSDN';'CSDN';'CSDN'};
tabulate(X)

我們發(fā)現中英文混雜時輸出會對不齊:

圖片

當元素為純整數數值時:

X=[6,5,6];
tabulate(X)

即使元素沒出現也會從1開始一直顯示到最大值:

圖片

因而,為了解決這倆問題,我自行寫了個元素統(tǒng)計類:statable

工具函數類

classdef statable
    properties
        % properties relationship:
        % obj.Value=obj.Name(obj.Pos);
        % obj.Percent=obj.Count/length(X);
        % obj.Table=table(obj.Value,obj.Count,obj.Percent);
        Value;Count;Percent;Table;Name;Pos
    end

    methods
        % 構造函數
        function obj=statable(X)
            flag=false;
            if isnumeric(X),flag=true;X=X(:);end

            % 元素類型轉換
            SX=sort(X);OrgX=SX;
            [SX,Xid]=grp2idx(SX);
            obj.Name=Xid;
            SX=SX(~isnan(SX));
            DSX=diff(SX);

            % 出現次數統(tǒng)計
            DSX=find([DSX;1]);
            obj.Pos=SX(DSX);
            obj.Count=diff([0;DSX]);
            obj.Percent=obj.Count/length(SX);
            
            % 存儲為table
            obj.Value=obj.Name(obj.Pos);
            if flag,obj.Value=unique(OrgX);end
            obj.Table=table(obj.Value,obj.Count,obj.Percent);
        end
        % 輸出函數
        function show(obj)
            fprintf(1,'%15s%10s%11s\n','Value','Count','Percent');
            for i=1:length(obj.Pos)
                tValue=obj.Name{obj.Pos(i)};
                mspace=length(tValue)-sum(abs(tValue)>31&abs(tValue)<127);
                fprintf(['%',num2str(round(15-mspace)),'s'],tValue);
                fprintf('%10d',obj.Count(i));
                fprintf('%10.3f%%\n',100*obj.Percent(i));
            end
        end
    end
end

使用方式

統(tǒng)計數字

X=[randi([0,10],[100000,1])];
T=statable(X);
T.show()

圖片

統(tǒng)計單詞、名稱

X = {'slandarer';'slandarer';'hikari';'hikari';'公眾號';'公眾號';
    'CSDN';'CSDN';'CSDN'};
T=statable(X);
T.show()

圖片

統(tǒng)計字符

X=['Life is full of confusing and disordering Particular time,a particular location,',...
    'Do the arranged thing of ten million time in the brain,Step by step ,',...
    'the life is hard to avoid delicacy and stiffness No enthusiasm forever,',...
    'No unexpected happening of surprising and pleasing So,',...
    'only silently ask myself in mind Next happiness,when will come?']';

T=statable(X);
T.show()

圖片

當然,也可以通過如下方式獲取其他數據:

T=statable(X);

T.Table

T.Value

T.Count

T.Percent

完整代碼

statable

classdef statable
    properties
        % properties relationship:
        % obj.Value=obj.Name(obj.Pos);
        % obj.Percent=obj.Count/length(X);
        % obj.Table=table(obj.Value,obj.Count,obj.Percent);
        Value;Count;Percent;Table;Name;Pos
    end

    methods
        % 構造函數
        function obj=statable(X)
            flag=false;
            if isnumeric(X),flag=true;X=X(:);end

            % 元素類型轉換
            SX=sort(X);OrgX=SX;
            [SX,Xid]=grp2idx(SX);
            obj.Name=Xid;
            SX=SX(~isnan(SX));
            DSX=diff(SX);

            % 出現次數統(tǒng)計
            DSX=find([DSX;1]);
            obj.Pos=SX(DSX);
            obj.Count=diff([0;DSX]);
            obj.Percent=obj.Count/length(SX);
            
            % 存儲為table
            obj.Value=obj.Name(obj.Pos);
            if flag,obj.Value=unique(OrgX);end
            obj.Table=table(obj.Value,obj.Count,obj.Percent);
        end
        % 輸出函數
        function show(obj)
            fprintf(1,'%15s%10s%11s\n','Value','Count','Percent');
            for i=1:length(obj.Pos)
                tValue=obj.Name{obj.Pos(i)};
                mspace=length(tValue)-sum(abs(tValue)>31&abs(tValue)<127);
                fprintf(['%',num2str(round(15-mspace)),'s'],tValue);
                fprintf('%10d',obj.Count(i));
                fprintf('%10.3f%%\n',100*obj.Percent(i));
            end
        end
    end
end

demo

% demo to test HistRate

X = {'slandarer';'slandarer';'hikari';'hikari';'公眾號';'公眾號';
    'CSDN';'CSDN';'CSDN'};
T=statable(X);
T.show()
disp(' ')


X=[randi([0,10],[100000,1])];
T=statable(X);
T.show()
disp(' ')

X=['Life is full of confusing and disordering Particular time,a particular location,',...
    'Do the arranged thing of ten million time in the brain,Step by step ,',...
    'the life is hard to avoid delicacy and stiffness No enthusiasm forever,',...
    'No unexpected happening of surprising and pleasing So,',...
    'only silently ask myself in mind Next happiness,when will come?']';

T=statable(X);
T.show()
disp(' ')

T.Table
%T.Value
%T.Count
%T.Percent

到此這篇關于Matlab實現統(tǒng)計集合中各元素出現次數的示例代碼的文章就介紹到這了,更多相關Matlab統(tǒng)計元素出現次數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用QT實現圖片瀏覽器的示例詳解

    利用QT實現圖片瀏覽器的示例詳解

    這篇文章主要和大家分享一個小案例:利用QT制作一個小的圖片瀏覽器,要求可以顯示jpg、jpeg、png、bmp,還可以從電腦上拖動圖到窗口并顯示出來,感興趣的可以了解一下
    2023-02-02
  • LintCode 堆化詳解及實例代碼

    LintCode 堆化詳解及實例代碼

    這篇文章主要介紹了LintCode 堆化詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-04-04
  • C語言楊氏矩陣查找算法實例講解

    C語言楊氏矩陣查找算法實例講解

    楊氏矩陣是一個數字矩陣,矩陣的每一行從左到右一次遞增,矩陣從上到下遞增,在這樣的矩陣中查找一個數字是否存在。時間復雜度小于O(N),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-09-09
  • C語言中 printf 函數輸出格式

    C語言中 printf 函數輸出格式

    這篇文章主要介紹了C語言中 printf 函數簡介,通過實例代碼給大家介紹Printf輸出格式的相關知識,需要的朋友可以參考下
    2021-08-08
  • C++對象與繼承使用中一些問題介紹

    C++對象與繼承使用中一些問題介紹

    大家好,本篇文章主要講的是C++對象與繼承使用中一些問題介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語言 動態(tài)分配數組案例詳解

    C語言 動態(tài)分配數組案例詳解

    這篇文章主要介紹了C語言 動態(tài)分配數組案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C++ std::shared_mutex讀寫鎖的使用

    C++ std::shared_mutex讀寫鎖的使用

    本文主要介紹了C++ std::shared_mutex讀寫鎖的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實現圖像目標區(qū)裁剪ImageCropping

    C++實現圖像目標區(qū)裁剪ImageCropping

    本文主要介紹了C++實現圖像目標區(qū)裁剪ImageCropping,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • C++ OpenCV實戰(zhàn)之手寫數字識別

    C++ OpenCV實戰(zhàn)之手寫數字識別

    這篇文章主要為大家詳細介紹了如何使用machine learning機器學習模塊進行手寫數字識別功能,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-08-08
  • C++vector的用法你都知道嘛

    C++vector的用法你都知道嘛

    這篇文章主要為大家詳細介紹了C++中vector的用法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論