>> v1
[0.6324] [0.0975] [0.2785]
>> c1
[0.8147] [0.9058] [0.1270] [0.9134]
>> c1{1:3} = v1{1:3}我收到以下错误消息:
这个赋值的右边值太少,无法满足左手边的要求。
这里,c1和v1都是简单的单元格数组,也就是说,它们都有简单的数值。那么,为什么这个不能工作呢?
发布于 2016-04-11 07:02:27
当使用花括号{}时,您正在提取单元格的值。使用普通括号()来引用一组单元格,因此保留单元格而不提取实际内容。因此,下面的行将从右手侧将单元格(而不是单元格内的值)分配给左手侧:
c1(1:3) = v1(1:3)我们可以轻松地检查c1(1:3)的数据类型,并看到它实际上是一个单元数组:
>> A = c1(1:3)
A =
[1] [2] [3]
>> class(A)
ans =
cell要查看花括号{}提取值本身,我们可以执行以下操作,并看到B的数据类型是双重的
>> B = c1{1}
B =
1
>> class(B)
ans =
double正如@Dan在他的评论中提到的那样,v1{1:3}给出了三个不同的双打的http://ch.mathworks.com/help/matlab/matlab_prog/comma-separated-lists.html。您可以注意到,通过使用命令行看到三个ans =,因为所有的值都将单独返回:
>> v1{1:3}
ans =
1
ans =
2
ans =
3在此之后,您可以以另一种方式完成任务,我不建议这样做。下面通过使用级联操作符[]在LHS上提供了三个元素,RHS提供了三个元素,正如我们在上面看到的那样。
>> [c1{1:3}] = v1{1:3}
c1 =
[1] [2] [3] [7]https://stackoverflow.com/questions/36541350
复制相似问题