l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2008 Mar 21 11:54

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] c code question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] c code question


Here's what you do:

Write your columns as rows.  Don't worry about whether some are longer 
than others, just precede each element with a single space or tab 
(whitespace at the beginning of the file will be ignored when you import 
the file into Matlab, at the end it will be interpreted as a missing 
value), and print a newline after the last element.  You'll end up with 
a file that may or may not have the same number of elements in each 
row.  If you read this into Matlab with dlmread(), it will pad the rows 
out with zeros to the length of the longest row.  If zeros are OK, then 
transpose the array, and you've got your columns:

 >> M = dlmread('/path/to/file.txt');
 >> M = M';

If you want to be able to distinguish the missing values from real zeros 
in the data, then use textread() in Matlab:

 >> M = textread('/path/to/file.txt', '', 'emptyvalue', NaN);
 >> M = M';

And you're golden.  The second argument in the textread() call is an 
empty string, NOT a double quotation mark.


Carl Boettiger wrote:
> Hi,
> This isn't a linux question directly but I'm going to abuse the
> generosity and knowledge on this list and ask anyway:
> I'm running a c code where I'd like to print out data to a file in a
> matrix form.  I run a loop that fills in each entry of a column, which
> I print to a file fprintf(file, "%.5e\n", variable). When the loop
> starts again, I'd like to print the next set in an adjacent column,
> rather than under the existing data.  (currently I import the file
> into matlab and use reshape to convert the long vector into a matrix,
> but this doesn't work if the vectors are of different lengths).  Hope
> that made sense.  Any ideas?  Thanks!
> -Carl
> _______________________________________________
> vox-tech mailing list
> vox-tech@lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
O'Reilly and Associates
For numerous book donations.