Matlab:关于数据集的问题()

时间:2011-05-11 15:19:25

标签: matlab dataset

我的工作区中有大约50个元素(1列char数组)。有没有办法将所有这些元素放入单个数据集中,而无需明确地解决每个元素。我有一个变量x,它列出了所有的元素名称。我已经尝试过很多东西,但似乎没什么用。在这种情况下,dataset()的帮助也没有帮助。希望在我最终看到一些结果之前,有人可以帮助我解决这个最后的障碍。

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你的工作区中有50个变量,其所有名称都存储在变量x中(我假设它是一个50元素的单元格数组)。以下示例(仅包含3个变量)说明了如何将一组变量合并为一个dataset

>> var1 = ['a'; 'b'; 'c'];        %# A 3-by-1 character array
>> var2 = ['d'; 'e'; 'f'];        %# A 3-by-1 character array
>> var3 = ['g'; 'h'; 'i'];        %# A 3-by-1 character array
>> x = {'var1'; 'var2'; 'var3'};  %# The variable names in a 3-by-1 cell array
>> varData = cellfun(@eval,x,'UniformOutput',false)  %# Collect the variable data
                                                     %#   in a cell array
>> data = num2cell([varData x],2);  %# Combine the variable data with the
                                    %#   variable names and collect each pair
                                    %#   in an additional cell array
>> ds = dataset(data{:})  %# Pass the data to dataset as a comma separated list

ds = 

    var1    var2    var3
    a       d       g   
    b       e       h   
    c       f       i   

答案 1 :(得分:0)

以下是一个示例,说明如何使用单个名称标记所有元素。

elems={'abc';'def';'ghi'};
d=dataset({elems,'NAME'})

d = 

    NAME     
    'abc'    
    'def'    
    'ghi' 

如果要为每个元素分配不同的标签(存储为单元格数组),那么这是一个示例,说明如何:

elems={'abc';'def';'ghi'};
names={'NAME1';'NAME2';'NAME3'};
data=cellfun(@(x){elems{x},names{x}},num2cell(1:length(elems)),'UniformOutput',false);
d=dataset(data{:})

d = 

    NAME1    NAME2    NAME3
    abc      def      ghi