1
처음 몇 줄의 텍스트 주석과 실제 데이터 열이있는 .txt 데이터 파일이 있습니다. 그것은이 같은 같습니다 importdata
를 사용하여Matlab에서 데이터 파일의 텍스트에서 숫자 데이터 추출
lens (mm): 150
Power (uW): 24.4
Inner circle: 56x56
Outer Square: 256x320
remarks: this run looks good
2.450000E+1 6.802972E+7 1.086084E+6 1.055582E-5 1.012060E+0 1.036552E+0
2.400000E+1 6.866599E+7 1.088730E+6 1.055617E-5 1.021491E+0 1.039043E+0
2.350000E+1 6.858724E+7 1.086425E+6 1.055993E-5 1.019957E+0 1.036474E+0
2.300000E+1 6.848760E+7 1.084434E+6 1.056495E-5 1.017992E+0 1.034084E+0
을 matlab에 자동으로 텍스트 데이터와 실제 데이터를 분리한다. 그러나 텍스트 (셀 형식으로 저장 됨)에서 숫자 데이터를 추출하는 방법은 무엇입니까? 내가 원하는 달성하기 위해해야 할 일 :
- 추출물 그 숫자 (예 : 150, 24.4)
- 가능하면, 단위를 추출, 이름 ('렌즈', '전원')
- 가능하면 압축을 풉니 다 ('mm', 'uW')
1이 중요하며 2 또는 3은 선택 사항입니다. 또한 코드를 단순화하면 텍스트 주석의 형식을 변경하게되어 기쁩니다.
function q47203382
%% Reading from file:
COMMENT_ROWS = 5;
% Read info rows:
fid = fopen('demo.txt','r'); % open for reading
txt = textscan(fid,'%s',COMMENT_ROWS,'delimiter', '\n'); txt = txt{1};
fclose(fid);
% Read data rows:
numData = dlmread('demo.txt',' ',COMMENT_ROWS,0);
%% Processing:
desc = cell(5,1);
unit = cell(2,1);
quant = cell(5,1);
for ind1 = 1:numel(txt)
if ind1 <= 2
[desc{ind1}, unit{ind1}, quant{ind1}] = readWithUnit(txt{ind1});
else
[desc{ind1}, quant{ind1}] = readWOUnit(txt{ind1});
end
end
%% Display:
disp(desc);
disp(unit);
disp(quant);
disp(mat2str(numData));
end
function [desc, unit, quant] = readWithUnit(str)
tmp = strsplit(str,{' ','(',')',':'});
[desc, unit, quant] = tmp{:};
end
function [desc, quant] = readWOUnit(str)
tmp = strtrim(strsplit(str,': '));
[desc, quant] = tmp{:};
end
우리는 두 단계로 데이터를 읽어 다음 숫자의 처음에 주석 행에 대한
textscan
및
dlmread
[MATLAB (데이터 변환)의 텍스트 파일 읽기] (https://stackoverflow.com/questions/47122005/read-text-file-in-matlab-data-trancation)의 가능한 복제본 –