【问题标题】:create a Correct histogram创建一个正确的直方图
【发布时间】:2014-05-16 21:45:33
【问题描述】:

我有一系列数据以向量 C 表示 并具有由向量 R 表示的数据类

    C = [1.71974522292994
1.91974522292994
2.03821656050955
2.13375796178344
2.16560509554140
2.22929936305733
2.35668789808917
2.38853503184713
2.54777070063694
2.61146496815287
2.70700636942675
2.73885350318471
2.83439490445860
2.96178343949045
3.02547770700637
3.31210191082803]

    R = [1.71974522292994
2.03821104580359
2.35667686867724
2.67514269155088
2.99360851442453
3.31207433729818
3.63054016017183]

我需要做一个直方图和一条与标准正态重叠的曲线

z = histc(C,R);   bar(R,z); 

但是代表频率的向量z不正确。

z = [2 4 4 4 1 1]'

在excell上就是这样,并且很好的代表了直方图

z = [1 1 4 4 4 1 1]'

您可以建议使用这两个向量的解决方案吗? Tnks

【问题讨论】:

  • 这看起来像家庭作业。你至少应该付钱让他们为你做这件事。
  • 没有作业,我正在努力学习如何使用matlab,这只是因为我们大学没有好的课程。我觉得你写的很伤心。因为我看到你完成了一所大学,在质量和大学方面肯定远远优于我。但在你写琐碎的事情之前,先编写好答案。 @La-comadreja 对不起我的英语不好
  • @Antonio:我不认为 MATLAB 在计算指定箱的箱数时不正确。这可能只是两个平台如何适应截止位置。你也可以发布你在 Excel 中所做的事情吗? La-comadreja……我不得不承认……说这话有点混蛋。还有一百万种其他方式来表达你的观点。
  • @rayryeng 我无法发布图片。我认为分数缺失it.tinypic.com/view.php?pic=24bn5sg&s=8#.U3aPfnZDbKc
  • 不需要@Antonio。 Luis Mendo 解决了您的问题。还是谢谢你!

标签: matlab histogram


【解决方案1】:

那是因为Matlab对histc的定义:

n(k) 如果边数(k) ,则计算值x(i)

而 Excel 可能使用更标准的

边(k)

所以基本上你需要将等号从下移到上。你也可以得到它

  1. 通过将符号更改为两个向量并翻转第二个向量(以保持排序)的技巧:

    >> z = histc(-C,-R(end:-1:1))
    z =
         1
         1
         4
         4
         4
         1
         1
    
  2. 使用非常强大的bsxfun函数直接计算上面等号的直方图:

    z = diff(sum(bsxfun(@le, C(:), [-inf R(:).'])));
    

【讨论】:

  • @rayryeng :-) 我已经用过histc 很多次了,直到现在我才意识到它的定义与概率论中的标准定义相反,上面是等号
  • 这个事实我不知道。我不知道histc 与我所学的相反(也就是概率论)。感谢您提供此信息!
  • @rayryeng 但是您在评论中暗示了答案! (刚看到)
  • 是的,但我不知道到底有什么不同。我没有看文档,但你知道这两个函数的内部工作原理!
  • -.-' tnks @LuisMendo 这是 Excell 中的直方图 it.tinypic.com/view.php?pic=24bn5sg&s=8#.U3aPfnZDbKc
【解决方案2】:

我发现使用它很有帮助 z = histc(-C,-R);

我用于内部的循环包括具有不同长度向量的矩阵。然后我用 NaN 填充矩阵

C and classe = [30x14] created by vectors with different lengths + NaN
[nr,nc] = size(C);
Freq = NaN*ones(nr,nc);
R = NaN*ones(nr,nc);
CC = NaN*ones(nr,nc);

我没有找到一种方法来使用正确的子图创建正确数量的图形。 每个图中必须有4个子图。

for k = 1:4
for j= 1 : nc;

    R = classe(:,j);
    CC = C(:,j);
    FF = Freq(:,j);

        R = R(~isnan(B)); % toglie i valori NaN
         CC = CC(~isnan(CC));

        R = sort(R,'descend'); 
        CC = sort(C,'descend');

剧情线

FF = histc(-C,-R); % Calculate the J-th absolute frequencies

        figure(k); <===?????
         subplot(2,2,k) <=== ????????
        bar(B,FF);

重组矩阵

    if length(B)<nr
         R(length(R)+1:nr)=NaN; % riempie la parte di colonna vuota
      if length(CC)< nr;
           C(length(CC)+1:nr)=NaN;
        if length(FF)< nr;
            FF(length(FF)+1:nr)=NaN;

        end
      end
    end



     classe(:,j)=R(:); % matrice classe
           C(:,j)=CC(:) % matrice Elementi;
        Freq(:,j)=FF(:); %Matrice Frequenze Assolute

end

接下来的步骤涉及绘制 3 个数字。每个图包含 4 个子图 我还可以在每个直方图上叠加一条标准正态曲线...... 小费?

tnk

【讨论】:

  • @LuisMendo。你好,你看到我的解决方案了吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-02
  • 2017-07-27
  • 1970-01-01
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
相关资源
最近更新 更多