【发布时间】:2015-07-09 14:25:43
【问题描述】:
我有一个全局元胞数组,其中数据存储在具有可变深度的结构中。假设它具有以下结构:
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
现在,我想定义一个可以更改table 变量数据的函数。问题是,当我使用例如table{1,2}.sub{1,2} 作为函数的输入并让我的函数更改数据时,原始table 变量中的数据不会更改。
草图:
%function
function changedata(region)
region.data='banana';
end
%main
changedata(table{1,2}.sub{1,2});
(我还没有找到关于这个问题的信息。)
【问题讨论】:
-
table{1,2}.sub{1,2}不是指向元素的指针,而是其数据的副本(按值调用)。这就是为什么在函数中写入它时它不会改变。 -
没错。如果结构是
table{1,2,1,2}的形式,你可以在函数中使用varargin并写成table{varargin{:}}。我有构建一个字符串的想法(例如table{1,2}.sub{1,2}),但我不知道你是否可以使用它来存储新数据。
标签: arrays matlab function global-variables cell