您可以将函数应用于向量中的每个项目,例如:v + 1
,或者您可以使用该功能arrayfun
。如何在不使用 for 循环的情况下对矩阵的每一行/列执行此操作?
许多内置操作,例如sum and prod已经能够跨行或列进行操作,因此您可以重构您正在应用的函数以利用这一点。
如果这不是一个可行的选择,一种方法是将行或列收集到单元格中,使用mat2cell or 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 option:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)