2014-07-18 49 views
0

我有一些行有如下內容的文件:存儲長度相同的內容給一個變量在MATLAB

1.000000 - 1.000200 0 -> 2 A-MPDU 1.000000 - 1.000100 SUCCESS 1.000100 - 1.000200 FAIL 
1.000425 1 TIMEOUT 
1.000150 - 1.000350 1 -> 3 A-MPDU 1.000150 - 1.000250 FAIL 1.000250 - 1.000350 FAIL 

然後我想分裂到不同的元素後,結合ROW1和ROW3一個變量:

for z = 1:length(myTextArray) 
    temp = regexp(A{z,1}, ' ', 'split'); 
    if cols == 15 
    C1 = temp; 
    end 
end 

但C1只存儲最新的「溫度」。如何讓C1存儲row1和row3的值(當然也在不同的行中)?

回答

1

使用此代碼:

ix = 0; 
    C1 = {}; 

    for z = 1:length(myTextArray) 
      temp = regexp(A{z,1}, ' ', 'split'); 

      if numel(temp) == 15 
        ix = ix + 1; 
        C1{ix} = temp; 
      end; 
    end; 

基本上你創建單元陣列C1在一個新的索引ix

後來編輯

這將創建一個二維單元陣列,而不是1D單元陣列的1D單元陣列:

ix = 0; 
    C1 = cell(0,15); 

    for z = 1:length(myTextArray) 
      temp = regexp(A{z,1}, ' ', 'split'); 
      if numel(temp) == 15 
        ix = ix + 1; 
        C1(ix, :) = temp; 
      end; 
    end; 

是,基本上相同的答案EJG89更早了,與它不會包含空單元行的區別。

+0

但它會在變量編輯器中顯示<15x1 cell>兩次,我必須再次點擊,所以它會使C1 {1,1}和C2 {1,2}。我想要的是當我點擊C1時,它會直接顯示2行這些值?怎麼做? – user2290560

+0

@ user2290560你錯誤地索引到單元格數組中。現在C1是行單元陣列的向量單元陣列,而不是矩陣單元陣列,因此您需要像「C1 {1} {3}'而不是'C1 {1,3}'那樣對其進行索引。如果你想要matriceal單元陣列,我會將代碼添加到答案中,這很簡單,順便說一句... –

+0

@ user2290560我添加了代碼。 –

0

您必須創建一個新行。既然你確定它們長度相同,你可以堅持矩陣格式。

首先prelocate空間,行m個,次列數,N:

z = ; 
n = ; 

C1 = zeros(m,n) % You might need a cell instead of an array 

for z = 1:length(myTextArray) 
    temp = regexp(A{z,1}, ' ', 'split'); 
    if cols == 15 
    C1(z,:) = temp; % Important change right here, use indexes to create a multidimensional storage variable. 
    end 
end 

所以最後你就必須使用索引的C1分配一行。

+0

我得到這個錯誤:發生以下錯誤轉換從單元格到雙:錯誤使用雙重,從單元格轉換爲雙重是不可能的 – user2290560

相關問題