what's a fast way to read ascii data?
Judd Storrs
storrsjm at email.uc.edu
Thu Jul 2 21:35:55 CDT 2009
Well, I don't know about your particular files, but I've often been able to
get a file reader working acceptably by reading the entire file as a
character array and then tokenizing the entire string at once using the
string processing functions and then processing the tokens in a while loop.
Here's an excerpt from some code I've written:
pid = fopen( path, "r" );
tok = regexp( fread(pid, "*char")', "\"([^\"]+)\"|([^\\s]+)", "match" );
fclose(pid);
For the files this code reads, the EOL's didn't matter, and the regular
expression needed to pull in "strings inside quotations" as single objects.
You could probably concoct a regular expression to extract lines with four
numbers from the input. Here's a regexp that will extract four integers
separated by whitespace that works on the file example you posted:
fid = fopen("data.txt","r") ;
tok = regexp( fread(fid, "*char")', '\s*(\d+\s*){4}\n', "match" );
fclose( fid );
See
http://www.gnu.org/software/octave/doc/interpreter/Manipulating-Strings.htmlfor
other ideas about manipulating strings.
--judd
On Thu, Jul 2, 2009 at 4:56 PM, Dr. Johannes Zellner
<johannes at zellner.org>wrote:
> Hi,
>
> I'd like to read ascii data like this:
> *
> 1 2 3 4
> 5 6 7 8
> ....
> some text
> 9 10 11 12
> 13 14 15 16
> ...
> some more text*
>
> so esentially, I've some lines and columns of numeric data but sometimes
> there's also a line of text.
>
> I'm interested mainly in reading the numeric data.
>
> If I do it like this:
>
> istream = fopen(fname, 'r');
> while -1 != (vstr = fgets(istream))
> items = str2double(vstr);
> if ~isnan(items) && length(items) == 4
> ....
>
> it is really slow.
>
> Any hints to do this faster?
>
> Johannes
>
>
> _______________________________________________
> Help-octave mailing list
> Help-octave at octave.org
> https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www-old.cae.wisc.edu/pipermail/help-octave/attachments/20090702/b09a1cdb/attachment-0001.html
More information about the Help-octave
mailing list