2013-07-16 98 views
0

我试图将非均匀数据重新网格化为在4维空间中定义的均匀网格。数据测量由功能d = f(xp,yp,zp,wp)给出,其中xpyp,zpwp是4-D坐标。我想重新网格非uniformaly隔开xpypzp,和wp到的xyz,和一个w均匀间隔的网格。通过卷积将非均匀采样数据网格化为均匀间隔的笛卡尔网格

为了便于交谈,让我们定义的网格化核函数是可分离寒凝内核的产品:

1/a(1+cos(2*pi*x/a)) 
1/b(1+cos(2*pi*y/b)) 
1/c(1+cos(2*pi*z/c)) 
1/d(1+cos(2*pi*w/d)) 

然后,我相信重新网格什么,我需要做的是执行4次d卷积并重新采样到统一网格上。但是,我不确定如何使用离散数据来实现这一点。我的问题如下:

1)我应该如何采样每个网格内核?例如,在计算离散卷积值时,是否应使用非统一的xp,yp,zpwp值?或者我应该使用统一间隔值x,y,zw?或者这些想法都不正确?

2)我怎样才能实现四维卷积?我想我可能需要使用四个for循环,但我不完全确定如何组织我的数据,即4维数据结构或简单地包含4列的矩阵?

我对最快的方法不感兴趣,但更多的是找到最直观或最直接的方法。

我相信我理解sinc插值和网格算法的基础知识。我读过多篇论文,包括J.D. O'Sullivan和J.I.的经典着作。杰克逊,讨论不同网格内核的属性和差异。我还阅读了MRI重建中使用网格化的一些论文,但大多数这些方法都假设了一个2-D网格。

我不知道如何以离散的方式实际实现该方法,最好在Matlab或C++中,甚至更困惑如何在四个维度实现这样的事情。

我看了几个线程,我的问题有点类似于这些,但是我想使用与一般内核的卷积,而不是线性插值,并且这些都没有真正提示如何组织4-D数据或进行卷积:

Python 4D linear interpolation on a rectangular grid

Python 4D linear interpolation on a rectangular grid

感谢您的任何意见,见解或建议!

+0

@horchler:你还在寻找这个问题的答案吗? – KDN

+0

@KDN:这不是我的问题。我只是编辑它来清理格式和排版。无论事后多久,欢迎您随时在StackOverflow上发布新的答案。 OP是否会看到并认识到它是有用的是另一回事,但其他人可能会在未来数年。 – horchler

回答

0

您可以使用interpn功能吗?

[X Y Z W]=ndgrid(x,y,z,w); % unequally spaced 
[XR YR ZR WR]=ndgrid(x_regular,y_regular,z_regular,w_regular); % equally spaced 
volume=interpn(X,Y,Z,W,d,XR,YR,ZR,WR); 

interpnndgrid的文档提供更多的细节;他们的用法会给你一个如何构建d的框架。

编辑:哦对不起抱歉,我看到你的意见不希望在发布后使​​用插值。

嗯,你可以使用插值如上你的价值观定位到网格线,然后用

volume=convn(volume,general_kernel); 

进行卷积你的内核值是多少?

+0

谢谢休,这是一个好主意,并给了我一些追求。我已经考虑过你的评论的最重要部分,但没有想到要添加convn。我将花一些时间思考和实施这个方法,并将回写我发现的内容。 –