MATLAB: How to import data into a dataset from a space-delimited ascii file.

import dataset

I have several large (10's and 100's of MByte) ascii files. First row contains variable names. Rest are data. All arranged in columns. Example file is attached. Variables are mix of floats, integers, binary and hex. If I use interactive Import Data and choose 'dataset' with everything else set to defaults, this always works. Would like to do the same thing, but by program. I like the dataset approach because of the dot subscripting and the import seems quick.
But, the closest I can get to success is below, but gives the following errors…
K>> ctlset = dataset('File',[name, '_CtlDat1.dat'],'VarNames',true,'Delimiter',' '); Error using dataset/readFile>tdfread (line 302) Requires the same number of delimiters on each line.
Error in dataset/readFile (line 163) raw = tdfread(file,delimiter,tdfreadHeaderLines,treatAsEmpty);
Error in dataset (line 347) a = readFile(a,fileArg,otherArgs);

Best Answer

Mark, I think you're going to need to use MultipleDelimsAsOne for this file. To do that, you're gonna need to pass in a format, something like [repmat('%f',1,23) '%s%s'] depending on what you want to do with the binary and the hex values. Except that at the end of the file on line 73496, you have a partial line that you'll need to fix (or maybe the attachment was somehow truncated).
If you're using R2013b or later, you might think about using table (and readtable) rather than dataset. I was able to get these data in using
t = readtable('5617B608_Blanco_09Oct15_TBEI_Enp1_CtlDat1.dat', ...
'Format',[repmat('%f',1,23) '%s%s'], ...
'Delimiter',' ','MultipleDelimsAsOne',true);
Hope this helps.