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