이상한 형식의 데이터로 가득 찬 거대한 텍스트 파일을 읽을 필요가 있습니다. 형식은 다음과 같이 간다 : 대신 8의 각 제목 아래 나는 하나 개의 데이터 집합으로 평균을해야 할 25 개 테스트를 실행하고있어 약 25,000 항목이 제외하고 그것의 요점은,이다기이하게 포맷 된 큰 텍스트 파일을 MATLAB으로 읽어들입니다.
//Header with Title Info
//Header with Test1 Info
//More Test1 Info
0,-156.875956035285
1.953125,-4.82866496038806
3.90625,-8.93502887648155
5.859375,-9.76964479822559
7.8125,-14.9767168331976
9.765625,-16.9949034672061
11.71875,-19.2709033739316
13.671875,-18.9948581866681
//Header with Test2 Info
//More Test2 Info
0,-156.875956035285
1.953125,-4.82866496038806
3.90625,-8.93502887648155
5.859375,-9.76964479822559
7.8125,-14.9767168331976
9.765625,-16.9949034672061
11.71875,-19.2709033739316
13.671875,-18.9948581866681
//Header with Test3 Info
//More Test3 Info
0,-156.875956035285
1.953125,-4.82866496038806
3.90625,-8.93502887648155
5.859375,-9.76964479822559
7.8125,-14.9767168331976
9.765625,-16.9949034672061
11.71875,-19.2709033739316
13.671875,-18.9948581866681
// End of Data
.
기본적으로,이 순서의 데이터를 구문 분석 할 :
- 하는 첫 번째 줄
- 은 빈 줄을 인식 "데이터의 끝"에 대한 다음
- 확인으로 이동
- 하면 건너 뛰기 끝이 아니라 현재 줄과 다음 줄 건너 뛰기
- 현재 테스트 데이터 집합에 대한 새 배열 만들기
- 빈 줄에 도달 할 때까지 데이터 읽기, 2 단계로 돌아갑니다.
그런 다음이 모든 세트를 가장 효율적인 방법으로 함께 평균화하고 싶습니다.
데이터를 읽는 데 문제가 있습니다. 저는 csvread를 사용하거나 구분 된 값을 읽는 좀 더 일반적인 함수를 사용할 수 있다는 것을 알고 있지만, 모든 것을 할 수있는 우아하고 간결한 방법을 찾는 것에 매달려 있습니다.
나는이 시작 :function [ data ] = graph(input_args)
%Plot data
myData = fopen('mRoom_fSweep_25points_center.txt');
data = textscan(myData,'%s');
fclose(myData);
length(data)
end
그리고 난 그냥 문자열이 배열의 길이를 발견하고 작업의 전체 목록의에 대한 루프를 해결할 수있는 생각,하지만 난 할 수 없었다 이 점을 지나쳐라. 산출물은 나에게 이것을 계속주고 받았다 :
ans =
{772321x1 cell}
나는 사용할 수없는 것들이다. 변수에이 값을 저장하려고하면 값은 1이됩니다. 셀 배열에 이상한 점이 있습니까? 여기에 누락 되었습니까?
잘 모르겠지만 각 셀 요소에서 한 줄을 저장했다고 생각합니다. 데이터 (line, 1)로 해당 항목을 처리하려고 시도 했습니까? 당신은 중괄호 {}를 사용하여 셀 안의 데이터를 얻고 "보통"대괄호를 사용하여 셀 전체를 얻습니다. –