求助:如何将离散的点用平滑曲线画出来?

fengbingchun
博客专家认证
2011-09-22 09:30:07
加精
有一些点,如x坐标为1,2,3...100;对应的y值为23,56,8,12,43,56,78,432,23,445...;总共有100个点对,如果直接连起来会很不平滑。
有什么办法可以得到平滑曲线呢,即得到新的对应的y值?matlab中有smooth函数可以实现此功能,如何用c++实现呢?
望高手指点,谢谢
...全文
6859 109 打赏 收藏 转发到动态 举报
写回复
用AI写文章
109 条回复
切换为时间正序
请发表友善的回复…
发表回复
azkabanNULL 2011-10-27
  • 打赏
  • 举报
回复
值得收藏
lzjdlsl 2011-09-30
  • 打赏
  • 举报
回复
不懂。看看学习下
zhoushunda960 2011-09-30
  • 打赏
  • 举报
回复
w250829594 2011-09-30
  • 打赏
  • 举报
回复
一堆强人!!!
ponydph 2011-09-29
  • 打赏
  • 举报
回复
如何保证生成的线通过所有的点?
owenmessy 2011-09-29
  • 打赏
  • 举报
回复
lz
好人
wwjing_82 2011-09-29
  • 打赏
  • 举报
回复
不是很懂进来学习
hotrice 2011-09-28
  • 打赏
  • 举报
回复
三次样条插值比较靠谱
mollyjh 2011-09-28
  • 打赏
  • 举报
回复
分段,最小二乘拟合,是个很好的主意啊!
NCT 2011-09-27
  • 打赏
  • 举报
回复
来学习了,同问
cnf 2011-09-27
  • 打赏
  • 举报
回复
mark: 滤波 曲线拟合 平滑
wangkv 2011-09-27
  • 打赏
  • 举报
回复
好东西啊
wangkv 2011-09-27
  • 打赏
  • 举报
回复
好东西啊
fgh201108 2011-09-27
  • 打赏
  • 举报
回复
gnuplot

plot 'filename' with line smooth cspline
zhoushunda960 2011-09-27
  • 打赏
  • 举报
回复
LZ还是没用SG滤波器啊?

其实稍微研究一下数值分析,就可以知道S-G滤波器绝对可以满足lz要求的。只要拟合多项式次数和窗口大小调整合适。

如果lz有啥不明白的可以联系我,我qq:13209460
SonicLing 2011-09-27
  • 打赏
  • 举报
回复

// 五点三次平滑
int Smooth5(int p2,int p1,int c,int n1,int n2)
{
return ( (-3 * p2) + (12 * p1) + (17 * c) + (12 * n1) + (-3 * n2) ) / 35;
}
fengbingchun 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 93 楼 zhoushunda960 的回复:]
LZ还是没用SG滤波器啊?

其实稍微研究一下数值分析,就可以知道S-G滤波器绝对可以满足lz要求的。只要拟合多项式次数和窗口大小调整合适。

如果lz有啥不明白的可以联系我,我qq:13209460
[/Quote]

没用呢,暂时用了个高斯滤波,但是有时效果不好,我下了个S-G滤波器的论文还没有看,到时还需联系你。
谢谢!
lmc158 2011-09-26
  • 打赏
  • 举报
回复
简单的就是三次样条插值

复杂一点的贝塞尔曲线

还有拉格朗日插值(你查Lagrange 插值多项式)

还可以用正交基组(比如正弦,余弦函数)插值


jiandingzhe 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 fengbingchun 的回复:]

也许我以前说的不清楚:
原始数据的图为:

平滑后的图为:


x坐标依次为0、1、2、3、4...一直到255,一个x坐标对应一个相应的y值,共256个点对。
用matlab的smooth函数即可实现,即平滑后的结果图。如果用c++该如何实现呢?
谢谢!
[/Quote]
这跟曲线平滑没什么关系。你需要的是一个滤波器。
首先做傅立叶变幻,然后扔掉高频的部分,然后反向傅立叶变幻变回来。
详情请自己找本数字信号的数看,或者搜索下FFT的介绍。
然后你可以找个FFT的C或者C++库。
baobeihai 2011-09-26
  • 打赏
  • 举报
回复
全然できないです、かわいそう
加载更多回复(84)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