2013-11-24 2 views
2

행 및 열 머리글이있는 텍스트 파일에서 데이터를 가져오고 행렬에 가져 오려고합니다.행 및 열 머리글을 사용하여 데이터를 가져 오는 방법

data c1 c2 c3 c4 
r1 1 2 3 4 
r2 5 6 7 8 

을 또한 그것은 해당 데이터 요소 행 및 열 이름을 액세스 할 수 있고, 다음과 같은 예를 들어, 입력 파일이 보인다? 그리고 작업 결과를 기반으로 수정할 수 있습니까?

미리 감사드립니다. 첫 번째 행은 헤더

하는 당신은 또한에 관심이있을 수있는 경우 첫 번째 열에는 헤더

또는

T = readtable(filename, 'ReadRowNames', true)이있는 경우 readtablehttp://www.mathworks.com/help/matlab/ref/readtable.html

T = readtable(filename, 'ReadVariableNames', true) 페이지의 문서에서

답변

1

형식 문자열에 %*s이 추가 된 textscan을 사용하여 각 행의 첫 번째 헤더 열을 중얼 거릴 수 있습니다. 첫 번째 헤더 행 경우 불명이고, 열의 수를 계산하는 데 사용되어야한다

fid = fopen('input.txt'); %// Open the input file 

%// Read the first header row and calculate the number of columns in the file 
C = textscan(fid, '%s', 1, 'Delimiter', '\n', 'MultipleDelimsAsOne', true); 
cols = numel(regexp(C{1}{1}, '\s*\w+')); 

%// Read the rest of the rows and store the data values in a matrix 
C = textscan(fid, ['%*s', repmat('%f', 1, cols - 1)]); 
A = [C{:}];    %// Store the data in a matrix 

fclose(fid);    %// Close the input file 

데이터는 매트릭스 A에 저장된다.

+0

응답 해 주셔서 감사합니다. 나는 그것을 시도하고 성공적으로 매트릭스에 저장된 데이터를 가지고 있지만 또 다른 의문이있다, 만약 내가 그 표시됩니다 dataelement 3 (r1, c3 될 것입니다)의 열과 행 이름을 알아야합니까? – Keerthana

1

첫 번째 행 이상을 삭제하려면 'HeaderLines' 이름 - 값 쌍을 사용하십시오.

+0

이 기능은 불행히도 Matlab 2013b에서 소개되었습니다. – thewaywewalk

+0

아, 나는 그것을 보지 못했습니다. 원래 질문은 명령을 언급 했으므로 버전이 있다고 가정했습니다. – athypes

+0

@athypes 응답 해 주셔서 감사합니다. 나는 2013a를 사용하고 있기 때문에 readtable 옵션을 사용할 수 없습니다. 내 잘못은 분명히 언급했다. – Keerthana

1

당신은 importdata을 사용할 수 있습니다, 예를 들어, 구분 기호를 상정하는 것은

row_namescol_names
rawdata = importdata(filename, '\t'); 
row_names = rawdata.textdata(2:end,1); 
col_names = rawdata.textdata(1, 2:end); 
data_mat = rawdata.data; 

셀 어레이 종류, "탭"입니다. \t 또는 , 등으로 구분 된 한 개의 문자열이 마음에 들면 strjoin을 사용할 수 있습니다.

관련 문제