0

我在特定“深度”中更改值矩阵时遇到问题

R = 6;
C = 12;
depth = 6

for j=1:depth;
    result(:,:,j)=randint(R,C,[0 2])
    for i=1:R,
        A(i,:,j)=randperm(C);
    end
end

我目前使用的以下代码,但此代码仅在第 1 深度时仍有效。然后,我希望我的代码可以从第 3 个深度(h=3:depth)开始工作。

for h=3:depth;       
    idx = bitand(A(:,:,h)>= 1, A(:,:,h)<= 4); 
    result([false(size(idx,1),1) idx(:,1:end-1)]) = 3
    result(idx)=1
end

有人有改进该代码的建议吗?

4

1 回答 1

1

这个问题很模糊。如果您只想知道 3D 索引是如何工作的,您可以使用以下代码:

%# Construct A and result.
result = rand(R, C, depth);
A = 10 * rand(R, C, depth);

idx = (A >= 1) & (A <= 3);
result([false(size(A, 1), 1, size(A, 3)) idx(:,1:end-1,:)]) = 1; %# or 3??
于 2012-08-26T20:25:32.217 回答