2014-02-19 3 views
1

저는 처음으로 MATLAB을 배우고 있습니다.MATLAB 배열 비교

나는 그것을 이해하려고하는 몇 가지 코드를 읽고있다. 나는 날짜의 목록을 포함하는 pdw_raw & pdw_factors라는 두 개의 배열이 있다고 생각한다. 가장 혼란스러운 부분은 아래 코드의 마지막 줄입니다. 이 줄을 이해할 수있는 유일한 방법은 pdw_raw의 모든 요소가 pdw_factors의 최대 날짜와 대조되는지 확인하는 것입니다. 이것이 맞습니까?

현재 이해하기 어려운 MATLAB 구문을 찾으십시오.

%first retrieve the relevant dates; 
sql_statement = ['select distinct pricedatew from D_RAWRETS order by pricedatew']; 
cursor   = exec(QES_DB, sql_statement); 
cursor   = fetch(cursor); 
pdw_raw   = datenum(cursor.data); 
pdw_raw   = pdw_raw(1:end-1, 1); 

sql_statement = ['select distinct pricedatew from D_FACTORS order by pricedatew']; 
cursor   = exec(QES_DB, sql_statement); 
cursor   = fetch(cursor); 
pdw_factors  = datenum(cursor.data); 

missing_dates = pdw_raw(pdw_raw > max(pdw_factors)); 

답변

2

맞습니다.

pdw_raw > max(pdw_factors) 그렇지 pdw_factors 최대 요소보다 큰, 거짓임을 pdw_raw의 요소 전에 논리에 해당하는 배열을 생성한다.

pdw_raw(pdw_raw > max(pdw_factors));pdw_raw > max(pdw_factors)이 참인 요소 만 추출하기 위해 logical indexing을 사용합니다.

+0

+1, @mHelpMe : 입력 인수가 2D 행렬 인 경우 'max'는 벡터를 반환합니다. 나는. 그것은 각 열의 최대 값을 반환하고 전체 최대 값은 단일 숫자로 반환하지 않습니다. –

+0

@RobertP. 사실,이 경우'pwd_factors'는 단일 열만 선택하는 sql 쿼리에서 나옵니다. 따라서 벡터 인 것으로 가정하는 것이 안전합니다. – Dan

+0

나는 알고있다 =) 이것은 직관적이지 않고 다른 상황에서 쉽게 문제를 일으킬 수 있기 때문에 OP에 약간의 알림이었다. –