【问题标题】:How to build overlapping normal distributions in matlab如何在matlab中建立重叠的正态分布
【发布时间】:2016-08-14 08:35:32
【问题描述】:

我建立了两个正态分布。我试图将两者组合成一个图像,两个图像部分重叠,并且尺寸相同并且适合相同的轴。这就是我所做的:

x = [-2.5:.1:2.5];
norm = normpdf(x,0,1);
y = [-2.5:.1:2.5];
horm = normpdf(y,-1.5,1);
plot(x,norm);
hold on;

然后在下一行代码之前,我手动将x轴范围-4改为4;

plot(y,horm);

现在我的问题如下:由于某种原因,分布“规范”被绘制得很好,但只有大约 70% 的分布“规范”被绘制出来,我的意思是最左边的 30% 分布是完全失踪。任何想法为什么会发生这种情况?

我拍了一张:

【问题讨论】:

  • y 更改为[-4.0:.1:2.5]。在问这些问题之前,请尝试学习基本的编程(或者我不得不说数学)。
  • 向量必须是相同的长度,这正是我尝试你的方法时得到的错误信息......所以也许你需要研究你的数学(或者更有可能,你的态度)......我是编程的初学者;这个网站的目的不是帮助别人学习吗?
  • 等等,我明白我的错误了;你是正确的,因为它得到了完整的分布,但现在“horm”分布比另一个分布更长,我的目的是让它们的大小相同(正如我在问题中所说的那样)。另外,我之前发言的后半部分仍然有效。修复态度兄弟。

标签: matlab plot matlab-figure normal-distribution


【解决方案1】:

这就是你要找的东西:

x = linspace(-2.5,2.5,50);
norm = normpdf(x,0,1);
y = linspace(-4,2.5,50);
horm = normpdf(y,-1.5,1);
horm_start = find(horm>norm(1),1);
horm_end = find(horm>norm(end),1,'last');
plot(x,norm,y(horm_start:horm_end),horm(horm_start:horm_end));

这给出了:

【讨论】:

  • 非常感谢!但是,请注意橙色曲线比蓝色曲线长......所以我最终只是使用 plixr 擦除了额外的橙色部分......
  • @FastBallooningHead “更长”是什么意思?你定义它更长,不是吗?看看我的编辑是不是你的意思...
  • 是的!你说对了。在橙色曲线的右端延伸到 2.5 之前;不,它以 1 结束...。我意识到在橙色曲线下没有区域之前从 1 到 2.5 的值...但总体而言,由于该额外部分,曲线仍然大于蓝色曲线。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多