How to skip (variable) white space using textread

If I have a text file with different amount of white spaces in between the text and numbers, how can I get "textread" to ignore the (variable) whitespaces? For example see test(002).txt
Eventually I want to make a table with these variables to make plots and do statistics etc.

 採用された回答

Jeff Miller
Jeff Miller 2018 年 3 月 30 日

0 投票

GetNumsInAsciiFile on File Exchange will probably do what you want: https://au.mathworks.com/matlabcentral/fileexchange/66692-getnumsinasciifile-sfname-

2 件のコメント

Angelique Remmers
Angelique Remmers 2018 年 4 月 4 日
To bad I have R2015b..
Walter Roberson
Walter Roberson 2018 年 4 月 4 日
The code in that submission does not use anything newer than R2013a.

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2018 年 3 月 30 日

1 投票

I suggest using
readtable()
I do not recommend textread() in any release from R14 onwards. (I do not mean R2014* -- I mean R14, MATLAB 7.0, release in June 2004.)

7 件のコメント

Angelique Remmers
Angelique Remmers 2018 年 4 月 4 日
If I try readtable, I get the error "input must be a row vector of characters". Even if I make a txt or dat file with the text from te example I get the same error.
filename = 'testfile.dat';
fileID = fopen(filename)
T = readtable(fileID)
Angelique Remmers
Angelique Remmers 2018 年 4 月 4 日
This is the text in the file:
Lastname,Gender,Age
Smith,M,38
Johnson,M,43
Angelique Remmers
Angelique Remmers 2018 年 4 月 4 日
I think it has to do with fopen. Since the fileID is -1, and I read this is when fopen cannot open the file..
Walter Roberson
Walter Roberson 2018 年 4 月 4 日
You do not readtable() a file identifier, you readtable() a file name.
T = readtable(filename);
However if you are getting a fileID of -1 then it probably cannot find the file, and you might need to specify the directory name as well. For example,
[filename, filepath] = uigetfile('*.dat', 'Choose a data file');
if ~ischar(filename)
return; %user cancel
end
filename = fullfile(filepath, filename);
T = readtable(filename);
Angelique Remmers
Angelique Remmers 2018 年 4 月 5 日
Fopen now works correct, thanks!
The initial problem however is still there. I don't see how I can solve the problem with the inconsistent white spaces between the variables/numbers. The Delimiter is variable since the amount of white spaces differ, so cannot use this. If I use Format he reads the whole row as one string, in stead of one string and 4 numbers.
In my text file the first row contains 5 different words, with variables white spaces amounts in between. And the upcoming rows contain one word, followed by 4 numbers, also with variable white space amounts in between.
Angelique Remmers
Angelique Remmers 2018 年 4 月 5 日
Just found the MultipleDelimsAsOne! Thanks again.
Walter Roberson
Walter Roberson 2018 年 4 月 5 日
readtable() will take care of this for you.
If you use textscan() then use a format of '%s%s%s%s', and do not bother using MultipleDelimsAsOne . Any amount of whitespace on input is skipped before a %s or numeric format item is processed.

サインインしてコメントする。

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by