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});