From: Lew on
I have just noticed that the behavior of IMPORTDATA on my (I thought) stable old install of MATLAB R2007a on Windows XP has changed: but it is more extreme than what you describe, and it has occurred only just as of the past 30 days or so! In my case,

>> x = importdata('fwyf1h1991.txt');

with a text file formated similar to this (space separates columns - no tabs; and note, header wraps on this form, but occupies only one line in file):

YY MM DD hh WD WSPD GST WVHT DPD APD MWD BAR ATMP WTMP DEWP VIS
91 06 15 00 083 05.3 05.6 99.00 99.00 99.00 999 1017.2 27.8 999.0 999.0 99.0
91 06 15 01 088 04.9 05.4 99.00 99.00 99.00 999 1018.1 27.8 999.0 999.0 99.0
91 06 15 02 085 07.2 07.6 99.00 99.00 99.00 999 1018.0 27.7 999.0 999.0 99.0
.... [many lines deleted]

This call formerly (in R6.5 right up to last month) returned a struct x with two fields, x.data a double matrix containing all numerical data from the file, and x.textdata a cell array of strings containing everything else. This ran fine just four weeks go, but today on my (essentially unmodified) 2007a install, IMPORTDATA is instead returning "x" as a single 1xN character array(!) This breaks all kinds of code. What has caused this, and what is the work-around for making IMPORTDATA useful again?? (I could of course rewrite all my code that uses IMPORTDATA to instead make detailed calls to TEXTSCAN. But I am *really* hoping to avoid that.)
From: Steven Lord on

"Lew " <lgramer-remove-this(a)rsmas-point-miami-point.edu> wrote in message
news:hruq05$jho$1(a)fred.mathworks.com...
>I have just noticed that the behavior of IMPORTDATA on my (I thought)
>stable old install of MATLAB R2007a on Windows XP has changed: but it is
>more extreme than what you describe, and it has occurred only just as of
>the past 30 days or so! In my case,
>
> >> x = importdata('fwyf1h1991.txt');
>
> with a text file formated similar to this (space separates columns - no
> tabs; and note, header wraps on this form, but occupies only one line in
> file):
>
> YY MM DD hh WD WSPD GST WVHT DPD APD MWD BAR ATMP WTMP DEWP
> VIS
> 91 06 15 00 083 05.3 05.6 99.00 99.00 99.00 999 1017.2 27.8 999.0 999.0
> 99.0
> 91 06 15 01 088 04.9 05.4 99.00 99.00 99.00 999 1018.1 27.8 999.0 999.0
> 99.0
> 91 06 15 02 085 07.2 07.6 99.00 99.00 99.00 999 1018.0 27.7 999.0 999.0
> 99.0
> ... [many lines deleted]
>
> This call formerly (in R6.5 right up to last month) returned a struct x
> with two fields, x.data a double matrix containing all numerical data from
> the file, and x.textdata a cell array of strings containing everything
> else. This ran fine just four weeks go, but today on my (essentially
> unmodified) 2007a install, IMPORTDATA is instead returning "x" as a single
> 1xN character array(!) This breaks all kinds of code. What has caused
> this, and what is the work-around for making IMPORTDATA useful again?? (I
> could of course rewrite all my code that uses IMPORTDATA to instead make
> detailed calls to TEXTSCAN. But I am *really* hoping to avoid that.)

Unless you've written your own function that shadows a function used by
IMPORTDATA, or in some other way modified your MATLAB installation, I
wouldn't expect the behavior of IMPORTDATA on the same file to have changed.
Let's check a few simpler things first.

1) Has the data file changed between the last time it imported as a struct
array and the first time it imported as a single char array? If so, can you
test IMPORTDATA on a copy of that file from prior to that last change?
[This will eliminate the case where the file changed so that its format was
no longer consistent enough to be returned as a struct. Something as small
as a missing space could have done this, theoretically.]

2) Have any of the files included in your MATLAB installation changed
between the last successful import and the first unsuccessful? In
particular, has importdata.m changed? A rudimentary check for this is to
look at the timestamp of the file in Windows Explorer.

3) Have any directories been added to or removed from your MATLAB path? In
particular, did you install any new toolboxes (whether from The MathWorks or
from another party) or did you uninstall any toolboxes?

