Set the value of one cell
C Syntax
#include "matrix.h"
void mxSetCell(mxArray *array_ptr, int index, mxArray *value);
Arguments
array_ptr
Pointer to a cell mxArray.
index
Index from the beginning of the mxArray. Specify the number of elements between the first cell of the mxArray and the cell you wish to set. The easiest way to calculate index is to call mxCalcSingleSubscript.
value
The new value of the cell. You can put any kind of mxArray into a cell. In fact, you can even put another cell mxArray into a cell.
Description
Call mxSetCell to put the designated value into a particular cell of a cell mxArray. Use mxSetCell to assign new values to unpopulated cells or to overwrite the value of an existing cell.
If the specified cell is already occupied, then mxSetCell assigns the new value. However, the old cell value remains in memory until you call mxDestroyArray.
Note: Inputs to a MEX-file are constant read-only mxArrays and should not be modified. Using mxSetCell* or mxSetField* to modify the cells or fields of an argument passed from MATLAB will cause unpredictable results.
Examples
For an example of using mxSetCell to populate cells in a freshly created cell mxArray, see mxCreateCharArray.
Consider a function that calls mxSetCell to change the value already held in the first cell element.
void
modify_first_cell(mxArray *cell_array_ptr, mxArray *new_value)
{
int index_of_first_cell=0;
mxArray *old_value;
/* Get pointer to old cell. */
old_value = mxGetCell(cell_array_ptr, index_of_first_cell);
/* Free the memory that the old_value was using. */
mxDestroyArray(old_value);
/* Assign the new value to the first cell. */
mxSetCell(cell_array_ptr, index_of_first_cell, new_value);
}
For an additional example, see mxsetcell.c in the mx subdirectory of the examples directory.
See Also
mxCreateCellArray, mxCreateCellMatrix, mxGetCell, mxIsCell
[ Previous | Help Desk | Next ]