2013-08-12 74 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矩陣歡迎