2011-05-11 86 views
0

我的工作空间中有大约50个元素(1列char数组)。是否有任何方法可以将所有这些元素放入单个数据集中,而无需明确地对每个数据集进行处理我有一个变量x,它列出了所有的元素名称。我已经尝试了很多东西,但似乎没有任何工作。数据集()的帮助在这种情况下也没有帮助。希望有人能帮助我解决这个最终障碍,然后才能看到一些结果。Matlab:有关数据集的问题()

回答

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 
+0

感谢,唯一的问题是,我的元素都有独立的变量。这就是导致所有问题的原因。 – Mike 2011-05-11 16:03:48

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