2013-08-12 35 views
1

我将ASCII数据加载到Matlab中,我宁愿将它们存储为单元数组而不是结构,以便后续分析更加直接。将ASCII文件导入为单元阵列而不是结构

当我使用uiimport函数时,它允许我将数据作为单元格数组导入,但我想在没有图形界面的情况下导入大量数据。现在,我一直在试图使用importdata功能:

data=importdata(filename,'\t',15); 

这完美的作品,除了它保存数据的结构的事实。有没有其他的方法来做到这一点,或者是否对我来说最简单的做一个struct的单元格?

非常感谢提前!

+0

如果你的数据格式化,那么你可能想检查'textscan'。你可以添加一个例子(一点点)的数据文件? – Nick

+2

由于它似乎与'uiimport' GUI一起工作,为什么不简单地选中“生成MATLAB代码”复选框并让matlab为您生成代码? –

+0

为什么不使用'struct2cell'将结构转换为单元格否则使用'textscan' – fpe

回答

1

我还没有一个非常漂亮的解决方案,但它的工作原理。所以我去了使用毕竟importdata,使用for循环创建包含每个科目和试验结构阵列单元,

ntrials=4; %# of trials per subject 
    datanamelist=['subjectA'; 'subjectB'; 'etc' ]; 
    for i=1:size(datanamelist,1) 
     for j=1:ntrials; 
     filename=sprintf('%s%g.txt',datanamelist(i,:),j); 
     PDdata{i,j}=importdata(filename,'\t',15); %first 15 lines are headers 
     end 
    end 

我现在能够从每个特定的阵列中提取数据,对其进行访问作为PDdata{subject,ntrials}.data

正因为如此创建由(遍历对象i和试验j)的

dataMatrix(:,:,i,j)=PDdata{i,j}.data 

更漂亮解决方案仍然含有所有的数据的4D矩阵欢迎