2016-06-08 70 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

谢谢奥马尔,它为我工作。你能告诉我节省结构的方法吗? –

相关问题