2015-05-18 45 views
2

我具有由命名爲T. 在該矩陣中的每個單元格中包含的下一個事20X單元的矩陣:正則表達式格式,並使用2個單元陣列

1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26 

我想限定它分裂成列,以便我用:

Data=regexp(T,',','split'); 

結果是即時得到數據= 20X1細胞和各細胞內那裏有與splited矢量我想另一小區。

到目前爲止,它的所有優點,但我想要做的下一件事是採取所有的時間變量(例如26:00:01.490),但他們是在2個單元格內。 我想要做的事情是Data{:,1}{1,2},但它說錯誤的單元格引用操作不好。

有人知道如何在另一個單元內的單元陣列中取整列?

回答

1

可以通過使用的vertcat{:}的組合串聯1x9單元之間的數據做。

%//First form T 
str='1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'; 
str=repmat({str},20,1); 
Data=regexp(str,',','split'); 
Data1=vertcat(Data{:}); 

%//Get your time data in form of cells 
timeData_cells=Data1(:,2); 

%//Get your time data in form of a matrix 
timeData_matrix=vertcat(Data1{:,2}) %//This will work only if all time strings 
            %//have the same length. 

%Answer 
timeData_cells= 
    '26:00:01.490' 
    '26:00:01.490' 
      . 
      . 
      . 
    '26:00:01.490' 
    '26:00:01.490' 

timeData_matrix= 
    26:00:01.490 
    26:00:01.490 
     . 
     . 
     . 
    26:00:01.490 
    26:00:01.490 
2

如果所有二級單元格的大小相同(即所有的字符串都有相同數量的逗號),則可以垂直連接所有二級單元格以形成二維單元陣列,然後它是便於訪問列。

例如:

>> T(1,:) = {'1,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// example... 
>> T(2,:) = {'2,26:00:01.490, 2.40,101.2, 7.8,-24.0,20.40,-0.76,-0.26'}; %// ...with 2 rows 
>> Data = regexp(T,',','split'); %// as per your code 
>> Data = vertcat(Data{:}); %// concatenate vertically to obtain 2D cell array 
>> Data(:,1:2) %// now you can access columns 
ans = 
    '1' '26:00:01.490' 
    '2' '26:00:01.490' 
+0

嗨,謝謝你的評論我只是不明白爲什麼我需要做repmat,不是它只是乘以我的整個矩陣? – Ben

+0

@ben'repmat'只是一個簡單的方法,我用兩行來定義一個例子'T'。我編輯了答案以使其更清晰 –

+0

謝謝,我現在明白了。 – Ben