首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:如何将向量应用于单元格中的每个向量?

Matlab:如何将向量应用于单元格中的每个向量?
EN

Stack Overflow用户
提问于 2015-01-08 22:19:24
回答 3查看 42关注 0票数 0

如果V = [3 11 20 31 40]A=[1 2 3],我们可以做V(A(:))=[3 11 20]

如果A是个细胞,我怎么能做到呢?

如果是A={[1 2 3],[2 5],[3 5]},我想要{[3 11 20],[11 40],[20 40]}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-08 22:25:06

A转换为矩阵(有两种方法):

代码语言:javascript
复制
V = [3 11 20 31 40]
A=[1 2 3]
V(cell2mat(A))
V([A{:}])

如果A是索引的单元格数组,请使用

代码语言:javascript
复制
cellfun(@(m) V(m),A,'UniformOutput',false)
票数 4
EN

Stack Overflow用户

发布于 2015-01-08 22:25:15

使用V(cell2mat(A))=[3 11 20]V([A{:}])=[3 11 20]

票数 2
EN

Stack Overflow用户

发布于 2015-01-08 22:41:09

但是如果A={12,3,2,5,3,5},我想要{311,20,11,40,2040}?

我不认为有办法正确地向量化这个问题,但您至少可以使用cellfun将其放到一行中。不会特别快,但至少它很简洁.差不多吧。

代码语言:javascript
复制
cellfun(@(x) V(x), A, 'UniformOutput', false)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27850568

复制
相关文章

相似问题

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