2016-11-17 8 views
0

.samp 파일의 데이터를 textread 함수와 함께 Matlab에서 읽으려고합니다. 각각 을 배열에 넣고 싶습니다. 이것은 .samp 파일입니다Matlab에서 텍스트 데이터를 읽을 수 없습니다

@CATEGORY:GENERAL 
@IMAGE:2012-04-26-Muenchen-Tunnel_4K0G0010.JPG 
# format: id type center.x center.y size.width size.height angle 
0 30 1319 2338 35 11 56.451578 
1 30 1337 2350 42 14 57.817368 
2 30 224 3556 61 20 136.967797 

내가이 명령을 실행하려고 :

[id, type, x, y, width, height, angle] = textread('data', '%d%d%d%d%d%d%f', 'headerlines', 3); 

가 작동하지 않는 및 오류 제공 : 내가 입력하는 방법

Error using dataread

Trouble reading integer from file (row 1, field > 1) ==> % CB = DATA(OBJ, 'get_callbacks') returns a

Error in textread (line 174)

[varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok

을 명령이 제대로 실행 되나요? 나중에 각 행 (줄)을 별도의 배열에 넣으려면 어떻게해야합니까?

+0

을 사용할 수 있습니다, 먼저'textscan'을 사용해야합니다. 왜냐하면'textread'가 오래된 것입니다. 다음으로, 공백 인 구분자를 지정하지 않았 음을 알았습니다. 따라서 그렇게 할 것을 권하고 문제를 해결해야합니다. – GameOfThrows

답변

0

첫 번째 인수로 전체 파일 경로를 지정하십시오. 나를 위해, C:\Users\MyUsername\data을 넣어 다음

[id, type, x, y, width, height, angle] = textread('C:\Users\MyUsername\data',... 
                '%d%d%d%d%d%d%f',... 
                'headerlines', 3); 

거의 충분히 작동하도록했다 호출. 그러나 Matlab documentationtextread에서 textscan으로 전환 할 것을 제안하므로 고려해야합니다.

질문의 두 번째 부분은 실제로 파일이 3 줄 밖에 없기를 기대합니까? 그렇지 않다면, 당신은 매트릭스에 모든 열 벡터를 넣을 수 있고 슬라이스로 수평 벡터에 액세스 : 당신은 단지 세 줄이 기대 경우

M = [id type x y width height angle]; 
M(1,:) % first line of your file 

그러나, 당신이 잘

vec1 = [id(1) type(1) x(1) y(1) width(1) height(1) angle(1)]; 
vec2 = [id(2) type(2) x(2) y(2) width(2) height(2) angle(2)]; 
vec3 = [id(3) type(3) x(3) y(3) width(3) height(3) angle(3)]; 
+0

헤드 라인 옵션은 파일의 처음 3 줄 (헤더라고 함)을 무시하는 데 사용됩니다. 따라서 헤더는 대개 특별한 형식 (예 : 모든 문자열)을 가지기 때문에 파서는 나머지 파일을 구문 분석합니다. – GameOfThrows

+0

@GameOfT는 asker가 모든 행을 별도의 배열에 넣기를 원한다는 것을 알고 있습니다. 예상되는 행의 개수를 모를 때 가능하거나 합리적인지 여부는 알 수 없습니다. 예제 파일은 3 행의 데이터를 가지고 있으며 이미지와 관련이있는 것처럼 보입니다. 따라서 3 행이 다른 RGB 채널 또는 기타 등등 일 수 있다고 가정합니다.이 경우 데이터는 매번 3 행만 있습니다. – Nikita

+0

답변 해 주셔서 감사합니다. 내가 제안한대로 전체 경로를 넣었고 효과가있었습니다. 이 파일은 이미지 용으로 3 줄 밖에 없습니다. 그러나 훨씬 더 많은 라인을 가진이 파일들이 더 많이 있습니다. 따라서 각 파일을 가져 와서 구분선을 한 줄씩 읽어야한다고 말했습니까? 아니면 더 빠른 방법이 있습니까? –

관련 문제