2013-05-09 5 views
0

MATLAB에서 필자는 실제로 someones 전문 지식이 필요합니다. 나는 다음과 같은 csv 파일 (여분의 공백이 그것을 읽을 수 있도록 그냥)이 : 나는 textread 및 strcmpi를 적용한CSV 데이터 세트의 행 일치

State, Damage, Blizzards, 
Texas, 2,   2, 
Alabama, 1,   0, 
Alabama, 0,   1, 
Texas, 5,   3, 
Montana, 0,   8, 
Arizona, 0,   0, 
Arizona, 0,   1, 
Texas, 8,   5, 

. 목표는 다음과 같습니다. 각 개별 상태를 관련 데이터와 함께 상태로 가져 와서 한 줄에 플롯하고 각 상태가 끝날 때까지 반복하는 루프를 개발해야합니다. 따라서 루프 1의 경우 : 알라바마에는 두 개의 데이터 세트가 있으므로이를 추출하여 플롯해야합니다. 루프 2 : 텍사스에는 3 개의 데이터 세트가 있으므로 추출하고 플롯해야합니다. 그리고 모든 상태가 적용될 때까지 프로세스가 반복됩니다. 여기

코드입니다 : 그것은 자동 루프, 만들려고

filename = 'datacollect.csv' 
[State,Damage,Blizzards] = ... 
textread(filename,'%s %d... %d','delimiter',',','headerlines',1); 
index1 = strcmpi(State, 'Texas'); 
Damage = Damage(index1) 
Blizzards = Blizzards(index1) 
plot(Damage,Blizzards) %for Texas 

, 그래서 나는 하드 코딩이 필요가 없습니다.

확실하지 않더라도 해결책이 필요합니다.

+0

데이터 세트를 포함하는 파일의 이름은 무엇이며 어디에서 붙어 있습니까? –

+0

모든 데이터를 셀 매트릭스로 읽는 것까지 가셨습니까? – Dan

+0

예. 나는 textread를 적용했다. [State, Damage, Blizzards] = 텍스트 읽기 .... 등. 그런 다음 strcmpi를 사용하여 원하는 문자열을 추출합니다. index1 = strcmpi (블리자드, '몬타나'). 각 상태를 하드 코드하지 않고 루프를 만들려고합니다. – user1608954

답변

2

Amro's answer은 확실히 올바른 방향을 가리켜 야하지만, 여기 당신을 위해 철자 전체 솔루션은 경우에 계속 문제가 발생하는,이다 :

%// Parse CSV file 
[States, Damage, Blizzards] = textread(csvfilename, '%s %d %d', ... 
    'delimiter', ',', 'headerlines', 1); 

%// Parse data and store in an array of structs 
[U, ix, iu] = unique(States);  %// Find unique state names 
S = struct('state', U);    %// Create a struct for each state 
for k = 1:numel(U) 
    idx = (iu == k);     %// Indices of rows matching current state 
    S(k).damage = Damage(idx);  %// Add damage information 
    S(k).blizzards = Blizzards(idx); %// Add blizards information 
end 

결과 S가와 structs의 배열입니다 필드 state, damageblizzards.

이제 각 반복에서 해당 구조체의 필드에 액세스하여이 구조체 배열을 반복 할 수 있습니다. 예를 들어 Alabama (두 번째 구조체)의 damage 값에 액세스하려면 S(2).damage을 사용할 수 있습니다.

희망이 도움이됩니다.

+1

고맙습니다. 나는 stackoverflow에 대한 많은 기사를 연구 해왔다. (그리고 필자는 나의 이해를 높이기 위해이 링크를 읽을 것이다.) ... 정말로 나는 이것에 대해 며칠을 보냈다. 정말 감사. – user1608954

+0

@ user1608954 도움을 주셔서 감사합니다 :) –

관련 문제