您可以通过说例如v + 1将函数arrayfun向量中的每个项目,也可以使用函数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
更多&回答...