Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何使用具有可变深度的单元格数组作为函数的输入_Arrays_Matlab_Function_Global Variables_Cell - Fatal编程技术网

Arrays 如何使用具有可变深度的单元格数组作为函数的输入

Arrays 如何使用具有可变深度的单元格数组作为函数的输入,arrays,matlab,function,global-variables,cell,Arrays,Matlab,Function,Global Variables,Cell,我有一个全局单元数组,其中数据存储在一个具有可变深度的结构中。假设它具有以下结构: global table table{1,1}.data table{1,2}.sub{1,1}.data table{1,2}.sub{1,2}.data table{1,3}.sub{1,1}.sub{1,1}.data table{1,3}.sub{1,1}.sub{1,2}.data 现在,我想定义一个函数,它可以更改表变量的数据。问题是,当我使用例如表{1,2}.sub{1,2}作为函数的输入并让函数

我有一个全局单元数组,其中数据存储在一个具有可变深度的结构中。假设它具有以下结构:

global table
table{1,1}.data
table{1,2}.sub{1,1}.data
table{1,2}.sub{1,2}.data
table{1,3}.sub{1,1}.sub{1,1}.data
table{1,3}.sub{1,1}.sub{1,2}.data

现在,我想定义一个函数,它可以更改
变量的数据。问题是,当我使用例如
表{1,2}.sub{1,2}
作为函数的输入并让函数更改数据时,原始
变量中的数据不会更改。 草图:


(我还没有找到有关此问题的信息。)

您可以在输出中使用相同的参数

%function
function region = changedata(region)
    region.data='banana';
end

%main
table{1,2}.sub{1,2} = changedata(table{1,2}.sub{1,2});

否则您需要一个句柄类。

表{1,2}。sub{1,2}
不是指向元素的指针,而是元素数据的副本(按值调用)。这就是为什么在函数中写入时它不会被更改的原因。如果结构的形式为
table{1,2,1,2}
,则可以在函数中使用
varargin
,并编写
table{varargin{:}
。我想构造一个字符串(例如
表{1,2}.sub{1,2}
),但我不知道是否可以使用它来存储新数据。
%function
function region = changedata(region)
    region.data='banana';
end

%main
table{1,2}.sub{1,2} = changedata(table{1,2}.sub{1,2});