저는 Matlab에서 빠른 구현을 찾고 있다는 간단한 문제가 있습니다. 내가 값의 배열을 가지고, 이제 가정 해 봅시다 :||에 피연산자 및 & 연산자는 논리 스칼라 값으로 변환 가능해야합니다
이a = floor(rand(5,5).*255)
그때 비슷한 크기의 임계 값의 배열을,의는 그것의 가정 해 봅시다 : a
내에서 값을
a_thresh = floor(rand(5,5).*255)
가 대응하는 것보다 0.5 배 더 작은 경우
a(a < a_thresh.*0.4) = 0
a(a > a_thresh.*1.2) = 0
0 :
즉, 유사 1.2에 대한
a_thresh
의 값도 0으로 설정한다 -
a_thresh
가치 I 출력이 0가되고 싶어요
0.4x와 0.5x 및 1.0x와 1.2x 사이의 값의 경우, 비례하는 양을 원한다. 그리고 0.5와 1.0 사이의 값은 a
의 값을 그대로 사용하고 싶다.
피연산자 ||하기 : I라는 오류를 얻을 그러나
a(a>= a_thresh .* 0.4 && a <a_thresh.* 0.5) = ((a - a_thresh.*0.4)/(a_thresh.*0.5 a_thresh.*0.4)) .* a;
: 나는 다음과 같은 것을 사용 수 있다고 생각 및 & & 작업은 논리적 스칼라로 변환이
이 문제를 해결하는 방법에 대한 조언을 값이어야합니다? 분명히 이것을하기 위해 루프를 사용할 수는 있지만 사소한 일이지만 코드를 벡터화 된 상태로 유지하려고합니다.
환상적인 - 그 & & && 문제를 해결 - 내가 어떻게 그걸 몰랐는지, 고마워! 이제는 오른쪽에있는 요소의 수가 왼쪽과 다른 작은 문제가 있습니다. 이것을 고치는 현명한 방법이 있습니까? – trican
@trican 잘 해결했습니다. 업데이트를 참조하십시오. –
많은 분들께 감사드립니다. Eitan - 솔루션이 완벽하게 작동합니다 - 분명히 충분히 일반적이어서 Matlab 작업의 다른 곳에서 사용할 수있는 방법을 알 수 있습니다. – trican