Matlab:如何将矢量应用于细胞中的每个载体?

时间:2015-01-08 22:19:25

标签: matlab

如果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]}

3 个答案:

答案 0 :(得分:4)

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

V = [3 11 20 31 40]
A=[1 2 3]
V(cell2mat(A))
V([A{:}])

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

cellfun(@(m) V(m),A,'UniformOutput',false)

答案 1 :(得分:2)

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

答案 2 :(得分:2)

  

但如果A = {[1 2 3],[2 5],[3 5]}并且我希望{[3 11 20],[11 40],[20 40]}?

我认为没有办法正确地向量化这个问题,但你至少可以使用cellfun将它变成一行。它不会特别快,但至少它很简洁......是的。

cellfun(@(x) V(x), A, 'UniformOutput', false)