我正在尝试将单元格转换为结构:
A = {'p1', 10, 'ny'; 'p2', 12, 'nj'};
我想要一个有3个字段的结构
A.person = {'p1';'p2'}
A.age = [10;12]
A.state = {'ny', 'nj'}
我尝试过cell2struct但是我的格式是我不想要的。 我知道我错过了一些简单的事情。有什么想法吗?
答案 0 :(得分:4)
cell2struct
有什么问题?让
>> fields = {'person','age','state'}; %// field names
您可以使用以下三种版本之一:
>> S = cell2struct(A, fields, 2); %// fold 2nd dim into fields
S =
2x1 struct array with fields:
person
age
state
(给出2x1结构数组)。
>> S = cell2struct(mat2cell(A.', ones(1,size(A,2))), fields, 1)
S =
person: {'p1' 'p2'}
age: {[10] [12]}
state: {'ny' 'nj'}
(给出一个1x1结构数组,每个字段中有一个行单元格数组。)
>> S = cell2struct(mat2cell(A, size(A,1), ones(1,size(A,2))), fields, 2)
S =
person: {2x1 cell}
age: {2x1 cell}
state: {2x1 cell}
>> S.person
ans =
'p1'
'p2'
(给出一个1x1结构数组,每个字段中有一个列单元格数组)
答案 1 :(得分:1)
鉴于结果应该具有不同的arity,具体取决于字段,一种方法是从这开始:
A = {'p1', 10, 'ny'; 'p2', 12, 'nj'};
继续这个:
A = struct( ...
'person', {A(:,1)}, ...
'age', cell2mat(A(:,2)), ...
'state', {A(:,3)'} ...
);