Matlab将散点绘制为平滑曲线的两种方法
2015-09-26 22:32
711 查看
自然状态下,用plot画的是折线,而不是平滑曲线。
有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv,其实原理应该都一样就是插值。下面是源程序,大家可以根据需要自行选择,更改拟合的参数。
clc,clear;
a = 1:1:6; %横坐标
b = [8.0 9.0 10.0 15.0 35.0 40.0]; %纵坐标
plot(a, b, 'b'); %自然状态的画图效果
hold on;
%第一种,画平滑曲线的方法
c = polyfit(a, b, 2); %进行拟合,c为2次拟合后的系数
d = polyval(c, a, 1); %拟合后,每一个横坐标对应的值即为d
plot(a, d, 'r'); %拟合后的曲线
plot(a, b, '*'); %将每个点 用*画出来
hold on;
%第二种,画平滑曲线的方法
values = spcrv([[a(1) a a(end)];[b(1) b b(end)]],3);
plot(values(1,:),values(2,:), 'g');
效果:
个人感觉后一种方法要好一些
有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv,其实原理应该都一样就是插值。下面是源程序,大家可以根据需要自行选择,更改拟合的参数。
clc,clear;
a = 1:1:6; %横坐标
b = [8.0 9.0 10.0 15.0 35.0 40.0]; %纵坐标
plot(a, b, 'b'); %自然状态的画图效果
hold on;
%第一种,画平滑曲线的方法
c = polyfit(a, b, 2); %进行拟合,c为2次拟合后的系数
d = polyval(c, a, 1); %拟合后,每一个横坐标对应的值即为d
plot(a, d, 'r'); %拟合后的曲线
plot(a, b, '*'); %将每个点 用*画出来
hold on;
%第二种,画平滑曲线的方法
values = spcrv([[a(1) a a(end)];[b(1) b b(end)]],3);
plot(values(1,:),values(2,:), 'g');
效果:
个人感觉后一种方法要好一些
相关文章推荐
- Matlab注释
- Matlab 图像处理-哈夫曼编码(huffman)
- MATLAB cell & struct
- matlab(7) Regularized logistic regression : mapFeature(将feature增多) and costFunctionReg
- matlab(6) Regularized logistic regression : plot data(画样本图)
- Matlab & Mathematica 解符号方程组
- 在实验中训练样本的选择和matlab代码展示(自己在实验中的亲身的经历)
- matlab save -v7.3 速度较慢及解决方式
- Matlab & Mathematica 向量(行,列) 矩阵
- matlab中的sum函数的用法
- Matlab中判断文件是否为空
- MATLAB中squeeze函数的作用
- Ubuntu14.04+搜狗输入法+Cuda+opencv3.0+matlab2014b+mkl+caffe 安装
- MATLAB:镜像图片
- 特征点检测效果评估(matlab代码)
- Matlab:max函数
- MATLAB R2014b 的安装破解
- matlab生成opencv需要的xml文件
- MATLAB使用技巧
- ubuntu下安装Matlab2014及破解