MATLAB: Reading in ascii files with white space as delimiter.

asciidlmreadreadtext;

I am trying to read in a very simple ascii file that looks like the following:
PRES HGHT TEMP DWPT RELH MIXR DRCT SKNT THTA THTE THTV
hPa m C C % g/kg deg knot K K K
-----------------------------------------------------------------------------
994.0 270 7.0 6.0 93 5.93 40 10 280.6 297.1 281.6
989.0 312 6.2 5.2 93 5.64 42 12 280.2 295.9 281.2
972.0 455 4.8 4.0 95 5.27 48 18 280.2 294.9 281.1
...
There seem to be a dozen functions that I can read this in with but I'm struggling with all of them.
The simplest seems to be dlmread. I'm currently using the command:
M = dlmread('radiosonde.ascii',' ',3,1)
However this seems to register a single space as the delimiter instead of all the white space. If I use:
M = dlmread('radiosonde.ascii')
It registers the white space as the delimiter but I cannot specify to ignore the headers. Is there some way to specify white space as the delimitter while also ignoring the headers?
Is there a better way to do this? Why hasn't Mathworks streamlined reading text files to be one universal function?

Best Answer

The dlmread function digests only numeric data so it will have problems with the strings.
I would use the textscan function:
fidi = fopen('radiosonde.ascii','rt');
D = textscan(fidi, repmat('%f',1,11), 'Delimiter',' ', 'MultipleDelimsAsOne',true, 'HeaderLines',3, 'CollectOutput',true);
You might need other name-value pair agruments, but this should get you started. The repmat call creates the input format string for the numerical data.