代码之家  ›  专栏  ›  技术社区  ›  Bernando Purba

直方图中的封装采样结果频率

  •  0
  • Bernando Purba  · 技术社区  · 7 年前

    我刚开始学习Matlab。

    案例: 从3个元素,我们说1,2,和3。我想随机抽取两种元素。我想模拟100次,看看结果对的概率。 如何将结果绘制在直方图上,以便可以直观地看到每一对的频率。到目前为止,我可以做抽样:

    for i=1:100
    datasample(1:3,2,'Replace',true)
    end
    

    所以可能的结果是(1,1),(1,2),(2,1),(2,3)等。 如何使用直方图绘制结果的频率?

    提前谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Grossmend    7 年前
    n = 100;
    
    % generate data random
    arr = zeros(n, 2);
    for i = 1:n
        arr(i, :) = randi([1,3],1,2);
    end
    
    % frequency
    [ii, jj, kk] = unique(arr, 'rows', 'stable');
    f = histc(kk, 1:numel(jj));
    result = [ii f];
    
    % plot
    cuts = strcat(num2str(result(:,1)), '-',num2str(result(:,2)));
    bar(result(:,3))
    grid on
    xlabel('combination')
    ylabel('frequency')
    set(gca,'xticklabel',{cuts});
    set(gca,'XTickLabelRotation',45);
    
    推荐文章