2014-02-19 2 views
0

필자의 지식을 향상시키기 위해 일부 MATLAB 코드를 읽었습니다. 제 3 행에서 아래의 NaN 사용을 이해하지 못합니다.왜 NaN을 곱 하시겠습니까?

나는 N-by-N 행렬의 행렬을 알고 있으므로 왜 복수 행을 NaN으로 바꾸고 싶습니까? 또한 ret_usdvec이 다시 사용되는 행을 이해하지 못합니다 : ret_usdvec(sline(1,1):sline(1,2), :)... = tdata.

int_cos   = length(usedolchk); 
int_obs   = length(pricedatew); 

ret_usdvec  = num2cell(NaN * ones(int_cos * int_obs, 4)); 

sline   = ones(1, 2); 

int_count_max = 400000; 
int_count  = 0; 
for t = 1:int_obs 
    if (int_count == 0) 
     QES_DB    = SEdatabase(data_base, '', ''); 
    end 
    sql_statement = ['select idchk, co_name, pdatew, ret from D_RAWRETS']; 
    cursor   = exec(QES_DB, sql_statement); 
    cursor   = fetch(cursor); 
    tdata   = cursor.data; 
    sline(1, 2)  = sline(1, 1) + length(tdata(:, 1)) - 1; 
    ret_usdvec(sline(1, 1):sline(1, 2), :)... 
      = tdata; 
    sline(1, 1)  = sline(1, 2) + 1; 
    int_count  = int_count + length(tdata(:, 1)); 
    if (int_count >= int_count_max) || t == int_obs 
     close(QES_DB);clear QES_DB 
     int_count  = 0; 
    end 
end 
+5

덧붙여 말하면, 「NaN * ones (int_cos * int_obs, 4)」는 간단하게 「NaN (int_cos * int_obs, 4)」와 같습니다. 아, 그리고 그것은 N-by-N이 아니라 오히려 N^2-by-4입니다. – Dan

답변

4

NaN 값을 가진 데이터 공간을 할당하고 루프 내의 실제 값으로 데이터를 채우는 것처럼 보입니다. 이렇게하면 누락 된 데이터가 있으면 값이 NaN이됩니다.

관련 문제