2016-10-07 2 views
0

Прежде всего, я хочу создать случайную матрицу, размер которой совпадает с матрицей ввода. Если значение элемента в случайных матрицах больше, чем 0,5, то л нужно увеличить значение соответствующего элемента в матрице ввода одной, то декремент на 1.Измените элемент в матрице на основе значения соответствующего элемента в другой матрице

X=[4  5  6 ; 7  8  9 ;  3  2  1] 
Random=[ 0.65  0.43  0.23 ;  0.75  0.12  0.78 ; 0.31  0.96  0.58] 
+1

Что 'x' и' Y'? Какой из них вы хотите изменить? – Suever

+0

Я хочу изменить X. Y - выход. – Aceline96

ответ

0

Вы можете использовать логическую индексацию, чтобы создать матрицу от true значений, где Random больше, чем 0.5 и false в противном случае.

Random = rand(size(X)); 
greater_than_one_half = Random > 0.5; 

Вы можете использовать эту логическую матрицу, чтобы выбрать и манипулировать некоторые элементы X или Y.

% Add one to all values in X where Random > 0.5 
X(greater_than_one_half) = X(greater_than_one_half) + 1; 

% Subtract one from all values in X where Random <= 0.5 
X(~greater_than_one_half) = X(~greater_than_one_half) - 1; 

Или вы могли бы сделать что-нибудь умное и использовать отрицание (~) логического массива в качестве показателя для -1 таким образом, что, когда это false (0), это -1 (-1^(~0)), и когда это true (1) , это 1 (-1^(~1)). Затем добавьте это к X.

X = X + (-1).^(~greater_than_one_half); 

Или просто:

X = X + (-1).^(Random <= 0.5); 
+0

@erfan Обновлено. Спасибо что подметил это – Suever

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