MATLAB云模型!为什么我的代码和别人的代码一样,只是数字改了,图形下方为什么不会发散啊?希望大家帮我看看!
问题描述:
我的图:
别人的图:
代码一样只是数据变了。
我的代码:
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
可以看到其实下方也是发散的