【发布时间】:2014-06-27 01:59:13
【问题描述】:
假设我们有以下函数:
f = @(n) sin((0:1e-3:1) .* n * pi);
g = @(n, t) cos(n .^ 2 * pi ^2 / 2 .* t);
h = @(n) f(n) * g(n, 0);
现在,我希望能够将n 的值数组输入h 并返回n 的每个值的结果总和。
我正在努力提高效率,因此我避免了新手 for-loop 方法,即填写预先分配的矩阵并对列求和。我还尝试使用 arrayfun 并将单元格转换为矩阵然后求和,但它最终比 for 循环更慢。
有人知道我该怎么做吗?
【问题讨论】:
-
我对您要生成的内容有点困惑?你是说你想要一个
M x N矩阵,其中每个元素都由该函数操作?你能举一些例子数据吗? -
对于数组中
n的每个值,h将生成一个值向量。我相信 OP 想要计算为n的每个值生成的每个向量的总和。此外,如果输出是单个值(在您的情况下),您不需要将矩阵转换为cell。 -
我正在尝试使用我预先计算的波数值为无限方井问题生成傅里叶级数的结果。理想情况下,我想要一个单行器来生成我指定的所有 n 的 h(n) 总和。这可以通过以下方式完成:
F = zeros(1, length(0:1e-3:1));n = some vector of integers;for i = 1:length(n)F = F + h(n(i));end
标签: arrays matlab matrix sum vectorization