这里待拟合的螺线我们选择阿基米德螺线,对数螺线类似。
螺线的笛卡尔坐标系方程为:
 
螺线从笛卡尔坐标转为极坐标方程为:
 
阿基米德螺线在极坐标系下极径r和极角theta为线性关系,方程为:
 
计算步骤如下:
1.通常我们首先得到螺线在笛卡尔坐标下的一些点x,y。
2.然后根据x,y计算出r和theta。
3.最后拟合的目标就是计算出a和b,这一步可以用最小二乘。
 
拟合结果:
下图蓝色线为原始线(这里可能看不到),红色线为拟合线,红色点为测量点。
放大看一下:
不过有时候拟合也会失败(这时候就可以祭出ransac大法了):
matlab代码如下:
clear all;
close all;
clc; %%生成阿基米德螺线
a=6.34;
b=4.23;
theta=:0.01:*pi;
r = a+b*theta; x = r.*cos(theta);
y = r.*sin(theta);
plot(x,y,'b') %%生成待拟合数据
ind = randperm(length(x),);
dat=[x(ind)' y(ind)'] + rand(,)/;
hold on;
plot(dat(:,),dat(:,),'r.'); T = atan(dat(:,)./dat(:,));
R = sqrt(dat(:,).^+dat(:,).^); %%因为T是周期为pi循环数列,因此需要根据不同圈数加pi
D=[R T];
D=sortrows(D);
E=D;
n = ;
for i=:length(D)
if D(i,)-D(i-,)< && D(i,)<
n=n+;
end
E(i,) = E(i,) + n*pi;
end X = [E(:,) ones(length(dat),)];
Y = E(:,);
C = inv(X'*X)*X'*Y; theta=:0.01:*pi;
r = C()+C()*theta;
x = r.*cos(theta);
y = r.*sin(theta);
plot(x,y,'r') %%生成对数螺线
a=1.34;
b=2.23;
theta=:0.01:*pi;
r = a*exp(b*theta/); x = r.*cos(theta);
y = r.*sin(theta);
figure;
plot(x,y) ind = randperm(length(x),);
dat=[x(ind)' y(ind)'] + rand(,)/;
hold on;
plot(dat(:,),dat(:,),'r.');

最后还生成了对数螺线,大家可以自行尝试拟合一下哈。

matlab练习程序(螺线拟合)的更多相关文章

  1. 基于MATLAB的多项式数据拟合方法研究-毕业论文

    摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...

  2. MATLAB之数据处理+公式拟合

    MATLAB之数据处理+公式拟合 前言:由试验得到一组数据,对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式. 试验数据背景 本次试验有三个自变量:V.M.G,因变量为F,每组试验重复 ...

  3. MATLAB实例:多元函数拟合(线性与非线性)

    MATLAB实例:多元函数拟合(线性与非线性) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多请看:随笔分类 - MATLAB作图 之前写过一篇博 ...

  4. matlab练习程序(SUSAN检测)

    matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像 ...

  5. (转)matlab练习程序(HOG方向梯度直方图)

    matlab练习程序(HOG方向梯度直方图)http://www.cnblogs.com/tiandsp/archive/2013/05/24/3097503.html HOG(Histogram o ...

  6. MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)

    MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在MATLAB中“fitgmdis ...

  7. matlab练习程序(最小二乘多项式拟合)

    最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错. 因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料. 这个文档介绍的还不错,我估计任何一本 ...

  8. matlab示例程序--Motion-Based Multiple Object Tracking--卡尔曼多目标跟踪程序--解读

    静止背景下的卡尔曼多目标跟踪 最近学习了一下多目标跟踪,看了看MathWorks的关于Motion-Based Multiple Object Tracking的Documention. 官网链接:h ...

  9. matlab练习程序(透视投影,把lena贴到billboard上)

    本练习程序是受到了这个老外博文的启发,感觉挺有意思,就尝试了一下.他用的是opencv,我这里用的是matlab. 过去写过透视投影,当时是用来做倾斜校正的,这次同样用到了透视投影,不过更有意思,是将 ...

随机推荐

  1. 43.QT-访问远程SQLite数据库

    在上章42.QT-QSqlQuery类操作SQLite数据库(创建.查询.删除.修改)详解学习了如何操作SQLite,本章来学习如何访问远程SQLite 1.首先设置共享,映射(用来实现远程访问) 将 ...

  2. Dockerfile编写

    Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建编写命令: 1.FROM作用:声明使用哪个基础镜像格式:FROM IMA ...

  3. Maven简介与使用

    Maven介绍 Maven是项目管理工具,对软件项目提供构建与依赖管理 Mavan是Apache下的Java开源项目 Mavan为Java项目提供了统一的管理方式,已成为业界标准 Maven核心特性 ...

  4. log file switch (checkpoint incomplete) - 容易被误诊的event

    本文转自 https://blogs.oracle.com/database4cn/log-file-switch-checkpoint-incomplete-%e5%ae%b9%e6%98%93%e ...

  5. Docker 运行应用程序

    一.docker run 镜像 执行的命令 docker run组合来运行一个容器:镜像文件不存在的话,会自动拉取(下载): 下图执行的命令的具体意思:docker 以ubuntu:15.10镜像创建 ...

  6. 新版Notepad++加十六进制查看的插件HexEditor

    Notepad++新版虽然去掉了在线插件商店功能,但是依然可以使用自定义插件 Notepad++下载地址 腾讯(请务必点普通下载):https://pc.qq.com/detail/0/detail_ ...

  7. 用 Python 图像识别打造一个小狗分类器

    ​ 项目介绍 小狗分类器可以做什么? 通过这个分类器,你只需要上传照片,就可以得到小狗的品种,以及更多的信息. 这就是所谓的「机器学习」,让机器自己去“学习”.我们今天要做的这个分类任务,是一个“监督 ...

  8. IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1

    表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面.通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理.在表单中提供了多种输入方式,包括文本输入域. ...

  9. 巧妙利用label标签实现input file上传文件自定义样式

    提到上传文件,一般会想到用input file属性来实现,简单便捷,一行代码即可    但input file原生提供的默认样式大多情况下都不符合需求,且在不同浏览器上呈现的样式也不尽相同   我们往 ...

  10. 【xmind】 使用 Java 生成思维导图

    前言 在日常的工作与学习中,我们经常会使用思维导图这个工具,来把抽象而又无形的思考转换成有形并且具体的图像,是理清思路,梳理逻辑的一大神器. 准确的说,思维导图并不是一个具体的工具,而是一种方法.是道 ...