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

Matlab: How to Apply vector to each vector in cell?

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

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

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

如果A是索引元胞数组,使用

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

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

but if A={[1 2 3],[2 5],[3 5]} and i want to have {[3 11 20],[11 40],[20 40]}?

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

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