我有一个字符串的单元结构,例如。
my_cell = 'apple.csv' 'banana.csv' 'orange.csv'
从数据集中读取
我有一个数据向量。
my_number = [1 2 3]
我想输出一个表/数组,其中第一列中有名称,第二列中有一些数字。
my_output=['apple' 1; 'banana' 2; 'orange' 3]
除了单元格数组,您还可以使用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
为了在同一个数组中混合字符串和数字,您的“表”需要是一个元胞数组:
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]
我认为这只有在您的向量与您的单元格大小相同时才有效
my_output=cell(length(my_cell),2)
for i=1:length(my_cell)
my_output(i,:)=[my_cell(i),my_number(i)];
end