2016-05-16 317 views
0

我有csv文件中的大表我想導入到matlab。 我的數據是這樣的錯誤使用horzcat - textscan - 導入到matlab

2015-08-19 13:07:06,2015-08-20 00:00:00,0,0,2,2,97,74089906202417,96140046618,117409555595550,2,0,1 

我試着使用:

dataArray = textscan(fileID, '%{yyyy-MM-dd hh:mm:ss}D%{yyyy-MM-dd hh:mm:ss}D%u%u%u%u%d%u64%u64%u64%u%u64%u', 'Delimiter', ',', 'WhiteSpace', '', 'ReturnOnError', false); 
fclose(fileID); 
a = [dataArray{1:end}]; 
clearvars 

但劑量不會因使用horzcat 尺寸的數據類型不匹配,這種錯誤

錯誤工作的矩陣串聯不一致。 a = [dataArray {1:end}]中的錯誤;

現在誰能告訴我如何導入這些數據? (日期時間欄對我來說非常重要,以便正確導入)

注意:我嘗試了以下所有格式,但仍然出現錯誤。

  • 'datenum(%d)datenum(%d)%U%U%U%U%d%U64%U64%U64%U%U64%U';
  • '%s%s%u%u%u%u%u%u%d%u64%u64%u64%u%u64%u'
  • '%F64%F64%F64%F64%F64%F64%F64%F64%F64%F64%F64%F64%F64'
  • 「%S%S%F64%F64%F64%F64%F64% F64 F64%F64%F64%F64%F64' %
+0

你可以給一些'dataArray'數據的樣本嗎?那麼'dataArray {1}','dataArray {2}'...等輸出是什麼? – Dan

回答

1
更正

代碼被提供如下。在代碼中,如果不需要,您不必將其存儲到數組中。您可以訪問dataArray中的每個元素,如dataArray{2}(5),在這種情況下,您將在csv文件中得到5th line中的second date and time

我以前%s代替%u6474089906202417,96140046618,117409555595550因爲

74089906202417將適合%U64

96140046618將適合%U64

117409555595550不適合在117409555595550

考慮到其他tw的可能性o也可能不適合csv文件的其他行,我使用%s爲他們三個。您可以根據您的數據進行更改。

fileID = fopen('data.csv'); 
dataArray = textscan(fileID,'%s %s %u %u %u %u %d %s %s %s %u %u %u','Delimiter',','); 
fclose(fileID); 

% Storing to array 
dateTime1 = cell2mat(dataArray{1}); 
dateTime2 = cell2mat(dataArray{2}); 
uinteger1=dataArray{3}; 
uinteger2=dataArray{4}; 
uinteger3=dataArray{5}; 
uinteger4=dataArray{6}; 
integer1=dataArray{7}; 
string1=cell2mat(dataArray{8}); 
string2=cell2mat(dataArray{9}); 
string3=cell2mat(dataArray{10}); 
uinteger5=dataArray{11}; 
uinteger6=dataArray{12}; 
uinteger7=dataArray{13};