matlab - 如何将函数应用于 MATLAB 中矩阵的每一行/列?

标签 matlab function matrix vectorization

您可以将一个函数应用于向量中的每个项目,例如,v + 1,或者您可以使用函数 arrayfun。如何在不使用 for 循环的情况下对矩阵的每一行/列执行此操作?

最佳答案

许多内置操作,如 sumprod已经能够跨行或跨列操作,因此您可以重构您正在应用的函数以利用这一点。

如果这不是一个可行的选择,一种方法是使用 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

关于matlab - 如何将函数应用于 MATLAB 中矩阵的每一行/列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307249/

相关文章:

matlab - 根据唯一值频率对向量进行排序

matlab - 在 MATLAB 中解析文本文件

php - 无法从循环中为数组赋值

c++ - 非模板类中的函数模板

c - 为什么访问我的矩阵会出现段错误?

performance - Matlab中的快速矩阵乘法

artificial-intelligence - 使用 MATLAB 的神经网络

python - 在 numpy 或 scipy 中左逆?

c - 在 C 中声明函数会给出预期的错误 ';' 、 ',' 或 ')'

SQL 表作为矩阵 (T-SQL)