首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab单元阵列单元分配

Matlab单元阵列单元分配
EN

Stack Overflow用户
提问于 2016-04-11 06:30:02
回答 1查看 86关注 0票数 1
代码语言:javascript
复制
>> v1
    [0.6324]    [0.0975]    [0.2785]

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

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

我收到以下错误消息:

这个赋值的右边值太少,无法满足左手边的要求。

这里,c1v1都是简单的单元格数组,也就是说,它们都有简单的数值。那么,为什么这个不能工作呢?

EN

回答 1

Stack Overflow用户

发布于 2016-04-11 07:02:27

当使用花括号{}时,您正在提取单元格的值。使用普通括号()来引用一组单元格,因此保留单元格而不提取实际内容。因此,下面的行将从右手侧将单元格(而不是单元格内的值)分配给左手侧:

代码语言:javascript
复制
c1(1:3) = v1(1:3)

我们可以轻松地检查c1(1:3)的数据类型,并看到它实际上是一个单元数组:

代码语言:javascript
复制
>> A = c1(1:3)
A = 
    [1]    [2]    [3]
>> class(A)
ans =
cell

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

代码语言:javascript
复制
>> 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 =,因为所有的值都将单独返回:

代码语言:javascript
复制
>> v1{1:3}
ans =
     1
ans =
     2
ans =
     3

在此之后,您可以以另一种方式完成任务,我不建议这样做。下面通过使用级联操作符[]在LHS上提供了三个元素,RHS提供了三个元素,正如我们在上面看到的那样。

代码语言:javascript
复制
>> [c1{1:3}] = v1{1:3}
c1 = 
    [1]    [2]    [3]    [7]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36541350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档