如何循环变量的单元格数组并对它们中的每一个执行操作?

时间:2013-05-17 21:49:37

标签: matlab

我有一个名为bin_this的变量单元格数组。我需要遍历它,访问每个变量,bin中该变量中的数据,并将binned数据放入新创建的变量中。 所以如果数组包含a,b,c ....等。 我需要创建一组新的分箱变量 a_bin,b_bin,c_bin等 没有摧毁旧的

1 个答案:

答案 0 :(得分:0)

如果你的数据是一个单元格数组,这里是如何循环它:

bin_this = {[1, 2, 3, 4],[5, 6, 7, 6],[1, 2, 3, 7]} % example data
s = size(bin_this)

binnedResults = cell(s);
for t = 1:s(2)
    data = bin_this{t}; % access data
    binnedData = hist(data); 
    binnedResults{t} = binnedData; %store data
end

如果您的数据是结构数组,并且您想要为其添加字段,请按以下步骤操作:

bin_this = struct('a', [1, 2, 3, 4], 'b', [5, 6, 7, 6], 'c', [1, 2, ...
                    3, 7]);
newFields = struct('a','a_bin','b','b_bin','c','c_bin'); % define the new field names 


fields = fieldnames(bin_this);  % get the field names from bin_this
for t = 1:length(fields)
    f = fields{t}; 
    data = bin_this.(f); % get the data with a particular field name
    binnedData = hist(data); 
    newField = newFields.(f); % get the new field name
   bin_this.(newField) = binnedData; % add the binned data to the original structure with
                                     % a new field name. 
end