MATLAB绘制平滑曲线(7页).doc
-MATLAB绘制平滑曲线x=0.1 0.16 0.27 0.41 0.48 0.59 0.8;y=8 70 118 100 9 0 5;以上是每一个X和Y对应的坐标,请问如何编程能够绘制平滑曲线,这个图形就像二次函数一样的如果要在图中绘制一条直线加上y=70的直线,用不同颜色区分! x=0 0.1 0.16 0.27 0.41 0.48 0.59 0.8;y=5 9 70 118 100 17 0 5;y1=22.8 22.8 22.8 22.8 22.8 22.8 22.8 22.8;values1=spcrv(x(1) x x(end);y(1) y y(end),3,1000);values2=spcrv(x(1) x x(end);y1(1) y1 y1(end),3,1000);plot(values1(1,:),values1(2,:),'r',values2(1,:),values2(2,:),'b') ans2:代码如下:x=0.1 0.16 0.27 0.41 0.48 0.59 0.8;y=8 70 118 100 9 0 5;xp=0:0.1:1;yp=interp1(x,y,xp);plot(x,y,'b-',xp,yp,'r-')%红色为差值后的平滑图像hold ony1=70;plot(xp,y1,'c-')% 自己试一下 ans3:x=0.1 0.16 0.27 0.41 0.48 0.59 0.8;y=8 70 118 100 9 0 5;X=linspace(0,.9);Y=spline(x,y,X);plot(x,y,'ro',X,Y,X,70+0*X) another file:>help smooth自己查一下帮助 another question:x有90个值,Y也有90个值,一一对应,用PLOT(x,y)后是折线,请问怎样把它改为平滑曲线,谢谢! ans:平滑曲线的话,建议你用 样条插值。 比方说,已知的数据是X,Y 你将X的间隔变小一些赋于xi X=1:90;Y=(-X+45).*(X<45)+(X-45).*(X>=45);xi=1:0.5:90; %这个点比X的多yi = interp1(X,Y,xi,'spline'); plot(X,Y,'*',X,Y,'b',xi,yi,'r')你注意看上面这图(你放大看)里面的X=45时,蓝线是折线,而红线应当有一点弧度 another question:【求助】用matlab作物理实验图,怎样使曲线平滑一些,让点大致在一条曲线 对很好用的 我给你个例子吧 x=40 42 43 45 48 55 58 60 62 65 67 69 70 72 74 75 85 90 95 97; uh=7.09 9.84 9.75 9.68 9.62 9.52 9.50 9.47 9.44 9.41 9.39 9.37 9.36 9.34 9.32 9.31 9.2 8.04 3.38 2.41; y=uh/40.24; yi0=interp1(x,y,0.025,'linear'); xi=40:0.5:100; yi=interp1(x,y,xi,'linear'); zi=interp1(x,y,xi,'spline'); wi=interp1(x,y,xi,'cubic'); plot(x,y,'o',xi,yi,'r+',xi,zi,'g*',xi,wi,'k.-'); legend('原始点','线性点','三次样条','三次多项式') 分解为四张图如下所示: 第 7 页-