急!急!急!谁能帮我把这个MATLAB程序中的图改的平滑些?clear allclcfigure(1

发布时间:2021-02-25 09:44:39

急!急!急!谁能帮我把这个MATLAB程序中的图改的平滑些?clear allclcfigure(1)x=[0.3 0.4 0.45 0.8 0.9 1 1.2 1.4 1.9 2.1 3 4 5 6 7 8 9 10];y1=[0.5 0.45 0.43 0.32 0.29 0.26 0.21 0.18 0.10 0.08 0.05 0.03 0.02 0.02 0.015 0.010 0.00

网友回答

看起来你的y1,y2都是根据某公式计算出来的,最准确的方法是把x的分辨率增大,然后用公式重新计算,这样计算出的结果是真实的,就算不平滑也是有依据的.
如果选择就以现在的数据想平滑一些,可以用三次样条进行差值.
以figure(1)为例:
x=[0.3 0.4 0.45 0.8 0.9 1 1.2 1.4 1.9 2.1 3 4 5 6 7 8 9 10];
y1=[0.5 0.45 0.43 0.32 0.29 0.26 0.21 0.18 0.10 0.08 0.05 0.03 0.02 0.02 0.015 0.010 0.009 0.005];
y2=[0.5 0.46 0.44 0.38 0.35 0.31 0.26 0.24 0.19 0.18 0.15 0.12 0.10 0.08 0.078 0.075 0.073 0.07];
%xx=0.3:0.05:10;
yy1=interp1(x,y1,xx,'spline');
yy2=interp1(x,y2,xx,'spline');
plot(xx,yy1,'-s'),hold on
plot(xx,yy2,'-'),
axis([0 10 0 0.5]);
xlabel('n/u'),ylabel('Pr(H=0)'),
legend('不考虑瑞利衰落','考虑瑞利衰落')
这种方法至少保证在已知点的值是准确的.如果还不够平滑,可以进行多项式拟合,那连已知点的准确性也不能保证了.
x=[0.3 0.4 0.45 0.8 0.9 1 1.2 1.4 1.9 2.1 3 4 5 6 7 8 9 10];
y1=[0.5 0.45 0.43 0.32 0.29 0.26 0.21 0.18 0.10 0.08 0.05 0.03 0.02 0.02 0.015 0.010 0.009 0.005];
y2=[0.5 0.46 0.44 0.38 0.35 0.31 0.26 0.24 0.19 0.18 0.15 0.12 0.10 0.08 0.078 0.075 0.073 0.07];
%xx=0.3:0.05:10;
p=polyfit(x,y1,5); % 5阶多项式,阶数的选择会影响最后的
以上问题属网友观点,不代表本站立场,仅供参考!