🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.soft-sys.matlab
Article #109

Re: Some Questions on Matlab

#109
From: Brad Hedstrom
Date: Wed, 27 Jan 1993 18:45
109 lines
4325 bytes
On Tue, 26 Jan 1993 16:25:01 GMT, sumargoh@widget.fiu.edu said:
>2.  The MatLab package comes with some C source codes to read binary
>files and convert them to numbers.  I tried to implement a binary to
>number conversion using the above mentioned C source codes with no
>avail.  Has anyone out there ever written such routine in C and would
>like to share?

Here are two C subroutines for writing floating-point and integer
Matlab binary data files. I've been using them for years on Suns and
Macs. They're pretty much right out of the Matlab manual if I remember
correctly .

file matlabbin.h
extern void fmatsave();
extern void imatsave();

file matlabbin.c
typedef struct{
	long int type;	/* type of file (MOPT) */
	long int mrows;	/* number of rows of variable */
	long int ncols;	/* number of colums of variable */
	long int imagf;	/* 0 => no imaginary part, 1 => imaginary part */
	long int namlen;/* length of name string (including NULL) */
} Fmatrix;

# include <stdio.h>
# include <string.h>

/* This routine writes floating point data (matrix or vector) 
   in the matlab file format */

void fmatsave(real, imag, rowspace, colspace, name, fileptr)
float *real;	/* real part of vector */
float *imag;	/* imaginary part of vector */
int rowspace;	/* number of rows of variable */
int colspace;	/* number of colums of variable */
char *name;	/* pointer to name of variable */
FILE *fileptr;	/* pointer to destination file */

{
	int mn;		/* row/column counter */
	Fmatrix x;	/* MATLAB file data structure */

	/* define constants */
	x.type = 1010;	/* Sun ID, column wise, float precision, numeric */

	/* define the MATLAB data structure */
	x.mrows = rowspace;
	x.ncols = colspace;
	if (imag == NULL){		/* check for existance of imaginary */
		x.imagf = 0;
	} else {
		x.imagf = 1;
	}
	x.namlen = strlen(name) + 1;	/* add one for NULL not counted */

	/* write binary MATLAB file */
	fwrite(&x, sizeof(Fmatrix), 1, fileptr);
	fwrite(name, sizeof(char), x.namlen, fileptr);
	mn = x.mrows * x.ncols;	
	fwrite(real, sizeof(float), mn, fileptr);
	if (x.imagf){
		fwrite(imag, sizeof(float), mn, fileptr);
	}
}

/* This routine writes integer data (matrix or vector) 
   in the matlab file format */

void imatsave(real, imag, rowspace, colspace, name, fileptr)
int *real;	/* real part of vector */
int *imag;	/* imaginary part of vector */
int rowspace;	/* number of rows of variable */
int colspace;	/* number of colums of variable */
char *name;	/* pointer to name of variable */
FILE *fileptr;	/* pointer to destination file */

{
	int mn;		/* row/column counter */
	Fmatrix x;	/* MATLAB file data structure */

	/* define constants */
	x.type = 1020;	/* Sun ID, column wise, float precision, numeric */

	/* define the MATLAB data structure */
	x.mrows = rowspace;
	x.ncols = colspace;
	if (imag == NULL){		/* check for existance of imaginary */
		x.imagf = 0;
	} else {
		x.imagf = 1;
	}
	x.namlen = strlen(name) + 1;	/* add one for NULL not counted */

	/* write binary MATLAB file */
	fwrite(&x, sizeof(Fmatrix), 1, fileptr);
	fwrite(name, sizeof(char), x.namlen, fileptr);
	mn = x.mrows * x.ncols;	
	fwrite(real, sizeof(int), mn, fileptr);
	if (x.imagf){
		fwrite(imag, sizeof(int), mn, fileptr);
	}
}
--
___________________________________________________________________________
Brad Hedstrom: Grad Student, Research Assistant | Elec. & Comp. Engr. Dept.
Also `Consultant to the Stars' in:              |    University of Victoria
DSP, LabVIEW, Networking, Sun, and Macintosh    |    Victoria, B.C., Canada
Internet: hedstrom@sirius.UVic.CA               |     (a.k.a. Brazil North)
Technical Details
Message-ID: <BRAD.HEDSTROM.93Jan27104521@active.UVic.CA>
Path: arc1-ca.pugleaf.net!sparky!uunet!charon.amdahl.com!amdahl!rtech!sgiblab!spool.mu.edu!sol.ctr.columbia.edu!destroyer!cs.ubc.ca!news.UVic.CA!sirius!Brad.Hedstrom
References: <C1Gyxq.9p1@fiu.edu>

Show Full Headers
Complete Article Headers
Newsgroups: comp.soft-sys.matlab
Path: arc1-ca.pugleaf.net!sparky!uunet!charon.amdahl.com!amdahl!rtech!sgiblab!spool.mu.edu!sol.ctr.columbia.edu!destroyer!cs.ubc.ca!news.UVic.CA!sirius!Brad.Hedstrom
From: Brad.Hedstrom@engr.UVic.CA (Brad  Hedstrom)
Subject: Re: Some Questions on Matlab
In-Reply-To: sumargoh@widget.fiu.edu's message of Tue, 26 Jan 1993 16:25:01 GMT
Message-ID: <BRAD.HEDSTROM.93Jan27104521@active.UVic.CA>
Lines: 109
Sender: news@sol.UVic.CA
Nntp-Posting-Host: active.uvic.ca
Organization: University of Victoria, Victoria, BC, Canada
References: <C1Gyxq.9p1@fiu.edu>
Date: Wed, 27 Jan 93 18:45:28 GMT