生成一个包含字符串列和数字的表/数组

时间:2013-08-10 23:48:39

标签: string matlab cell

我有一个字符串的单元格结构,例如。

my_cell = 'apple.csv' 'banana.csv' 'orange.csv'

从阅读数据集

我有一个数据向量。

my_number = [1 2 3]

我想输出一个表/数组,其中第一列中有名称,第二列中有一些数字。

my_output=['apple' 1; 'banana' 2; 'orange' 3]

3 个答案:

答案 0 :(得分:0)

我认为这只有在您的矢量与细胞大小相同时才有效

my_output=cell(length(my_cell),2)

for i=1:length(my_cell)
my_output(i,:)=[my_cell(i),my_number(i)];
end

答案 1 :(得分:0)

为了在同一个数组中混合字符串和数字,你的“表”必须是一个单元格数组:

my_cell = {'apple.csv','banana.csv','orange.csv'}; % data
my_number = [1 2 3]; % data

my_output = cell(length(my_cell),2); % initialize output cell array
[my_output{:,1}] = deal(my_cell{:}); % asign first column of cell array
my_number_cell = num2cell(my_number); % convert vector to cell
[my_output{:,2}] = deal(my_number_cell{:}); % asign first column of cell array

给出

>> disp(my_output)
    'apple.csv'     [1]
    'banana.csv'    [2]
    'orange.csv'    [3]

答案 2 :(得分:0)

除了单元格数组之外,您还可以使用dataset(),它在一些初始开销之后比前者轻,并且还允许您使用.(点)语法访问其字段,即'struct'语法:

% Example input
my_cell   = repmat({'apple.csv'; 'banana.csv'; 'orange.csv'} ,1000,1);
my_number = repmat([1; 2; 3],1000,1);

% a is a cell array, b is a dataset
a = [my_cell(:), num2cell(my_number(:))]
b = dataset({my_cell(:), 'name'},{my_number(:),'number'})

显示的变量:

a = 
    'apple.csv'     [1]
    'banana.csv'    [2]
    'orange.csv'    [3]
b = 
    name                number
    'apple.csv'         1     
    'banana.csv'        2     
    'orange.csv'        3     

索引dataset()的替代方法:

b(:,1)
ans = 
    name            
    'apple.csv'     
    'banana.csv'    
    'orange.csv'    

b.name
ans = 
    'apple.csv'
    'banana.csv'
    'orange.csv'

b(:,'number')
ans = 
    number
    1     
    2     
    3