>> v1
[0.6324] [0.0975] [0.2785]
>> c1
[0.8147] [0.9058] [0.1270] [0.9134]
>> c1{1:3} = v1{1:3}
我收到以下错误消息:
此作业的右侧几乎没有值可满足 左手边。
此处c1
和v1
都是简单的单元格数组,即两者都具有简单的数值。那么,为什么不能这样做?
答案 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]