Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F122708029
spm_sample_vol.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Jul 21, 16:52
Size
2 KB
Mime Type
text/x-c
Expires
Wed, Jul 23, 16:52 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
27549637
Attached To
R5163 Slepians
spm_sample_vol.c
View Options
/*
* $Id: spm_sample_vol.c 4452 2011-09-02 10:45:26Z guillaume $
* John Ashburner
*/
#include "mex.h"
#include "spm_mapping.h"
void
mexFunction
(
int
nlhs
,
mxArray
*
plhs
[],
int
nrhs
,
const
mxArray
*
prhs
[])
/*
void mexFunction(nlhs, plhs, nrhs, prhs)
int nlhs, nrhs;
mxArray *plhs[];
const mxArray *prhs[];
*/
{
MAPTYPE
*
map
,
*
get_maps
();
int
m
,
n
,
k
,
hold
;
double
background
=
0.0
;
if
(
nrhs
!=
5
||
nlhs
>
4
)
mexErrMsgTxt
(
"Incorrect usage."
);
map
=
get_maps
(
prhs
[
0
],
&
n
);
if
(
n
!=
1
)
{
free_maps
(
map
,
n
);
mexErrMsgTxt
(
"Bad image handle dimensions."
);
}
for
(
k
=
1
;
k
<=
3
;
k
++
)
if
(
!
mxIsNumeric
(
prhs
[
k
])
||
mxIsComplex
(
prhs
[
k
])
||
mxIsSparse
(
prhs
[
k
])
||
!
mxIsDouble
(
prhs
[
k
]))
{
free_maps
(
map
,
1
);
mexErrMsgTxt
(
"Coordinates must be numeric, real, full and double."
);
}
m
=
mxGetM
(
prhs
[
1
]);
n
=
mxGetN
(
prhs
[
1
]);
if
(
mxGetM
(
prhs
[
2
])
!=
m
||
mxGetN
(
prhs
[
2
])
!=
n
||
mxGetM
(
prhs
[
3
])
!=
m
||
mxGetN
(
prhs
[
3
])
!=
n
)
mexErrMsgTxt
(
"Coordinates must have compatible dimensions."
);
if
(
!
mxIsNumeric
(
prhs
[
4
])
||
mxIsComplex
(
prhs
[
4
])
||
mxIsSparse
(
prhs
[
4
])
||
!
mxIsDouble
(
prhs
[
4
])
||
(
mxGetM
(
prhs
[
4
])
*
mxGetN
(
prhs
[
4
])
!=
1
&&
mxGetM
(
prhs
[
4
])
*
mxGetN
(
prhs
[
4
])
!=
2
))
{
free_maps
(
map
,
1
);
mexErrMsgTxt
(
"Bad hold & background argument."
);
}
hold
=
(
int
)(
*
(
mxGetPr
(
prhs
[
4
])));
if
(
abs
(
hold
)
>
127
)
{
free_maps
(
map
,
1
);
mexErrMsgTxt
(
"Bad hold value."
);
}
if
(
mxGetM
(
prhs
[
4
])
*
mxGetN
(
prhs
[
4
])
>
1
)
background
=
mxGetPr
(
prhs
[
4
])[
1
];
if
(
nlhs
<=
1
)
{
plhs
[
0
]
=
mxCreateDoubleMatrix
(
m
,
n
,
mxREAL
);
resample
(
m
*
n
,
map
,
mxGetPr
(
plhs
[
0
]),
mxGetPr
(
prhs
[
1
]),
mxGetPr
(
prhs
[
2
]),
mxGetPr
(
prhs
[
3
]),
hold
,
background
);
}
else
{
if
(
hold
==
0
)
{
free_maps
(
map
,
1
);
mexErrMsgTxt
(
"This wont work for nearest neighbour resampling."
);
}
plhs
[
0
]
=
mxCreateDoubleMatrix
(
m
,
n
,
mxREAL
);
plhs
[
1
]
=
mxCreateDoubleMatrix
(
m
,
n
,
mxREAL
);
plhs
[
2
]
=
mxCreateDoubleMatrix
(
m
,
n
,
mxREAL
);
plhs
[
3
]
=
mxCreateDoubleMatrix
(
m
,
n
,
mxREAL
);
resample_d
(
m
*
n
,
map
,
mxGetPr
(
plhs
[
0
]),
mxGetPr
(
plhs
[
1
]),
mxGetPr
(
plhs
[
2
]),
mxGetPr
(
plhs
[
3
]),
mxGetPr
(
prhs
[
1
]),
mxGetPr
(
prhs
[
2
]),
mxGetPr
(
prhs
[
3
]),
hold
,
background
);
}
free_maps
(
map
,
1
);
}
Event Timeline
Log In to Comment