MATLAB云模型!为什么我的代码和别人的代码一样,只是数字改了,图形下方为什么不会发散啊?希望大家帮我看看!

MATLAB云模型!为什么我的代码和别人的代码一样,只是数字改了,图形下方为什么不会发散啊?希望大家帮我看看!

问题描述:

我的图:

img


别人的图:

img

代码一样只是数据变了。

我的代码:


clc;
N=1500;
Exsum = [25 60 75 85 95];
Ensum = [8.333,3.333,1.667,1.667,1.667];
Hesum = [0.83,0.33,0.17,0.17,0.17];
for a=1:5
    Ex2=Exsum(a);
    En2=Ensum(a);
    He2=Hesum(a);
    
   for q=1:N
    Enn2=randn(1)*He2+En2;
    x2(q)=randn.*Enn2+Ex2;
    y2(q)=exp(-(x2(q)-Ex2).^2./(2.*Enn2.^2));
   end
axis([0,100,0,1]);

plot(x2,y2,'r*');
hold on;
end

别人的代码:

clc;
N=1500;
Exsum = [12.5 35.5 62.5 82.5 95.4];
Ensum = [10.616,10.616,10.616,6.3,4.26];
Hesum = [0.5,0.5,0.5,0.5,0.5];
for a=1:5
    Ex2=Exsum(a);
    En2=Ensum(a);
    He2=Hesum(a);
    
   for q=1:N
    Enn2=randn(1)*He2+En2;
    x2(q)=randn.*Enn2+Ex2;
    y2(q)=exp(-(x2(q)-Ex2).^2./(2.*Enn2.^2));
   end
axis([0,100,0,1]);

plot(x2,y2,'r*');
hold on;
end



你的也发散了,只是显示的问题,因为你后面周期小,看着就紧凑,你自己单独把后面的某个小段画出来,那也是下方发散的情况。
比如我把x2大于70的后面那段画出来:

 
clc;
N=1500;
Exsum = [25 60 75 85 95];
Ensum = [8.333,3.333,1.667,1.667,1.667];
Hesum = [0.83,0.33,0.17,0.17,0.17];
for a=1:5
    Ex2=Exsum(a);
    En2=Ensum(a);
    He2=Hesum(a);
   for q=1:N
    Enn2=randn(1)*He2+En2;
    x2(q)=randn.*Enn2+Ex2;
    y2(q)=exp(-(x2(q)-Ex2).^2./(2.*Enn2.^2));
   end
axis([70,100,0,1]);% 画后面紧凑的70~100,相当于舒展一下
plot(x2(x2>70),y2(x2>70),'r*'); % 画后面紧凑的,相当于舒展一下
hold on;
end

img

可以看到其实下方也是发散的