我在 Matlab 中工作,我使用单元格数组来处理不同类型的数据,但是我想在操作结束时将所有单元格数组合成一个,或者可能是一些其他可以避免使用多个单元格阵列的方法(可能是struct
可以做到这一点,但我不知道如何)。
我的代码:
for ii = 1:10
pp{ii,1}=ii;
for jj = 1:6
p1{jj} = jj;
pp1{jj} = p1{jj}+1;
p2{jj} =jj^2;
pp2{jj} = p2{jj}+1;
p3{jj} = jj^3;
pp3{jj} = p3{jj}+1;
end
p{ii,1} = ([pp(ii,:),pp1,pp2,pp3])';
p{ii,2} = (['T' num2str(ii)]);
end
实际输出:
p =
{19x1 cell} 'T1'
{19x1 cell} 'T2'
{19x1 cell} 'T3'
{19x1 cell} 'T4'
{19x1 cell} 'T5'
{19x1 cell} 'T6'
{19x1 cell} 'T7'
{19x1 cell} 'T8'
{19x1 cell} 'T9'
{19x1 cell} 'T10'
期望的输出:
在单元格中的每个p{1,1}
p{1,2}
合并,即它{19x2 cell}
,最后,所有单元格数组合并为一个单元格数组。
编辑1:
我想将data
及其label
输入到crossval
这就是我要做的事情。
另外,当我拥有training
test
和crossval('mcr', data, label, 'predfun', @trainingANDtesting, 'kfold', length(label))
数据分开
答案 0 :(得分:0)
你的权利,这看起来像结构的工作。试试这个:
for ii = 1:10
pp{ii,1}=ii;
for jj = 1:6
p1{jj} = jj;
pp1{jj} = p1{jj}+1;
p2{jj} =jj^2;
pp2{jj} = p2{jj}+1;
p3{jj} = jj^3;
pp3{jj} = p3{jj}+1;
end
p(ii).data = ([pp(ii,:),pp1,pp2,pp3])';
p(ii).label = (['T' num2str(ii)]);
end
现在,您的单元格的两列都可以通过一个数字来寻址:索引。要访问数据,请执行以下操作:
myData = p(5).data
myLabel = p(5).label
我希望这就是你要找的东西。如果没有,请告诉我,我会再试一次。
编辑1:好的,这个怎么样:
p{ii,1} = [([pp(ii,:),pp1,pp2,pp3])'; (['T' num2str(ii)])]
或者,或者:
data = ([pp(ii,:),pp1,pp2,pp3])';
label = (['T' num2str(ii)]);
p{ii} = [data; label]