3D曲线拟合

2024-03-10

我有离散的规则网格a,b点及其对应的c值,我进一步对其进行插值以获得平滑的曲线。现在,根据插值数据,我还想创建一个用于曲线拟合的多项式方程。如何用多项式拟合 3D 图?

我尝试在 MATLAB 中执行此操作。我使用 MATLAB (r2010a) 中的曲面拟合工具箱对 3 维数据进行曲线拟合。但是,如何在 MATLAB/MAPLE 或任何其他软件中找到最适合一组数据的公式。有什么建议吗?最有用的还有一些可供查看的真实代码示例、PDF 文件、网络等。

这只是我的数据的一小部分。

a = [ 0.001 .. 0.011];

b = [1, .. 10];

c = [ -.304860225, .. .379710865]; 

提前致谢。


要将曲线拟合到一组点上,我们可以使用普通最小二乘 https://en.wikipedia.org/wiki/Ordinary_least_squares回归。有一个解决方案页面 http://www.mathworks.com/support/solutions/en/data/1-1AVW5/MathWorks 描述了该过程。

作为示例,让我们从一些随机数据开始:

% some 3d points
data = mvnrnd([0 0 0], [1 -0.5 0.8; -0.5 1.1 0; 0.8 0 1], 50);

As @BasSwinckels https://stackoverflow.com/a/18552769/97160表明,通过构建所需的设计矩阵 https://en.wikipedia.org/wiki/Design_matrix, 您可以使用mldivide http://www.mathworks.com/help/matlab/ref/mldivide.html or pinv http://www.mathworks.com/help/matlab/ref/pinv.html to 解决超定系统 http://www.mathworks.com/help/matlab/math/systems-of-linear-equations.html#f4-2064表示为Ax=b:

% best-fit plane
C = [data(:,1) data(:,2) ones(size(data,1),1)] \ data(:,3);    % coefficients

% evaluate it on a regular grid covering the domain of the data
[xx,yy] = meshgrid(-3:.5:3, -3:.5:3);
zz = C(1)*xx + C(2)*yy + C(3);

% or expressed using matrix/vector product
%zz = reshape([xx(:) yy(:) ones(numel(xx),1)] * C, size(xx));

接下来我们可视化结果:

% plot points and surface
figure('Renderer','opengl')
line(data(:,1), data(:,2), data(:,3), 'LineStyle','none', ...
    'Marker','.', 'MarkerSize',25, 'Color','r')
surface(xx, yy, zz, ...
    'FaceColor','interp', 'EdgeColor','b', 'FaceAlpha',0.2)
grid on; axis tight equal;
view(9,9);
xlabel x; ylabel y; zlabel z;
colormap(cool(64))

如前所述,我们可以通过向自变量矩阵添加更多项来获得高阶多项式拟合(A in Ax=b).

假设我们想要拟合一个具有常数项、线性项、交互项和平方项 (1, x, y, xy, x^2, y^2) 的二次模型。我们可以手动执行此操作:

% best-fit quadratic curve
C = [ones(50,1) data(:,1:2) prod(data(:,1:2),2) data(:,1:2).^2] \ data(:,3);
zz = [ones(numel(xx),1) xx(:) yy(:) xx(:).*yy(:) xx(:).^2 yy(:).^2] * C;
zz = reshape(zz, size(xx));

还有一个辅助功能x2fx http://www.mathworks.com/help/stats/x2fx.html在统计工具箱中,有助于构建几个模型阶数的设计矩阵:

C = x2fx(data(:,1:2), 'quadratic') \ data(:,3);
zz = x2fx([xx(:) yy(:)], 'quadratic') * C;
zz = reshape(zz, size(xx));

终于有一个很棒的功能了polyfitn http://www.mathworks.com/matlabcentral/fileexchange/34765-polyfitnJohn D'Errico 的文件交换允许您指定所涉及的各种多项式阶数和项:

