2014-03-06 9 views
2

I은 ​​'원본'파일 갖는 콘텐츠를 다음대로 :

012abc3cb7503bddef3ff59e0e52fd79.jpg 160.073318 18.588472 14.246923 8.054444 6.600504 6.261390 5.838249 4.447019 3.639888 3.357715 2.996645 2.910991 2.574769 2.527163 2.343448 2.264113 2.176161 2.088773 1.915582 1.902159 1.836033 1.725432 1.667595 1.633245 1.557424 1.542059 1.434280 1.430181 1.321047 1.302652 1.272890 1.261313 1.188892 1.138115 1.114376 1.070352 1.044311 1.025954 0.993622 0.988920 0.969866 0.933977 0.931669 0.913624 0.882856 0.876036 0.840088 0.822686 0.814072 0.787075 0.781157 0.778171 0.763771 0.748851 0.740975 0.708208 0.691589 0.688566 0.664124 0.659779 0.644820 0.623200 0.614799 0.607180 0.590615 0.578751 0.57...........

각 행의 첫 번째 열 이미지 이름되고있는 이미지 (예)을 나타낸다 나머지 240 열은 이미지의 특징 벡터입니다.

이 파일을 MATLAB에로드하고 이미지 이름을 'names'변수에 저장하고 240 개의 값을 'histogram'변수에 저장할 수 있습니까?

답변

1
str = textread('tmp.txt','%s'); 
str = reshape(str,241,[]).'; 
names = str(:,1); %'// cell array of strings with image names 
histogram = str2double(str(:,2:end)); %// each row refers to an image 
+0

하지만 '이름'에는 이미지 이름이 포함되어 있고 그 다음 실제 값은 240입니다. – Varun

+0

@VarunDas 귀하의 의견을 따르기 어려운가요? 하지만 그와 관련된 수정을했습니다 –

+0

고마워요. 그게 효과가 있었어! – Varun

2

당신은 문자열에서 변환을 피할 수 있도록 textscanrepmat와 함께 할 수 있습니다

Nfeatures = 240; 
fid = fopen('text.txt'); 
format = ['%s ' repmat('%f', [1 Nfeatures])]; 
imageFeatureCell = textscan(fid, format, 'CollectOutput', true); 
fclose(fid); 

7 개 행이 파일에 테스트 :

>> fileData 
fileData = 
    {7x1 cell} [7x240 double] 

이동 원하는 변수에 넣으십시오 :

names = fileData{1};  % names{1} contains first file name, etc. 
histogram = fileData{2}; % histogram(1,:) contains first file's features 
+0

어떻게 작동하나요? – Varun

+0

'repmat' 명령은 형식 문자열에 240''% f''을 넣습니다. 그런 다음''CollectOutput ''옵션을 사용하면 동일한 데이터 유형을 모두 하나의 셀에 넣을 수 있습니다. – chappjc

+0

+1'repmat'을 영리하게 사용하여'eval'을 피하십시오 :-) –