如何在Matlab中计算某类数字比率?有矩阵如下:1 11 31 21 31 51 51 41 41 52 32 52 52 52 22 33 43 53 13 53 53 5.第一列是序号,从1到很大的数字,每个序号对应的第二列数字在1、2、3、4、5五个

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 11:18:39
如何在Matlab中计算某类数字比率?有矩阵如下:1  11  31  21  31  51  51  41  41  52  32  52  52  52  22  33  43  53  13  53  53  5.第一列是序号,从1到很大的数字,每个序号对应的第二列数字在1、2、3、4、5五个

如何在Matlab中计算某类数字比率?有矩阵如下:1 11 31 21 31 51 51 41 41 52 32 52 52 52 22 33 43 53 13 53 53 5.第一列是序号,从1到很大的数字,每个序号对应的第二列数字在1、2、3、4、5五个
如何在Matlab中计算某类数字比率?
有矩阵如下:
1 1
1 3
1 2
1 3
1 5
1 5
1 4
1 4
1 5
2 3
2 5
2 5
2 5
2 2
2 3
3 4
3 5
3 1
3 5
3 5
3 5
.
第一列是序号,从1到很大的数字,每个序号对应的第二列数字在1、2、3、4、5五个数字中选择,我想要计算每个序号对应的数字钟5和4总共占相同序号对应的数字的百分比,即得到以下结果
1 5/9 (%代表相同序号1对应的数字钟,4和5一共5个数字,而总共有9个数字,故占比为5/9)
2 1/2 (%代表相同序号2对应的数字钟,4和5一共3个数字,而总共有6个数字,故占比为1/2)
3 5/6 (%代表相同序号3对应的数字钟,4和5一共5个数字,而总共有6个数字,故占比为5/6)
.
求帮忙编程M文件,可以直接调用,谢谢啦!

如何在Matlab中计算某类数字比率?有矩阵如下:1 11 31 21 31 51 51 41 41 52 32 52 52 52 22 33 43 53 13 53 53 5.第一列是序号,从1到很大的数字,每个序号对应的第二列数字在1、2、3、4、5五个
编写函数如下,保存成stat45.m文件:
function stat45(A)
A=sortrows(A);
inx=[0; find(diff(A(:,1))~=0); size(A,1)];
for ii=1:length(inx)-1
    B = A( inx(ii)+1 :inx(ii+1),2 );
    r = sum(B==4|B==5) / length(B);
    [n,d] = rat(r);
    fprintf('%g\t%i/%i\n',A(inx(ii)+1,1),n,d)
end
 
调用:
A=[
    1  1
    1  3
    1  2
    1  3
    1  5
    1  5
    1  4
    1  4
    1  5
    2  3
    2  5
    2  5
    2  5
    2  2
    2  3
    3  4
    3  5
    3  1
    3  5
    3  5
    3  5
    ];
stat45(A)

输出:
1 5/9
2 1/2
3 5/6