【发布时间】:2016-08-11 11:22:04
【问题描述】:
如您所见,我必须从 excel 中导入此文件并将其转换为如图所示的结构。我已经能够开发出可以通过手动输入 ID 号来创建结构的代码。例如,如果我输入 150,它会给出 150 的结构,如图所示。
但是我必须自动化这个过程,即我希望 matlab 识别唯一的 Id,并创建整个结构及其每个 ID 中的所有数据和时间。
这是我的代码
function [ DynData ] = myfunction( filename )
[dat1, dat2, dat3] = xlsread(filename);
flds = dat3(1,:);
InputData = cell2struct(dat3(2:end,:),flds,2);
uIDs = unique( cell2mat(dat3(2:end, 2))) ;
for j = 1:length(dat3)
uIDs = dat3(j);
i=1;
for k = 2:length(dat3(:,1))
if dat3{k,2} == {uIDs}
IDnumber = ['ID',num2str(uIDs)];
DynData.(IDnumber).time(1,i) = dat3{k,1};
DynData.(IDnumber).ID(1,i) = dat3{k,2};
DynData.(IDnumber).data(1,i) = dat3(k,3);
i=i+1;
end
end
end
end
任何帮助将不胜感激!
【问题讨论】:
-
第一个改进,您可以避免使用符号
~存储不需要的变量。[~,~,dat] = xlsread('filename'); -
很容易做到。首先像您一样获取唯一 ID,然后使用 arrayfun(迭代唯一 ID),然后选择第二列正是迭代 ID 的相应行。