model = polyfitn(data(:,1:2), data(:,3), 2);
zz = polyvaln(model, [xx(:) yy(:)]);
zz = reshape(zz, size(xx));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3D曲线拟合 的相关文章

  • 带 if 语句的可向量化 FIND 函数 MATLAB

    我有一个矩阵u 我想遍历所有行和所有列并执行以下操作 如果元素非零 我返回行索引的值 如果元素为零 则查找该元素之后的下一个非零元素的行索引 我可以使用两个带有 find 函数的 for 循环轻松完成此操作 但我需要多次执行此操作 不是因为
  • 如何在Matlab脚本中将泰勒级数系数存储到数组中

    这个问题是在 m 脚本的上下文中 我知道如何获取函数的泰勒级数 但我没有看到任何命令允许将级数的系数存储到数组中 sym2poly似乎不起作用 如何将系数存储到数组中 例如这个函数 syms x f 1 x 2 4 x 9 我们怎样才能得到
  • MATLAB 在 MATLAB 7.10.0 学生版中似乎找不到 csaps()

    我有一些代码使用csaps Matlab的三次平滑样条拟合函数 http www mathworks com help toolbox curvefit csaps html我想将其提供给使用 MATLAB 7 10 0 R2010a 的学
  • MATLAB 是否已有 YAML 库/解析器?

    我想使用 YAML 跨多种语言交流一些数据 将其视为 与语言无关的序列化 其中一种语言是 MATLAB 但我似乎找不到该语言的 YAML 库 我在 Google 上检查了 matlab yaml 和 matlab yaml parse 似乎
  • polyfit numpy 的反向输出

    我使用了 numpy 的 polyfit 并获得了两个数组 x 和 y 的非常好的拟合 使用七阶多项式 我的关系是这样的 y x p 0 x 7 p 1 x 6 p 2 x 5 p 3 x 4 p 4 x 3 p 5 x 2 p 6 x 1
  • 如何建立数据流挖掘的滑动窗口模型?

    我们遇到的情况是 流 来自传感器的数据或服务器上的点击流数据 采用滑动窗口算法 我们必须将最后 例如 500 个数据样本存储在内存中 然后 这些样本用于创建直方图 聚合并捕获有关输入数据流中异常的信息 请告诉我如何制作这样的滑动窗 如果您询
  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • 如何获取活动对象 MATLAB GUI 的句柄

    我正在尝试使用 MATLAB GUI 创建日历 我有两个Edit Text对象 edittext1 and edittext2 我想做这个 我把光标放在edittext1然后在日历中选择日期 它会进入文本字段edittext1 同样对于ed
  • 在 C/C++ 中调用 MATLAB API

    我刚刚从某处听说 对于数值计算 MATLAB 确实提供了一些用户友好的 API 如果你在 C C 代码中调用这些 API 你可以显着加快计算速度 但我在MATLAB文档中没有找到这样的信息 例如http www mathworks com
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 这是 `min` 和 `nanmin` 之间的区别; Matlab 中的“max”和“nanmax”?

    Matlab描述nanmin and nanmax像这样 NANMIN最小值 忽略NaNs NANMAX最大值 忽略NaNs 但实际上 min and max ignore NaNs too 那我应该使用哪个 根据我的测试 nanmin a
  • MATLAB:比较两个不同长度的数组

    我有两个长度不同的数组 由于采样率不同 需要比较 我想对较大的数组进行下采样以匹配较小的数组的长度 但是该因子不是整数而是小数 举个例子 a 1 1 375 1 75 2 125 2 5 2 875 3 25 b 1 2 3 有什么方法可以
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R

