我可能会犯这个错误,但我有数据{1},数据{2} ...数据{i}。在每个中,我有.type1,.type2 .... .typeN。数组的长度不同,因此水平连接不起作用。
为简单起见
>> data{1}.type1
ans =
1
2
3
>> data{2}.type1
ans =
2
4
5
6
结果应为[1; 2; 3; 2; 4; 5; 6]
我一直试图循环但不确定如何?我将有一个可变数量的文件(a,b ..)。我如何进行循环和连接?最终我需要一个1xN阵列的所有这些..
我的工作代码,谢谢......把它搞定了..
for i = 1:Types
currentType = nTypes{i}
allData.(currentType)=[];
for j = 1:nData
allData.(currentType) = [allData.(currentType); data{j}.(currentType)(:,3)]; %3rd column
end
end
答案 0 :(得分:0)
查看cat
,第一个参数是维度。在您的简单示例中,它将是:
result = cat(1,a,b);
相当于:
result = [a;b];
或者您可以将它们连接为行向量并转置回列向量:
result = [a',b']';
对于单元格数组内部结构的情况,我认为没有任何方法可以循环。假设您有一个带有M
元素和N
“类型”的单元格数组作为每个元素的结构字段。你可以这样做:
M=length(data);
newData=struct;
for i=1:M
for j=1:N
field=sprintf('type%d',j); % //field name
if (M==1), newData.(field)=[]; end % //if this is a new field, create it
newData.(field)=[newData.(field);data{i}.(field)];
end
end