Произвольно выбрать 30% элементов в матрице, используя MATLAb - PullRequest
1 голос
/ 07 октября 2011

Мне нужно сделать следующее для каждого из элементов матрицы размера mXn: 1. подбросить монету с вероятностью успеха 0,3. 2. в случае успеха установите элемент на ноль. 3. остальное перейти к следующему элементу.

Я использовал следующий код, но он не дает никакого вывода и выдает NaN, C - матрица размера mXn:

index = (rand(size(C)<=0.3));
one_index = find(index ==1);
C(one_index) = 0;

1 Ответ

3 голосов
/ 07 октября 2011

Проблема в этом утверждении

index = (rand(size(C)<=0.3));

Вы перепутали скобки, поэтому пытаетесь сравнить, если size(C) <= 0.3. Это возвращает [0 0], в результате чего rand создает пустую матрицу.

Кроме того, звонок на find не нужен.

C = magic(4);
index = rand(size(C)) <= 0.3;
C(index) = 0

C =

    16     2     3    13
     0    11    10     8
     9     7     6     0
     4     0    15     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...