0

我可以使用以下代码绘制大小为 100x11 的图

x=0:0.1:1;情节(x,出(:,(x * 10)+ 1),'ko');

但我无法弄清楚如何为该数据绘制抖动图。

下面是我用来将数据保存到输出变量中并尝试使用抖动图绘制输出数据的完整 Matlab 代码。

clc;
close all;
clear all;

heads = 0;
flip_chance = 0.0;
weight = 0.0;
c = 2;
output = zeros(100,11);
for p = 0.1:0.1:1.0

    for i = 1:1:100

        heads = 0;
        flip_chance = 0.0;

        for j = 1:1:10
           weight = rand();
           flip_chance = (p*10)+weight;
           if flip_chance >= 0.5 && weight <= p
              heads = heads + 1; 
           end

        end
        %fprintf ("p : %f , heads : %d\n ", c, heads);
        output(i, c) = heads;

    end
     c = c+1;
end
x=0:0.1:1;
plot(x, output(:,(x*10)+1),'ko');

当我使用情节运行时,我得到低于输出

在此处输入图像描述

我试图以以下格式获取情节

在此处输入图像描述

4

1 回答 1

0

抖动图暗示像您制作的散点图,但在每个点的位置添加了一些噪声。例如,您可以使用以下代码:

sz = size(output);
x = repmat(linspace(0,1,sz(2)),sz(1),1);
plot(x+0.06*rand(sz),output+0.6*rand(sz),'k.')

我使用x 是x+0.06*rand(sz)因为 x 的增量为 0.1,所以这给出了沿 x 轴点间距的 60% 的点扩展。您可以更改 0.06 以适合您的口味。与output+0.6*rand(sz): 0.6 相同的是间距的 60%。

编辑

您发布的“目标”图仅在 y 轴上使用抖动。您将省略x为完成此操作而添加的随机值。它似乎也使用了很多抖动,在视觉上合并了不同 y 组的点。对于这样的图表,您可以将随机乘数至少设置为 1,但我不建议这样做。

于 2018-03-03T07:19:41.043 回答