gpt4 book ai didi

matlab - 使用另一个位置矩阵将一维向量的元素放入 3D 矩阵

转载 作者:行者123 更新时间:2023-12-04 04:54:43 26 4
gpt4 key购买 nike

我有一个数据点向量,它是由一个大列表中的其他程序从 3D 数组中保存的。向量是 nk 个元素长。 nk = nx*ny*nz 其中 nx、ny 和 nz 是原始 3D 数组的维度。

原始数组中数据点的位置存储在 (nk x 3) 数组中,每行 (position(k,:)) 排列给出相应数据点的 (i,j,k) 位置。

我不能在我的数据数组上使用 reshape ,因为位置向量并不简单(它取决于与数据生成方式有关的一些事情 - 它不是完全随机的 - 但我不一定知道它是什么样子事先)。

如果 nk 向量称为“数据”,则 nk x 3 位置数组称为“位置”,输出数组称为“data_reshape”,那么目前我正在执行以下操作:

for k = 1:nk
data_reshaped(position(k,1),position(k,2),position(k,3)) = data(k);
end

这真的很慢 - 是否有一些更快的方法而不太了解“位置”的样子?

最佳答案

您可以使用 sub2ind 功能:

data_reshaped = zeros(nx, ny, nz);
data_reshaped( sub2ind([nx ny nz], position(:,1), ...
position(:,2), ...
position(:,3)) ) = data;

关于matlab - 使用另一个位置矩阵将一维向量的元素放入 3D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16922908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com