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.

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

カテゴリ

ヘルプ センター および File ExchangeLarge Files and Big Data についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by