2012-09-07 2 views
3

행렬을 반복하지 않고 이것이 가능한지 여부는 알 수 없지만 여기에 질문이 있습니다. 주어진 정사각형 매트릭스에 대해 'M'이라고 말하면, 특정 값은 '키'라고 말합니다.matlab에있는 조건을 기반으로하는 각 셀 현명한 연산

나는 문제가 분명하다 같은

if M(i,j) < key; compute NM(i,j) using formula 1, 
if M(i,j) = key; compute NM(i,j) using formula 2, and 
if M(i,j) > key; compute NM(i,j) using formula 3 

조작의 출력은 M. 희망과 같은 차원의 새로운 정방 행렬이어야하는 새로운 매트릭스 (말 'NM')을 계산하려면 . 그것은 당신 같은 소리 미리

답변

2

덕분에 순수 매트릭스 솔루션이 원하는, 그래서 나는 그런 식으로 답변 해 드리겠습니다. (cell이라는 단어를 Matlab에서 특정 의미를 갖는 제목에 사용했습니다.)

먼저 행렬 NM을 M과 동일한 크기로 정의해야합니다. 하나를 사용하여 다른 행을 정의하기 만하면됩니다. 그런 다음 논리적 색인을 사용하여 원하는 행렬 요소에만 값을 적용하십시오.

NM=M; 
NM(M < key) = formula1(NM(M < key)); 
NM(M == key) = formula2(NM(M == key)); 
NM(M >= key) = formula3(NM(M > key)); 

여기에 0.5 미만의 행렬 요소를 단일 식 NM=M+1 적용 예를 나타낸도이다.

>> M=rand(3) 

M = 

0.0623 0.7783 0.0097 
0.7011 0.2843 0.7337 
0.1984 0.2123 0.9778 

>> NM=M; 
>> NM(M<.5)=M(M<.5)+1 

NM = 

1.0623 0.7783 1.0097 
0.7011 1.2843 0.7337 
1.1984 1.2123 0.9778 
1

나는, 당신이, 함수에 M의 값을 전달해야 할 수 있습니다 당신은 그냥 수식에 따라

NM(M < key) = formula1; 
NM(M == key) = formula2; 
NM(M > key) = formula3; 

그런 짓을 할 생각 즉

NM(M < key) = formula1(M(M < key)); 
관련 문제