2016-10-07 3 views
0

우선, 입력 행렬과 동일한 임의의 행렬을 생성하고 싶습니다. 임의의 행렬 요소의 값이 0.5보다 크다면, L 넌 행렬을 생성하는 논리 인덱스를 사용하여 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 값인 경우 Random0.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

관련 문제