matlab将一组数据画成曲线,matlab怎么在一幅图上画多个曲线
如何用matlab画平滑的曲线?
方法一:转自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('右边:处理后的曲线');
如何在matlab同一个图形上绘制多条曲线?
1、首先,随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。方法如下:
x1=10+5*rand(500,1);
x2=23+15*rand(500,1);
x3=38+20*rand(500,1);
2、下面,要分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行操作,分别用三个plot进行绘图,结果如下:
plot(x1,'r');
plot(x2,'b');
plot(x3,'g');
3、可以看到,图中只有一条曲线,并没有其他两条曲线。这是因为后面plot的语句画的图会将前面plot画的图覆盖掉。因此需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句holdon,即可将该图保留,使它不被后面的图所覆盖,具体语法如下:
plot(x1,'r');
holdon
plot(x2,'b');
holdon
plot(x3,'g');
这样就可以将三条曲线画在一张图上,为了区别,要分别给这三条曲线定义不同的颜色,
4、为了图的美观,可以用gridon添加网格线,还需要添加横纵坐标轴标题。方法如下:
xlabel('样本序列');
ylabel('值');
5、除此之外,因为画的是多条曲线,因此还需要添加图例,语法如下:
legend('变量1','变量2','变量3')
括号里面按照画图的顺序分别写每条曲线代表的意义即可,
6、完成效果图。
如何用matlab将一组数据转化成曲线
可以直接画点,如果采样比较密就近似认为是曲线;
或者通过曲线拟合,得到你认为的阶次曲线;
polyfit--由数据点进行曲线拟合,可以指定拟合曲线的阶次;输出就是函数多项式的系数,然后再画图就行了。
看下帮助,有例子的。