[vox-tech] c code question

Norm Matloff matloff at cs.ucdavis.edu
Thu Mar 20 19:00:49 PDT 2008


> 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!

I don't know MATLAB, but all those vector lengths treat vectors as
objects, meaning that the length of the vector is incorporated into the
object.  By contrast, C or C++ is just a "high-level assembly language,"
with arrays simply being regions of memory.  What is likely happening is
that C is taking your MATLAB file and simply laying out the vectors
contiguously in memory, which since there is no demarcation between
arrays probably results in a shorter vector being "filled" by the next
one.

You can write your own converter to deal with this, though I suspect
that MATLAB has some kind of "export" code available somewhere.

Norm


More information about the vox-tech mailing list