2013-04-23 4 views
0

나는 다른 크기의 배열이 일치MatLab - 가치가없는 무언가가있는 패딩 배열?

배열은 같은 크기, 0 너무 padarray해야
Results = (DistancesB >= DistancesA * 0.1 & DistancesB < DistancesA * 1.5); % anything in this thres is matched 

을 찾아 비교하고있다. 하지만 이제 0은 비교되고 일치됩니다 ... 결과> 0 만 사용하려면 루프를 수행해야합니까? 또는 다른 패드를 사용할 수 있습니까? 어쩌면 NaN?

PaddedA = NaN(max(length(A), length(B)), 1); 
PaddedB = NaN(max(length(A), length(B)), 1); 

그 다음이 데이터를 채우 NaN

첫째와 패드 배열

+1

음, NaN을 사용해 보셨나요? – Dan

+0

당신은 어떻게 나노 패드합니까? featuresA = padarray (DataSet2, size (MaxArray) - 크기 (DataSet2), 'post'); – Tom

+0

그냥'padarray'를 사용하지 마십시오. – Dan

답변

2

최장 벡터만큼 만 NaN의 벡터를 생성한다. 짧은 벡터는 이제 끝 NaN 패딩됩니다 :

PaddedA(1:length(A)) = A; 
PaddedB(1:length(B)) = B; 
+0

확인 코드의 처음 2 줄에 대괄호가 누락되어 잘못된 위치에 배치 된 것 같습니다. – Tom

+1

귀하의 구문이 유효하지 않아 편집했기 때문에 믿습니다. 이제는 작동해야합니다. –

+0

감사합니다 @DennisJaheruddin, 그건 내게 너무 눈이 멀었습니다! – Dan

3

내가 항상 설명서를 참조하는 것이 좋습니다. 예를 들어, NaNpadarray() 캔 패드 : 자세한 내용은

padarray(1:3,[1,1],NaN,'post') 
ans = 
    1  2  3 NaN 
    NaN NaN NaN NaN 

는 문서에 대한 링크에서 padval에 대한 설명을 확인하십시오.

+0

+1 내가 그것을 놓친 방법을 잘 모르겠다. – Dan

+0

@Dan 나는 개인적으로 padarray의 오버 헤드를 피하기 위해 수동 제안을 할 것이지만 때로는 그런 순수 주의자가 갚지 않습니다. – Oleg

+1

그래,'padarray'는 2D 배열 패딩에 좋습니다. 1D는 불필요한 것처럼 보입니다. 그러나 툴박스가 있고 성능이 중요한 문제가 아니라면 매우 읽기 쉬운 코드를 만들 수 있습니다. – Dan