2013-10-11 2 views
0

텍스트 파일에서 ID를 찾고 해당 ID가있는 행의 나머지 부분을 읽거나 조작하려면 'strtok'을 사용하여 matlab에 대한 도움이 필요합니다. 또한이 함수를 사용하여 (strtok을 사용하는 것이 좋음) 동일한 ID의 모든 항목을 찾아 어떤 방식으로 그룹화하여 평균을 찾을 수 있도록해야합니다. 가 Matlab 문자열 조작

내가 게시 된 예에 의해 오해하지 마십시오, 첫 번째 숫자는 약 15 다음 라인 ID를 변경 내용을 반복하고 다른 ID 년대의 전체 세트 ㄴ다는 것을, 그 때

있습니다
ID list being input: 
(This is the KOIName variable) 
010447529 
010468501 
010481335 
010529637 
010603247......etc. 

File with data format: 
(This is the StarData variable) 
ID>>>>Values 

002141865 3.867144e-03 742.000000 0.001121 16.155089 6.297494 0.001677 

002141865 5.429278e-03 1940.000000 0.000477 16.583748 11.945627 0.001622 

002141865 4.360715e-03 1897.000000 0.000667 16.863406 13.438383 0.001460 

002141865 3.972467e-03 2127.000000 0.000459 16.103060 21.966853 0.001196 

002141865 8.542932e-03 2094.000000 0.000421 17.452007 18.067214 0.002490 
: 샘플 코드에 [1,2,3], [1,2,3]라고 생각하면, 주요 차이점은 matlab에서 평균을내는 데 필요한 ID를 후행하는 값입니다.

내 현재 코드는 다음과 같습니다 어떤 도움을

function Avg_Koi 

N = evalin('base', 'KOIName'); 

file_1 = evalin('base', 'StarData'); 

global result; 

for i=1:size(N) 
[id, values] = strtok(file_1); 
result = result(id); 
result = result(values) 
end 

end 

감사합니다.

+0

"결과"란 무엇입니까? 변수와 함수를 식별하는 데 동일한 단어를 사용할 수 없습니다. 그리고 여러분은 그것을 id와 값에 사용하고 있습니다. 응? – dmm

+0

또한, 'StarData'에서 evalin이 작동한다고 가정하면 (그리고 확신 할 수 없다), file_1은 char 변수가 아니므로 strtok을 사용할 수 없습니다. 변수를 보려면 "whos"(따옴표 제외)를 입력하십시오. – dmm

+0

질문을 이해하는 데 어려움이 있습니다.하지만 "evalin"이 아닌 "load"를 사용하고 싶습니다. "help load"를 입력하십시오. KOIName과 StarData의 표현식을 평가하고 싶지는 않습니다. (아무 것도 없으므로) 조작 할 수있는 Matlab 변수에 해당 데이터를로드하기 만하면됩니다. – dmm

답변

1

당신은 우리에게 많은 것을 생각하자, 그래서 당신이 뭔가 싶은 생각 : 당신이 지금 ID = 002141865

MatrixOfCertainID6 = values{6}; 

을 adressing 인덱스 ii=6에 액세스 할 때

load StarData.txt 

IDs = { 010447529; 
     010468501; 
     010481335; 
     010529637; 
     010603247; 
     002141865} 

L = numel(IDs); 
values = cell(L,1); 

% Iteration through all arrays and creating an cell array with matrices for every ID 
for ii=1:L; 
    ID = IDs{ii}; 
    ID_first = find(StarData(:,1) == ID,1,'first'); 
    ID_last = find(StarData(:,1) == ID,1,'last'); 

    values{ii} = StarData(ID_first:ID_last , 2:end); 
end 

는 당신이 얻을 :

0.0038671440 742  0.001121 16.155089 6.2974940 0.001677 
0.0054292780 1940 0.000477 16.583748 11.945627 0.001622 
0.0043607150 1897 0.000667 16.863406 13.438383 0.001460 
0.0039724670 2127 0.000459 16.103060 21.966853 0.001196 
0.0085429320 2094 0.000421 17.452007 18.067214 0.002490 

... 더 많은 계산을 위해.