我有一个面具A,其大小为64 * 64 * 40倍。掩模A中体素的值为0或1.A中非零体素的数量为43193.有两个数组,B和C. B代表位置(线性指数),其大小为500 * 1 double 。 C代表值(得分值),其大小也是500 * 1的两倍。 B代表C中C的线性索引位置。现在我做了如下事情:
[coords] = convert_pat_idx_to_mask_coords(A, B);
%%% convert the location array B to the location in mask A.
%%% coords=500*3 double, the first column is location X; the second column
%%% is location Y; the third column is location Z.
A(sub2ind(size(A), coords(:,1),coords(:,2), coords(:,3)))= C;
我所做的是将数组C的值分配给掩码A的相应位置,并且A中其他(43193-500)个体素的值仍为1.
但我没有意识到我的目的。我的目的是创建一个新的掩模D,其大小也是64 * 64 * 40,与A相同。但是掩模D中只有500个体素是1,所有其他(43193 - 500 = 42693)体素都是有人能给我一个帮助吗?
答案 0 :(得分:1)
这将创建一个数组D
,该数组仅在B
中列出的索引处具有非零值。你的问题措辞非常混乱,但我相信你想要的是什么。如果没有,请澄清您的问题。
如果是这样的话:
D = zeros(size(A));
D(B) = 1;
您应该考虑使用稀疏数组,具体取决于您使用这些掩码做了什么。