0

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

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

从数据集中读取

我有一个数据向量。

my_number = [1 2 3]

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

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

3 回答 3

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     

索引 a 的替代方法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 
于 2013-08-12T22:41:06.737 回答
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]
于 2013-08-11T01:46:19.253 回答
0

我认为这只有在您的向量与您的单元格大小相同时才有效

my_output=cell(length(my_cell),2)

for i=1:length(my_cell)
my_output(i,:)=[my_cell(i),my_number(i)];
end
于 2013-08-11T00:09:06.763 回答