Mercurial > hg > octave-nkf
view examples/code/mysparse.c @ 19225:c8240a60dd01
Add penny.mat to build system.
* examples/data/penny.mat: New example data file.
* examples/data/Makefile.am: Automake file for new directory of example data files.
* examples/Makefile.am: Change to be just a pass-through to the subdirectories
code/ and data/.
* examples/@FIRfilter/FIRfilter.m, examples/@FIRfilter/FIRfilter_aggregation.m,
examples/@FIRfilter/display.m, examples/@FIRfilter/module.mk,
examples/@FIRfilter/subsasgn.m, examples/@FIRfilter/subsref.m,
examples/@polynomial/display.m, examples/@polynomial/double.m,
examples/@polynomial/end.m, examples/@polynomial/get.m,
examples/@polynomial/module.mk, examples/@polynomial/mtimes.m,
examples/@polynomial/numel.m, examples/@polynomial/plot.m,
examples/@polynomial/polynomial.m,
examples/@polynomial/polynomial_superiorto.m, examples/@polynomial/polyval.m,
examples/@polynomial/roots.m, examples/@polynomial/set.m,
examples/@polynomial/subsasgn.m, examples/@polynomial/subsref.m,
examples/COPYING, examples/addtwomatrices.cc, examples/celldemo.cc,
examples/embedded.cc, examples/fortrandemo.cc, examples/fortransub.f,
examples/funcdemo.cc, examples/globaldemo.cc, examples/helloworld.cc,
examples/make_int.cc, examples/mex_demo.c, examples/mycell.c,
examples/myfeval.c, examples/myfevalf.f, examples/myfunc.c, examples/myhello.c,
examples/mypow2.c, examples/myprop.c, examples/myset.c, examples/mysparse.c,
examples/mystring.c, examples/mystruct.c, examples/oct_demo.cc,
examples/oregonator.cc, examples/oregonator.m, examples/paramdemo.cc,
examples/standalone.cc, examples/standalonebuiltin.cc, examples/stringdemo.cc,
examples/structdemo.cc, examples/unwinddemo.cc:
Move current example files to examples/code/ directory.
* configure.ac: Add Makefiles in examples/code and examples/data directories.
* build-aux/common.mk: Define octdatadir variable.
* doc/interpreter/Makefile.am: Change location of External Code Interface
examples to examples/code directory.
* doc/interpreter/munge-texi.pl: Expand EXAMPLEFILE macro to examples/code
directory.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 19 Aug 2014 14:32:44 -0700 |
parents | examples/mysparse.c@9ac2357f19bc |
children |
line wrap: on
line source
#include "mex.h" void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { mwSize m, n, nz; mxArray *v; mwIndex i; double *pr, *pi; double *pr2, *pi2; mwIndex *ir, *jc; mwIndex *ir2, *jc2; if (nrhs != 1 || ! mxIsSparse (prhs[0])) mexErrMsgTxt ("ARG1 must be a sparse matrix"); m = mxGetM (prhs[0]); n = mxGetN (prhs[0]); nz = mxGetNzmax (prhs[0]); if (mxIsComplex (prhs[0])) { mexPrintf ("Matrix is %d-by-%d complex sparse matrix", m, n); mexPrintf (" with %d elements\n", nz); pr = mxGetPr (prhs[0]); pi = mxGetPi (prhs[0]); ir = mxGetIr (prhs[0]); jc = mxGetJc (prhs[0]); i = n; while (jc[i] == jc[i-1] && i != 0) i--; mexPrintf ("last nonzero element (%d, %d) = (%g, %g)\n", ir[nz-1]+ 1, i, pr[nz-1], pi[nz-1]); v = mxCreateSparse (m, n, nz, mxCOMPLEX); pr2 = mxGetPr (v); pi2 = mxGetPi (v); ir2 = mxGetIr (v); jc2 = mxGetJc (v); for (i = 0; i < nz; i++) { pr2[i] = 2 * pr[i]; pi2[i] = 2 * pi[i]; ir2[i] = ir[i]; } for (i = 0; i < n + 1; i++) jc2[i] = jc[i]; if (nlhs > 0) plhs[0] = v; } else if (mxIsLogical (prhs[0])) { mxLogical *pbr, *pbr2; mexPrintf ("Matrix is %d-by-%d logical sparse matrix", m, n); mexPrintf (" with %d elements\n", nz); pbr = mxGetLogicals (prhs[0]); ir = mxGetIr (prhs[0]); jc = mxGetJc (prhs[0]); i = n; while (jc[i] == jc[i-1] && i != 0) i--; mexPrintf ("last nonzero element (%d, %d) = %d\n", ir[nz-1]+ 1, i, pbr[nz-1]); v = mxCreateSparseLogicalMatrix (m, n, nz); pbr2 = mxGetLogicals (v); ir2 = mxGetIr (v); jc2 = mxGetJc (v); for (i = 0; i < nz; i++) { pbr2[i] = pbr[i]; ir2[i] = ir[i]; } for (i = 0; i < n + 1; i++) jc2[i] = jc[i]; if (nlhs > 0) plhs[0] = v; } else { mexPrintf ("Matrix is %d-by-%d real sparse matrix", m, n); mexPrintf (" with %d elements\n", nz); pr = mxGetPr (prhs[0]); ir = mxGetIr (prhs[0]); jc = mxGetJc (prhs[0]); i = n; while (jc[i] == jc[i-1] && i != 0) i--; mexPrintf ("last nonzero element (%d, %d) = %g\n", ir[nz-1]+ 1, i, pr[nz-1]); v = mxCreateSparse (m, n, nz, mxREAL); pr2 = mxGetPr (v); ir2 = mxGetIr (v); jc2 = mxGetJc (v); for (i = 0; i < nz; i++) { pr2[i] = 2 * pr[i]; ir2[i] = ir[i]; } for (i = 0; i < n + 1; i++) jc2[i] = jc[i]; if (nlhs > 0) plhs[0] = v; } }