우선, 입력 행렬과 동일한 임의의 행렬을 생성하고 싶습니다. 임의의 행렬 요소의 값이 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]
우선, 입력 행렬과 동일한 임의의 행렬을 생성하고 싶습니다. 임의의 행렬 요소의 값이 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]
하나, 다른 감소량으로 상기 입력 매트릭스의 대응하는 요소의 값을 증가 할 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);
@erfan이 업데이트되었습니다. 그 점을 지적 해 주셔서 고맙습니다. – Suever
'X'와'Y' 무엇입니까? 어느 것을 수정 하시겠습니까? – Suever
X를 수정하고 싶습니다. Y가 출력입니다. – Aceline96