如何使用Matlab获取此掩码?

时间:2014-12-29 01:46:54

标签: matlab

我有一个面具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)体素都是有人能给我一个帮助吗?

1 个答案:

答案 0 :(得分:1)

这将创建一个数组D,该数组仅在B中列出的索引处具有非零值。你的问题措辞非常混乱,但我相信你想要的是什么。如果没有,请澄清您的问题。 如果是这样的话:

D = zeros(size(A));
D(B) = 1;

您应该考虑使用稀疏数组,具体取决于您使用这些掩码做了什么。