2016-06-08 86 views
2

我有4865 1 -by- 1單元格數組,我需要通過cell2mat將它們轉換爲普通數組。當我運行它,我得到以下錯誤:循環cell2mat將單元格數組轉換爲數組

In an assignment A(I) = B, the number of elements in B and I must be the same.

for i=1:4865, 

    c(i) = cell2mat(A(i)) 

end 
+0

你有4000個電池陣列或一個單元有4000個元素的數組? 「A」是一個有4865個元素的單元陣列,每個元素由一個'1'-by-'1'單元陣列組成?每個細胞中都有什麼? – Dan

+0

您無法將整個矩陣轉換爲矢量的單個元素 – Umar

+0

您能告訴我們您的初始單元格數組實際包含的是什麼? – Suever

回答

1

不能在整個矩陣(這是在細胞)分配到一個指數

讓我們下面的例子

>> cell_test ={[1 2 3;4 5 6],[1 2 3; 7 8 9]} 

cell_test = 

    [2x3 double] [2x3 double] 

你在做什麼是這個

>> cell_test{1} 

ans = 

    1  2  3 
    4  5  6 

>> b(1) = cell_test{1} 
Subscripted assignment dimension mismatch. 

其中一個選項是,你通過eval()爲每一個新的索引創建一個新的變量名稱,如ofcourse有許多其他的選擇

>> i = 1 

i = 

    1 

eval(['B_',num2str(i) ,'=cell_test{i}']) 

B_1 = 

    1  2  3 
    4  5  6 

更新:結構方法B(i).data = =cell_test{i}

+2

請不要推薦使用'eval'這種東西。等待OP澄清他們想要的東西。 – Suever

+0

這只是一個建議,如果你推薦我會更新並添加一個保存到結構方法 – Umar

+0

謝謝奧馬爾,它爲我工作。你能告訴我節省結構的方法嗎? –