x=[0 0.3 0.6 0.9 1.2 1.5 1.8 2.1 2.4 2.7 3.0 3.3 3.6 3.9 4.2 4.5 4.8 5.1 5.4 5.7 6.0 6.3 6.6 6.9 7.2 7.5 7.8]
y=[0 0 0.12 0.26 0.40 0.55 0.65 0.72 0.73 0.71 0.66 0.61 0.54 0.48 0.42 0.37 0.32 0.29 0.25 0.22 0.20 0.18 0.16 0.15 0.14 0.12 0.12]
如何根据以x为横坐标,y为纵坐标画平滑曲线?
方法一:转自yihandk666
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];
那么用plot画出的函数为折线,如下图:
要想把那个折点平滑掉。像论文中那样,具体采用样条函数:下面是样条函数的定义:
spline function 一类分段(片)光滑、并且在各段交接处也有一定光滑性的函数。简称样条。样条一词来源于工程绘图人员为了将一些指定点连接成一条光顺曲线所使用的工具,即 富有弹性的细木条或薄钢条。由这样的样条形成的曲线在连接点处具有连续的坡度与曲率。分段低次多项式、在分段处具有一定光滑性的函数插值就是模拟以上原理 发展起来的,它克服了高次多项式插值可能出现的振荡现象,具有较好的数值稳定性和收敛性,由这种插值过程产生的函数就是多项式样条函数。
大概意思就是让转折点变平滑,下面就是采用这种方式:
values = spcrv([[x(1) x x(end)];[y(1) y y(end)]],3);
plot(values(1,:),values(2,:))
具体里面的原理我也没看过,不过目的是达到了 下面是结果
方法二:转自greatdju
figure:
x1=[0.8395 0.7995 0.7895 0.7867 0.7857 0.7853 0.7847 ];
y1=[1.11E-01 4.64E-02 1.19E-03 1.77E-04 1.57E-05 3.45E-06 2.55E-07 ];
subplot(1,2,1);
semilogy(x1,y1); %原来的折线
title('左边:原来的折线')
x2=linspace(min(x1),max(x1));
y2=interp1(x1,y1,x2,'cubic');
subplot(1,2,2)
semilogy(x2,y2) %处理后的曲线
title('右边:处理后的曲线');
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 on y1=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)
如何用matlab画平滑的曲线?
title('右边:处理后的曲线'); 举报| 答案纠错 | 评论 0 0 yinzhen216 擅长: 暂未定制 其他回答 %使用样条插值就可以画出平滑曲线了,添加这样几行代码 X=0:0.001:7.8; Y=spline(x,y,X); plot(X,Y) 本回答被提问者采纳 princegyw | 推荐于2017-12-15 15:31:31 举报| 评论 36 26 你看看...
如何使matlab中曲线平滑?
具体步骤:1、首先准备两列数据,作为xy坐标值,使用plot命令作图如下。2、然后进行数据拟合,这里使用matlab的polyfit命令。如果数据的规律性很差的话,polyfit后面设置的参数要足够大才能保证拟合精度,在这个数据中选择15。3、拟合后与原来数据对比后的std约为0.1287.y的平均值为113.精度值根据不同的需...
matlab怎么对曲线进行平滑啊?
MATLAB中绘制平滑曲线一般使用最小二乘法或者B样条插值。最小二乘法实际上是函数拟合,可以得到目标函数(这里为多项式)的系数,对outliers相对不敏感,缺点是需要预先设置目标函数的阶数,且有时不容易找到最优的目标函数形式。这里使用polyfit()函数进行多项式拟合,其他类似函数,如:lsqlin()不在讨论之列...
如何使matlab中曲线平滑?
有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv。其实原理应该都一样就是插值。下面是源程序,大家可以根据需要自行选择,更改拟合的参数。clc,clear;a = 1:1:6; %横坐标b = [8.0 9.0 10.0 15.0 35.0 40.0]; %纵坐标plot(a, b, 'b'); %自然状态的画图效果...
如何用matlab画出平滑曲线
数据间隔设置的小一点,曲线就平滑了。你试试这个:x=0:0.1\/pi:2*pi;y = sin(x);plot(x,y);绝对是平滑的曲线。
matlab 二维数据点 光滑曲线
根据二维数据点(x,y),用plot(x,y)画出曲线。如果你觉得不够光滑,那你就得利用二维数据点(x,y),由lsqcurvefit()或nlinfit()拟合出拟合函数,然后将x细分,求出相应的y值,再用plot(x,y)画出光滑曲线。
matlab绘制曲线,把几个点用曲线平滑过渡~
x1=[10,20,30,40,50];y1=[18.13286,81.2038,98.53712,223.075,264.4804];plot(x1,y1,'or');hold on;X = min(x1):.1:max(x1);Y = interp1(x1,y1,X,'cubic');plot(X,Y);hold off;
MATLAB怎么对一组无规律的X,Y坐标数据进行低通滤波平滑,从而绘制出一...
最简单的低通滤波也许是算术平均,plot(x,y(1:35),x,(y1+y2)\/2,x,(y(1:35)+y(2:36)+y(3:37))\/3)平滑效果很明显,见下图:
如何在matlab中用样条函数平滑曲线
也就是用插值方法,增加样点,用样条函数拟合,这样使得曲线平滑了 不是很平滑的曲线 x=1:5;y=1+x.^2+8*rand(1,length(x));plot(x,y,'b-');插值,增加x样点数 x1 = 1:0.1:5 用样条函数插值 y1=spline(x,y,x1);hold on;plot(x1,y1,'r-');(红线比蓝线平滑)...
如何用matlab画平滑的曲线
因你给出的已知点只有五个点,那么你可以考虑用样条插值法,在曲线上插入若干个值,得到三个分段n次多项式系数。实现过程如下:x=[。。。]y=[。。。]pp=spline(x,y)pp.coefs n1个分段n次多项式系数pp2=csaps(x,y,pp) 实现光滑拟合fnplt(pp2) 绘制样条曲线图 ...