Matlab单元格数组元素赋值

时间:2016-04-11 06:30:02

标签: matlab cell variable-assignment

>> v1
    [0.6324]    [0.0975]    [0.2785]

>> c1
    [0.8147]    [0.9058]    [0.1270]    [0.9134]

>> c1{1:3} = v1{1:3}

我收到以下错误消息:

  

此作业的右侧几乎没有值可满足   左手边。

此处c1v1都是简单的单元格数组,即两者都具有简单的数值。那么,为什么不能这样做?

1 个答案:

答案 0 :(得分:3)

使用大括号{}时,您提取单元格的值。使用常规括号()来引用一组单元格,因此保留单元格而不提取实际内容。因此,以下行将从右侧到左侧分配单元格(而不是单元格内的值):

c1(1:3) = v1(1:3)

我们可以轻松检查c1(1:3)的数据类型,看看它实际上是 cell -array:

>> A = c1(1:3)
A = 
    [1]    [2]    [3]
>> class(A)
ans =
cell

要看到大括号{}提取值本身,我们可以执行以下操作,看到B的数据类型是 double

>> B = c1{1}
B =
     1
>> class(B)
ans =
double

正如 @Dan 在评论中提及的那样,v1{1:3}会为您提供三个单独双打的comma-separated list。您可以注意到,通过使用命令行查看三个ans =,因为所有值都将单独返回:

>> v1{1:3}
ans =
     1
ans =
     2
ans =
     3

在此之后,您可以以不同的方式进行分配,我不建议这样做。以下通过使用连接运算符[]在LHS上提供了三个元素,RHS提供了三个元素以及我们在上面看到的。

>> [c1{1:3}] = v1{1:3}
c1 = 
    [1]    [2]    [3]    [7]