2013-12-08 6 views

ответ

3
A = [ 1, 2, 4, 8]; 
B = false(1,A(end)); 
B(A) = true; 

возвращается:

B = 

    1  1  0  1  0  0  0  1 

и факультативные: B = double(B), если вам это нужно, как двойников.

или:

B = zeros(1,A(end)); 
B(A) = 1; 

однако.

+0

Почему вы инициализируете 'B'' numel (A) '? В приведенном примере вы бы инициализировали вектор 1x4, который не был спрошен. Просто 'B (A) = true' или' B (A) = 1' достаточно. – carandraug

+0

@ carandraug: 'numel (A)' это вздор, это правильно. Но я бы сохранил инициализацию, чтобы убедиться, что все остальные значения '0' /' false' – thewaywewalk

+0

все остальные значения по умолчанию ложны или ноль, вам не о чем беспокоиться. Если вы действительно хотите инициализировать 'B', который, как мне кажется, вам не нужно (присвоение значений другим индексам ** является ** инициализацией), используйте' max (A (:)) '. Инициализация в неправильном месте будет действительно хуже, поскольку назначение приведет к изменению размера. – carandraug

Смежные вопросы