Who could get all the data in the attached file by the matlab?

조회 수: 3 (최근 30일)
huazai2020
huazai2020 2020년 7월 4일
댓글: Walter Roberson 2020년 7월 8일
Who could get all the data in the attached file by the matlab? I do not need the text words, but only need the data in two column?Who can help me?
  댓글 수: 7
huazai2020
huazai2020 2020년 7월 5일
It is not Walter's problem, but my data "tem-001.txt", could you import it into one xlsx.file? If yes, could you send me the code, thank you.
Walter Roberson
Walter Roberson 2020년 7월 5일
Take my code and use writematrix or xlswrite to write the data variable to an xlsx file.

댓글을 달려면 로그인하십시오.

채택된 답변

Stephen23
Stephen23 2020년 7월 6일
>> rgx = '([-+]?\d+\.?\d*([eE][-+]?\d+)?)';
>> str = fileread('tem-001.txt');
>> tkn = regexp(str,[rgx,'\s+',rgx],'tokens');
>> mat = str2double(vertcat(tkn{:}))
mat =
0.025788 0.0045471
0.016141 0.0093192
0.0088788 0.010581
0.0040584 0.01115
-1.2949e-12 0.0112
-0.0040227 0.011052
-0.0090357 0.010768
-0.015782 0.009112
-0.025416 0.0044815

추가 답변 (1개)

Walter Roberson
Walter Roberson 2020년 7월 4일
filename = 'tem-001.txt';
S = fileread(filename);
SS = strjoin( regexp(S, '^\s*-?\d.*$', 'match', 'lineanchors', 'dotexceptnewline'), '\n');
data = cell2mat(textscan(SS, '%f%f'));
  댓글 수: 7
huazai2020
huazai2020 2020년 7월 8일
Could you tell me the meaning of each row? What is the difference between below?
>> rgx = '([-+]?\d+\.?\d*([eE][-+]?\d+)?)';
>> str = fileread('tem-001.txt');
>> tkn = regexp(str,[rgx,'\s+',rgx],'tokens');
>> mat = str2double(vertcat(tkn{:}))
Walter Roberson
Walter Roberson 2020년 7월 8일
That is Stephen's code.
rgx is assigned a pattern that will match floating point numbers with optional decimal place and optional exponent. However the pattern misses the possibility of a decimal number with no leading digits before the period.
The assignment to str reads the content of the file all at once and puts it into the variable.
The next line creates a pattern of one number representation followed by whitespace followed by another number representation. Then it searches the content of the file returning the characters that match the patterns.
The matched parts are put together into columns and passed to str2double to convert to numeric.
The workings of patterns for regular expressions is too large a topic for now. There is a file exchange contribution that helps explore regular expressions. The finer points of regular expressions can be pretty tricky.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by