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