2012-08-26 3 views
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: глубина).

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 

У кого-нибудь есть предложения по улучшению этого кода ??

+0

вы спрашиваете, как можно вообще изменить значение одной строки, или вы просите о помощи с этим точным алгоритмом? – slayton

+0

Да, я спросил о правильном коде, чтобы делать то, что я хочу делать. Я хочу использовать выше код для работы от h = 3: глубина (не h = 1: глубина) –

+0

Я не понимаю, что вы имеете в виду, когда говорите, что опубликованный код не работает. Я запустил его на своей машине, и он выполняется без каких-либо ошибок. – slayton

ответ

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?? 
Смежные вопросы