필터 지우기
필터 지우기

Issue with removing space from char from loaded data

조회 수: 4 (최근 30일)
David
David 2017년 11월 3일
댓글: Stephen23 2017년 11월 3일
Hello,
I am helping a colleage with some data analysis and come accross an issue I cannot find a way of fixing;
After loading in data (using textscan and loading as %s, for some reason the format of the data doesnt allow for %f, %d etc) and extracting data from the cells, it ends up in a character such as the one shown:
1 . 3 3 3
How does one remove the white space from this character in order to then properly turn it into numeric data that can then be used? I have tried things such as ~isspace yet this doesnt work; the result of isspace on the above number is
0 1 0 0 0 0 0 0 0 0 0 0 0
Which isnt useful!
If anyone knows a way around this I would be greatfully appriciative! Or indeed ideas on why %d, %f etc doesnt work in the textscan, as that might also solve the problem...
Many thanks David
  댓글 수: 4
Stephen23
Stephen23 2017년 11월 3일
Why are you using %s for loading numeric data? Why not simply load numeric data using a numeric format and get a numeric variable?
David
David 2017년 11월 3일
For some reason it doesnt work with d or f for example (gives blank/empty arrays). Im still trying to figure out why, yet if you have ideas as to why this could be the case Id be appriciative!

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

채택된 답변

Stephen23
Stephen23 2017년 11월 3일
편집: Stephen23 2017년 11월 3일
I don't have any problems importing your sample file (attached) as numeric data. Here are the two ways I tried:
Method one: dlmread:
>> M = dlmread('example_data.txt','\t',1,0)
M =
1.333 16594.953
2.667 16562.166
4 15972.454
5.333 15968.083
6.667 15482.982
8 14435.071
>>
Method two: textscan:
opt = {'HeaderLines',1, 'CollectOutput',true};
[fid,msg] = fopen('example_data.txt','rt');
assert(fid>=3,msg)
C = textscan(fid,'%f%f',opt{:});
fclose(fid);
which gives this data:
>> C{1}
ans =
1.333 16594.953
2.667 16562.166
4 15972.454
5.333 15968.083
6.667 15482.982
8 14435.071
  댓글 수: 5
David
David 2017년 11월 3일
Hi Stephen,
Indeed you are right and that did fix it! Many thanks.
I will now have some friendly words with my colleage on how he should save his data in the future...
Thanks again!
Stephen23
Stephen23 2017년 11월 3일
@David: I hope that it helped. You can also accept my answer, if these comments helped you.

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

추가 답변 (1개)

KL
KL 2017년 11월 3일
if you're only importing numeric data from those files, why not just use dlmread or csvread or textread. I'd personally prefer readtable.
It'S better to import the data clearly than having to deal with the problem of improper imports.
check these links:
  댓글 수: 4
David
David 2017년 11월 3일
Hi,
Using dlmread I get this error;
Mismatch between file and format string. Trouble reading 'Numeric' field from file (row number 1, field number 1) ==> \n
And readtable yeilds:
Error using readtable (line 143) Cannot interpret data in the file 'PlotValues0002.txt'. Found 2 variable names but 1 data columns. You may need to specify a different format string, delimiter, or number of header lines.
hence me refering to the columns chaning size (ie decimal points)
Stephen23
Stephen23 2017년 11월 3일
"...and things like dlmread find issues with this, at least to my knowledge"
This does not mean you should jump straight to creating some complex work-around using strings. You could have asked about how to import the numeric data first. Only if that proved really difficult should you start to investigate other methods.

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

카테고리

Help CenterFile Exchange에서 Text Data Preparation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by