我有一个字符串的单元格结构,例如。
my_cell = 'apple.csv' 'banana.csv' 'orange.csv'
从阅读数据集
我有一个数据向量。
my_number = [1 2 3]
我想输出一个表/数组,其中第一列中有名称,第二列中有一些数字。
my_output=['apple' 1; 'banana' 2; 'orange' 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