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)
如果 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)