matlab绘制平滑曲线

时间:2023-01-28 20:37:56

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')
matlab绘制平滑曲线
 
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 on
y1=70;
plot(xp,y1,'c-')
% 自己试一下
matlab绘制平滑曲线
 
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)
matlab绘制平滑曲线
 

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时,蓝线是折线,而红线应当有一点弧度
matlab绘制平滑曲线
 

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('原始点','线性点','三次样条','三次多项式')
matlab绘制平滑曲线
 分解为四张图如下所示:
 
 
matlab绘制平滑曲线