我有一个数据点的向量,这些数据点是由其他程序从3D数组保存在一个大列表中的。向量是nk个元素的长度。nk = nx* ny *nz,其中nx、ny和nz是原始3D阵列的尺寸。
将原始数组中数据点的位置存储在(nk×3)数组中,每行( position (k,:))给出相应数据点的(i,j,k)位置。
我不能在我的数据数组上使用重塑,因为位置向量并不简单(它取决于数据是如何生成的-它不是完全随机的-但我不一定事先知道它是什么样子的)。
如果nk向量称为'data',nk x 3位置数组称为' position‘,输出数组称为'data_reshaped’,那么目前我正在执行以下操作:
for k = 1:nk
data_reshaped(position(k,1),position(k,2),position(k,3)) = data(k);
end这真的很慢--有没有更快的方法,而又不太了解“位置”是什么样子的?
发布于 2013-06-05 00:31:40
您可以使用sub2ind函数:
data_reshaped = zeros(nx, ny, nz);
data_reshaped( sub2ind([nx ny nz], position(:,1), ...
position(:,2), ...
position(:,3)) ) = data;https://stackoverflow.com/questions/16922908
复制相似问题