2015-01-23 1 views
0

두 개의 콜론 [x, y]가있는 행렬이 있습니다. 이것들은 샘플링의 데이터입니다. 나는 (x1, y1)에서 (x2, y2)까지 직사각형 밖의 모든 데이터를 범위 밖으로 제거해야한다. 나를 위해MATLAB 특정 매개 변수 밖의 행렬 요소 삭제

이 문제가 벡터의 데이터를 제거하지, 내가 사용 :

X = X(X > x1); 
X = X(X < x2); 
Y = Y(Y > y1); 
Y = Y(Y < y2); 

그러나이 솔루션이 작동하지 않습니다, 모든 외부 값을 제거하지 않기 때문에, 즉 나는 X = X(Y > y1)을 쓸 수 없습니다.

이제는이 문제를 간단한 루프로 해결할 수 있다는 것을 알고 있지만 Matlab 환경에는 광산과 같은 솔루션이 두 개 이상 있다고 생각합니다 (매트릭스가 아닌 벡터에서만 작동합니다).

감사합니다 그리고 안녕, 이런 식으로 자코모

답변

2

단순히 모든 솔루션을 캡슐화하는 논리 마스크를 만든 다음 포인트 배열에 색인을 지정하기 만하면됩니다. data이 두 개의 데이터 열을 저장한다고 가정하면 다음과 같이 간단하게 수행 할 수 있습니다.

X = data(:,1); 
Y = data(:,2); 
ind = X > x1 & X < x2 & Y > y1 & Y < y2; 
points = data(ind,:); 
+1

코드가 완벽하고 내 실적보다 뛰어납니다. 고맙습니다. –

+1

Grazie! 나는 그렇게 말하지 않을 것이다! 당신은 그것을 파악했습니다 ... 나는 논리 인덱스를 사용하는 것이 더 쉽다는 것을 알았습니다. 결국, 당신이 편안하든간에, 그것은 당신이 사용해야하는 것입니다! – rayryeng

0
X = data(:,1); 
Y = data(:,2); 

mask = (X>x1 & X<x2).*(Y>y1 & Y<y2); 
X = X.*mask; 
Y = Y.*mask; 
X(X==0)=[]; 
Y(Y==0)=[]; 

나는 나의 사각형 내부 데이터 만 얻을 수 있습니다.