MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1243|回复: 3|关注: 0

[已解决] Matlab的griddata函数如何用C++代码实现?

[复制链接]

新手

17 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
  1. function new_data = hole_filling(ori_data)
  2. x = ori_data(1,:);
  3. y = ori_data(2,:);
  4. z = ori_data(3,:);
  5. % [X, Y, Z] = griddata(x,y,z,linspace(min(x),max(x)),linspace(min(y),max(y)),'cubic');
  6. [X, Y, Z] = griddata(x,y,z,[min(x):0.5:max(x)]',[min(y):0.5:max(y)],'cubic');
  7. new_data = zeros(size(Z,1)*size(Z,2),3);
  8. for i = 1:size(Z,1)
  9.     for j = 1:size(Z,2)
  10.         if ~(isnan(Z(i,j)))
  11.             new_data((i-1)*size(Z,2)+j,3) = Z(i,j);
  12.             new_data((i-1)*size(Z,2)+j,1) = X(i,j);
  13.             new_data((i-1)*size(Z,2)+j,2) = Y(i,j);
  14.         end
  15.     end
  16. end
  17. new_data(find(new_data(:, 3)==0), :) = [];
复制代码
这是我需要实现的插值方法,其实本质上就做了一个griddata,现在在C++上需要做一个demo软件实现这个函数。

我知道griddata的本质就是用曲线拟合散点,然后在XI,YI处取Z值,但是在C++代码上该怎么做呢?

我试过用mex,mbuild将我的函数编译成h,dll,lib。
  1. extern LIB_hole_filling_C_API
复制代码

但是这个mlx******的函数的参数我也不会从opencv::Mat格式的矩阵里传进去。
希望有大神可以教我一下怎么使用C++实现Matlab的griddata函数。

论坛优秀回答者

入门

366 麦片

财富积分


50500


0

主题

2633

帖子

86

最佳答案
  • 关注者: 41
发表于 2017-8-18 21:38:14 来自手机 | 显示全部楼层
zwh469338552 发表于 2017-8-18 21:05
这是我需要实现的插值方法,其实本质上就做了一个griddata,现在在C  上需要做一个demo软件实现这个函数。
...

也是一样的,需要按照算法思路来做
来自: 微社区

新手

17 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
 楼主| 发表于 2017-8-21 19:33:44 | 显示全部楼层
Angla2016 发表于 2017-8-18 21:38
也是一样的,需要按照算法思路来做

如果我想使用C++中调用Matlab function的方法,mxArray**该怎么传进去呢?
  1. mxArray* xOri = mxCreateDoubleMatrix(cloud->size(), 3, mxREAL);
复制代码

只能生成一维的mxArray

论坛优秀回答者

入门

366 麦片

财富积分


50500


0

主题

2633

帖子

86

最佳答案
  • 关注者: 41
发表于 2017-8-21 19:54:38 来自手机 | 显示全部楼层 |此回复为最佳答案
zwh469338552 发表于 2017-8-21 19:33
如果我想使用C  中调用Matlab function的方法,mxArray**该怎么传进去呢?

只能生成一维的mxArray ...

没这样干过,不晓得哦
你以为会省事,实际上
来自: 微社区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表