您可以将一个函数应用于向量中的每个项目,例如,v + 1
,或者您可以使用函数 arrayfun
。如何在不使用 for 循环的情况下对矩阵的每一行/列执行此操作?
许多内置操作,如 sum
和 prod
已经能够跨行或跨列操作,因此您可以重构您正在应用的函数以利用这一点。
如果这不是一个可行的选择,一种方法是使用 mat2cell
将行或列收集到单元格中或 num2cell
, 然后使用 cellfun
对生成的元胞数组进行操作。
例如,假设您要对矩阵 M
的列求和。您可以简单地使用 sum
来做到这一点:
M = magic(10); %# A 10-by-10 matrix
columnSums = sum(M, 1); %# A 1-by-10 vector of sums for each column
下面是如何使用更复杂的 num2cell
来做到这一点/cellfun
选项:
M = magic(10); %# A 10-by-10 matrix
C = num2cell(M, 1); %# Collect the columns into cells
columnSums = cellfun(@sum, C); %# A 1-by-10 vector of sums for each cell
我是一名优秀的程序员,十分优秀!