4) If you still have access to your installation of MATLAB 6.5, does the
file still import as a struct in that version? If not, that would suggest
to me that either the same change happened in both installations or that the
problem was not caused by either installation but something lower-level.

--
Steve Lord
slord(a)mathworks.com
comp.soft-sys.matlab (CSSM) FAQ: http://matlabwiki.mathworks.com/MATLAB_FAQ


From: Vadim Teverovsky on
In addition to Steve's suggestions, a next step would be to step through the
importdata function in the debugger, to see where its doing something
unexpected. It seems likeliest that the format of the file changed, perhaps
in a subtle way.

Also, what is the string that is returned to you? Is it all of the data in
the file, or just one line?


"Steven Lord" <slord(a)mathworks.com> wrote in message
news:hrv341$r9s$1(a)fred.mathworks.com...
>
> "Lew " <lgramer-remove-this(a)rsmas-point-miami-point.edu> wrote in message
> news:hruq05$jho$1(a)fred.mathworks.com...
>>I have just noticed that the behavior of IMPORTDATA on my (I thought)
>>stable old install of MATLAB R2007a on Windows XP has changed: but it is
>>more extreme than what you describe, and it has occurred only just as of
>>the past 30 days or so! In my case,
>>
>> >> x = importdata('fwyf1h1991.txt');
>>
>> with a text file formated similar to this (space separates columns - no
>> tabs; and note, header wraps on this form, but occupies only one line in
>> file):
>>
>> YY MM DD hh WD WSPD GST WVHT DPD APD MWD BAR ATMP WTMP DEWP
>> VIS
>> 91 06 15 00 083 05.3 05.6 99.00 99.00 99.00 999 1017.2 27.8 999.0 999.0
>> 99.0
>> 91 06 15 01 088 04.9 05.4 99.00 99.00 99.00 999 1018.1 27.8 999.0 999.0
>> 99.0
>> 91 06 15 02 085 07.2 07.6 99.00 99.00 99.00 999 1018.0 27.7 999.0 999.0
>> 99.0
>> ... [many lines deleted]
>>
>> This call formerly (in R6.5 right up to last month) returned a struct x
>> with two fields, x.data a double matrix containing all numerical data
>> from the file, and x.textdata a cell array of strings containing
>> everything else. This ran fine just four weeks go, but today on my
>> (essentially unmodified) 2007a install, IMPORTDATA is instead returning
>> "x" as a single 1xN character array(!) This breaks all kinds of code.
>> What has caused this, and what is the work-around for making IMPORTDATA
>> useful again?? (I could of course rewrite all my code that uses
>> IMPORTDATA to instead make detailed calls to TEXTSCAN. But I am *really*
>> hoping to avoid that.)
>
> Unless you've written your own function that shadows a function used by
> IMPORTDATA, or in some other way modified your MATLAB installation, I
> wouldn't expect the behavior of IMPORTDATA on the same file to have
> changed. Let's check a few simpler things first.
>
> 1) Has the data file changed between the last time it imported as a struct
> array and the first time it imported as a single char array? If so, can
> you test IMPORTDATA on a copy of that file from prior to that last change?
> [This will eliminate the case where the file changed so that its format
> was no longer consistent enough to be returned as a struct. Something as
> small as a missing space could have done this, theoretically.]
>
> 2) Have any of the files included in your MATLAB installation changed
> between the last successful import and the first unsuccessful? In
> particular, has importdata.m changed? A rudimentary check for this is to
> look at the timestamp of the file in Windows Explorer.
>
> 3) Have any directories been added to or removed from your MATLAB path?
> In particular, did you install any new toolboxes (whether from The
> MathWorks or from another party) or did you uninstall any toolboxes?
>
> 4) If you still have access to your installation of MATLAB 6.5, does the
> file still import as a struct in that version? If not, that would suggest
> to me that either the same change happened in both installations or that
> the problem was not caused by either installation but something
> lower-level.
>
> --
> Steve Lord
> slord(a)mathworks.com
> comp.soft-sys.matlab (CSSM) FAQ:
> http://matlabwiki.mathworks.com/MATLAB_FAQ
>
>