随机推荐

  • 将 GeoDataFrame 多边形转换为 kml 文件

    我有一个 geopandas GeoDataFrame 其中包含各种多边形和颜色 我用它来绘制气象数据 我问的另一个问题here https stackoverflow com questions 35516318 plot colored
  • JS 代理 HTML5 画布上下文

    我希望代理画布 API 这样我就可以测试抽象方法是否确实绘制到画布上 但是我遇到了代理后出现错误的问题 strokeStyle setter called on an object that does not implement inter
  • 相对于页面滚动背景

    这是我第一次使用 Stack Overflow 所以如果我的问题有点冗长 我深表歉意 我有点为难 我想创建这种视差滚动效果 其中背景图像 其高度大于窗口的高度 始终与页面上的进度直接相关地滚动 例如 当您向下滚动页面 25 时 背景图像应该
  • 如何使用 JavaScript 在 IE 6 7 8 9 中分离事件

    这是部分代码 不是完整版本 我有一个荧光笔 可以在以下情况下突出显示特定的 html 元素 鼠标悬停 我也有一个点击事件和监听器 我的问题是 荧光笔事件 侦听器使用 Internet Explorer v6 v7 v8 v9 时不分离 我究
  • 始终在非视网膜显示屏上使用的图像的视网膜版本

    In Cocoa application I ve got 16x16 and 32x32 2x version of an image When the image is displayed in NSImageView Mac OS X
  • MongoDb:避免过多的磁盘空间

    我有一个已分配85GB空间的数据库 我使用 show dbs 命令获得了这个大小 但是当我使用 db stats 时 我得到的存储大小为 63GB 查看文档后 我发现 dat mongo db 为创建的数据库分配了一个大小 然后填充了实际数
  • 使用 Play 核心库验证非 Google Play 应用安装

    一些背景 我们大多数人可能都遇到过这样的情况ResourceNotFoundException当我们迁移到安卓应用程序包释放方法 很明显 问题是由于侧面加载应用程序造成的 参考这里 https stackoverflow com quest
  • 我可以在编辑器编辑器中自定义标题标签(h1,h2,h3 ...)吗?

    我使用了 redactor 编辑器的插件来更改文本的字体大小和字体颜色 除了标题之外 它在其他标签中工作正常 不明白为什么 我试过这个 redactor redactor focus true plugins fontcolor fonts
  • 如何使用 ElementRef 和 Renderer2 将角度指令分配给 html 元素?

    我正在 Angular 6 中开发拖放应用程序 在拖放操作中 我正在动态创建新的 HTML 元素 DIV textarea 等元素 并为其分配样式 属性 默认 x 和 y 坐标通过使用应用程序的 ElementRef 和 Renderer2
  • DatabaseGenerateOption.Identity 不生成 Id

    使用 EntityFramework 代码优先 我创建了一个简单的Foo桌子 这是我的实体 public class Foo DatabaseGenerated DatabaseGeneratedOption Identity public
  • 如何解决 django.db.utils.IntegrityError: (1364,“字段‘名称’没有默认值”)

    我在尝试为 Django 项目创建超级用户时收到此错误 不确定哪个表需要默认值 name column 为我的 Django 项目成功创建迁移后 我运行了python manage py createsuperuser创建超级用户并得到以下
  • 以编程方式在 Eclipse 中导入库

    有没有办法以编程方式将库 Jar 文件 放入 Eclipse 项目中 到目前为止 我已经成功地使用以下命令以编程方式对其进行了外部引用 IPath path new Path C myfolder mylibrary jar librari
  • 如何将 ggplot2 grobs 与数据关联起来?

    例如 给定一个点的 ggplot 您如何找出给定点对应的数据行 样例图 library ggplot2 p lt ggplot mtcars aes mpg wt geom point facet wrap gear 我们可以得到包含点的
  • EXC_BAD_ACCESS绘制阴影

    我试图向我的 UIView 添加阴影 但在我的 drawRect 方法中我得到了 EXC BAD ACCESS 我用的是ARC void drawRect CGRect rect CGColorRef lightColor UIColor
  • cakephp 模型关联/与同一张表连接[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一张包含父母和孩子的桌子 我希望
  • Spring Security:@PreAuthorize仅与@RequestMapping一起使用

    我有一个 Spring MVC 控制器 想使用 Spring Method Security 来保护它 在下面的例子中it works RequestMappingand PreAuthorize注释相同的方法 Controller pub
  • CoordinatorLayout 不工作

    我正在尝试实施一个CoordinatorLayout从新公布的Android 设计支持库 http android developers blogspot co uk 2015 05 android design support libra
  • 根据相关模型使用查询参数进行过滤

    我正在尝试根据相关模型过滤集合 我已经尝试了多种方法 但无法使其工作 App BetroundStatsController Ember ArrayController extend needs betround queryParams q
  • WCF 请求处理线程是否敏捷?

    我看过很多关于敏捷 Asp Net 请求处理如何的文档 我想知道 WCF 请求处理的情况是否相同 我们可以相信启动 Wcf 请求处理的线程将完成它吗 我正在维护一个 Wcf 应用程序 其中很多地方都使用 ThreadStatic 变量 虽然
  • 3D曲线拟合

    我有离散的规则网格a b点及其对应的c值 我进一步对其进行插值以获得平滑的曲线 现在 根据插值数据 我还想创建一个用于曲线拟合的多项式方程 如何用多项式拟合 3D 图 我尝试在 MATLAB 中执行此操作 我使用 MATLAB r2010a