matlab - 直方图产生的值低于预期

标签 matlab plot random histogram octave

让我们将 X 定义为:

enter image description here

和与之相关的对象:

enter image description here

我想计算以下函数的值,并将其绘制在具有特征值 Y 的同一张图上。

enter image description here

我目前的工作

# Define dimensions of X 
N=700;
T=900;
lambda=N/T;

# Randomize X
x=randn(N,T);
# Estimate standard deviation
s=std(x(:));
# Now we estimate y and it's eigenvalues
y=x*x'/T;
l=eig(y);
# Calculating lambda_plus and lambda_minus
lambda_plus=(s^2)*(1+sqrt(lambda))^2;
lambda_minus=(s^2)*(1-sqrt(lambda))^2;
x_lim = linspace(0.1, 3, 10^3)
# Taking into account indicator function
  if (x_lim <= lambda_plus && x_lim>= lambda_minus);
    smth=(1./(2*pi*lambda*x_lim*s^(2))).*sqrt((lambda_plus-x_lim).*(x_lim-lambda_minus));
  else 
    smth = 0
  endif
  # Normalize histogram
  [f, p] = hist(l, nbins = 20)
 hold on;
   bar(p, f / sum(f));
 plot(x_lim, smth)

这个函数的问题是输出如下所示:

enter image description here

这看起来并不完全是应该的。根据wikipedia这两个图应该收敛得更明显。我找到了 somewhere在互联网上非常相似的情节和那些看起来像这样:

enter image description here

我的问题是:我做错了什么?我选择了错误的比例吗?正如我在第二个绘图函数中看到的那样,它的值比我的要少得多,但我不知道它的计算有什么问题。你能帮我指出我做错了什么吗?

最佳答案

是的,这是一个尺度问题。您正在将直方图归一化为

bar(p, f / sum(f));

生成所有条形高度的单位总和。相反,你应该使用

bar(p, f / sum(f) / (p(2)-p(1)));

产生单位面积

关于matlab - 直方图产生的值低于预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66823695/

相关文章:

算法 二次方程 MATLAB

python - Matplotlib 条形图去除内部线条

matlab - 在 matlab 绘图的标记内插入字符串

r - 使用嵌套条件提取 data.frame 中的随机行样本

mysql - 分组后的随机数据

matlab - 如何在 matlab 中传递空引用以便 isa 返回 true?

c++ - OpenCV 图像调整大小与 matlab 的比较

matlab - 如何在 MatLab 中按元素组合两个大小相等的向量?

python - Altair:从 Vega 配色方案中选择一种颜色用于绘图

matlab - 具有随机变量条目的矩阵的合适数据结构是什么?