2015-01-12 4 views
0

MatLab의 반복 기능에 대해 많은 질문을했지만이 프로세스가 어떻게 작동하는지 알 수 없습니다.matlab의 Repmat 함수

R로 변환하려고하지만 내 문제는 함수가 데이터를 조작하는 방법을 모르겠다는 것입니다.

이 코드는 페어 트레이딩 전략을 수립하는 프로세스의 일부로 코드는 FALSE/TRUE 식의 벡터를 사용합니다.

코드는 다음과 같습니다

반바지 TRUE/FALSE 표현의 벡터이다
% initialize positions array 
positions=NaN(length(tday), 2); 

% long entries 
positions(shorts, :)=repmat([-1 1], [length(find(shorts)) 1]); 

.

희망 하시겠습니까?

+0

http://www.cs.utsa.edu/~cs1173/resources/CS1173RepmatFunction.pdf –

+0

HTTP 도움이되기를 바랍니다 : //mathesaurus.sourceforge. net/octave-r.html – Khashaa

답변

3

repmat 행렬을 번 반복합니다. 귀하의 코드는 다음과 같습니다 :

1.-length(find(shorts)) : shorts에 "trues"의 양을 가져옵니다.

는 예컨대 :

shorts=[1 0 0 0 1 0] 
length(find(shorts)) 
ans = 2 

2 .-repmat([-1 1], [length(find(shorts)) 1]);[-1 1][length(find(shorts)) 1] 번 반복합니다. 예컨대의

계속 :

repmat([-1 1], [length(find(shorts)) 1]); 
ans=[-1 1 
    -1 1]; 

3.-positions(shorts, :)=은 지정된 인덱스에 지정된 행렬을 저장합니다. (참고 : shortslogical 인 경우에만 작동합니다.) 당신은 아무것도 생략하지 않은 경우 예컨대의

계속 :이 시점에서

는, 위치는 6x2NaN 매트릭스해야한다. 색인 생성은 true 위치가 shorts이고 [-1 1] 행렬로 채워집니다. 그래서이 후, 위치는 다음과 같습니다

positions=[-1 1 
      NaN NaN 
      NaN NaN 
      NaN NaN 
      -1 1 
      NaN NaN] 

+0

Ander를 도와 주셔서 대단히 감사합니다. 내가 알아낼 필요가있는 것! – claushojmark

1

MATLAB repmat 함수는 배열을 복제하고 바둑판 식으로 배열합니다. 구문 A 입력 어레이이고 n 방법은 타일 어레이를 지정

B = repmat(A,n) 

이다. n[n1,n2] 인 경우 - A은 행이 n1 번, 열이 n2 번 복제됩니다. 예 :

A = [ 1 2 ; 3 4] 
B = repmat(A,[2,3]) 

B =   |   | 
    1  2  1  2  1  2 
    3  4  3  4  3  4 __ 
    1  2  1  2  1  2 
    3  4  3  4  3  4 

귀하의 경우에는

(선이 바둑판 식으로 배열되는 방식 A 설명하기 위해 전용), repmatshorts의 각 비제로 요소의 벡터 [-1, 1]를 복제합니다. 따라서 positions의 각 행을 shorts의 해당 항목이 0이 아니면 [-1,1]으로 설정합니다. 다른 모든 행은 NaN으로 유지됩니다.

예를 들어

shorts = [1; 0; 1; 1; 0]; 

다음 코드는

positions = 
      -1 1 
      NaN NaN 
      -1 1 
      -1 1 
      NaN NaN 

나는 이것이 당신이 repmat의 효과를 명확히하기 위해 도움이되기를 바랍니다 생성됩니다. 그렇지 않다면 언제든지 물어보십시오.

+0

나보다 2 초 빠릅니다. ;) –

+0

많은 분들께 감사드립니다. 아주 도움이 !! – claushojmark