2011-05-11 73 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