2013-11-15 3 views
0

저는 프로그래밍 할 때 새로운데, 나는 이것을 알아 내려고 노력하고 있습니다.목록을 사용하여 데이터 집합의 이름 바꾸기

약 300 개의 mysql 테이블을 Matlab에 넣으려고합니다.

하나의 테이블을 가져 오도록 고안된 다음 코드를 첨부했습니다 (이 코드는 300 개의 mysql 테이블이 작동 할 때 반복 할 예정입니다).

코드가 단일 테이블을 새 데이터 세트로 작업 영역으로 가져 오는 데 성공합니다.

원래의 mysql 테이블의 이름으로이 새 데이터 집합의 이름을 바꾸려고 할 때 문제가 발생합니다.

나는 모든 300 테이블 이름의 목록을 가지고 있고, 나는라는 목록에 저장 할 계획 내가 (출력 변수 % 할당 데이터)를 망치는이 부분에 아래 코드를 참조하십시오 'name'... 따라서 이름 (1)은 올바른 접근 방식입니까?

예를 들어, 원래의 mysql 테이블은 'options_20020208'이라고 불 렸습니다.

스크립트를 실행 한 후에는 Matlab이 가져 오는 새 데이터 세트가 필요합니다. 'options_20020208'이라고도합니다.

여기에 아이디어가 있습니까?

%Define Query 

name = 'options_20020208' 




%Set preferences with setdbprefs. 
setdbprefs('DataReturnFormat', 'dataset'); 
setdbprefs('NullNumberRead', 'NaN'); 
setdbprefs('NullStringRead', 'null'); 


%Make connection to database. 
conn = database('', 'root', 'password', 'Vendor', 'MYSQL', 'Server', 'localhost', 'PortNumber', 3306); 


%Read data from database. 
curs = exec(conn, [['SELECT ',name,'.UnderlyingSymbol , ']... 
, [name,'.UnderlyingPrice , ']... 
, [name,'.Expiration , ']... 
, ['FROM ','PriceMatrix.',name,' ']... 
]); 

curs = fetch(curs); 

close(curs); 

%Assign data to output variable 
name(1) = curs.Data; 

%Close database connection. 
close(conn); 

%Clear variables 
clear curs conn 

답변

0

는 가변 name, name(1) 수단 "변수 이름의 첫 번째 요소"정의한 경우 (이 경우 단지 "O"). 변수의 크기에 관계없이 변수는 단일 값을 반환합니다. 즉 X가 일부 5 차원 괴물 인 경우에도 X (50)은 50 번째 요소의 값만 반환합니다. name(1) = data은 "변수 name의 첫 번째 요소를 data과 동일하게 설정하십시오"라는 의미이며 데이터가 올바른 크기가 아니거나 올바른 유형이 아닌 경우 오류나 예기치 않은 동작이 발생하면 오류가 발생합니다.

예를 들어, 명령 줄에서 시도 : 나는 그것을하지 않는 것이 좋습니다 있지만

이제
name = 'options_20020208'; 
name(1) = 1 

는 기술적으로 당신이 원하는 것은 수행 할 수 있습니다. 당신은 N의 루프를 통해 300 × (길이) 변수의 어떤 종류의 모든 이름이있는 경우 = 1 : 300이 (name이 변수 이름의 목록입니다)이 같은 것입니다 :

eval([name(n,:) ' = curs.Data;']) 

이렇게하면 'options_20020208'또는 이와 유사한 300 개의 변수가 각각 curs.Data의 집합으로 포함되어 반환됩니다. 당신은 몇 가지 분석을하고 싶었다면

myStruct(n).name = name(n,:); 
myStruct(n).Data = curs.Data; 

후 모든 데이터를 저장 : 당신이 구조를 사용할 수 있습니다 예를 들어 그러나 쉽게 데이터를 추가 작업을 할 것입니다 귀하의 작업 공간에 데이터를 저장하는 더 나은 방법이있다 예를 들어 어떤 형식에서는 구조체를 반복하는 것이 훨씬 쉽고 파일 이름을 [myStruct(n).name,'.csv'], 파일 내용을 mystruct(n).AdjustedData 등으로 설정하면 300 개의 명명 된 변수를 처리 할 수 ​​있습니다.

+0

감사합니다. NKJT, 그건 도움이됩니다. 방금 ​​좌절의 시간을 절약했습니다. – BenTam64

관련 문제