24小时热门版块排行榜    

CyRhmU.jpeg
查看: 4548  |  回复: 2

xiashaoyan

新虫 (正式写手)

[求助] MATLAB 使用interp2函数时,报错The grid vectors do not define a grid of point已有1人参与

现在使用interp2进行插值,但是出现报错,看了半天也不知道哪儿有错误,请教各位虫友,运行的语句为
Iorig_max=1000,Jorig_max=999,dx=2,dy=3,im_orig是一个1000*999的矩阵
[im_origX,im_origY] = meshgrid(1:Iorig_max,1:Jorig_max);
[im_compX,im_compY] = meshgrid(1:dx:Iorig_max,1:dy:Jorig_max);

然后运行下面语句就出错了im_comp = interp2(im_origX,im_origY,im_orig,im_compX,im_compY,'linear'),报错结果为:

Error using griddedInterpolant
The grid vectors do not define a grid of points that match the given values.

Error in interp2>makegriddedinterp (line 211)
    F = griddedInterpolant(varargin{:});

Error in interp2 (line 134)
        F = makegriddedinterp(X, Y, V, method,extrap);

Error in pm_explicit (line 60)
im_comp = interp2(im_origX,im_origY,im_orig,im_compX,im_compY,'linear');

报错的意思好像是没有定义一个点与一致值匹配,但是我有点不理解,这个哪儿不匹配呢?甚至不解。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
xiashaoyan: 金币+5, ★★★★★最佳答案 2015-07-15 17:17:25
[im_origX,im_origY] = meshgrid(1:Iorig_max,1:Jorig_max);
meshgrid命令仔细看看。你生成的im_origX是999×1000,实际上是把X坐标(1:1000)作为行向量复制了999次(Y方向向量长度),而将Y坐标(1:999)作为列向量复制了1000次,建议将X坐标改为1:999,Y改为1:1000。
知其然,知其所以然。
2楼2015-07-15 14:31:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiashaoyan

新虫 (正式写手)

引用回帖:
2楼: Originally posted by mygt_hit at 2015-07-15 14:31:24
= meshgrid(1:Iorig_max,1:Jorig_max);
meshgrid命令仔细看看。你生成的im_origX是999×1000,实际上是把X坐标(1:1000)作为行向量复制了999次(Y方向向量长度),而将Y坐标(1:999)作为列向量复制了1000次,建议将X坐 ...

我明白了,谢谢楼主的分析哈
3楼2015-07-15 17:17:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiashaoyan 的主题更新
信息提示
请填处理意见