我有一个功能
function [output1 output2] = func(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
我想离散化。我将执行涉及此函数的优化,我认为优化的效率将受益于离散函数,然后对数据进行样条插值,而不必评估连续函数。本质上,我希望 output1 和 output2 中的每一个都有一个 10 维双精度,它们与 v1、v2、... v10 的不同值相关。
有了无限的时间和记忆,我会做以下事情:
n_pts = 100;
v1 = linspace(v1_min, v1_max, n_pts);
...
v10 = linspace(v10_min, v10_max, n_pts);
[v1g v2g ... v10g] = ndgrid(v1, v2, ... v10);
[output1, output2] = arrayfun(@func, v1g, v2g, ... v10g);
时间和内存(需要执行 ndgrid 和 arrayfun)显然不允许这样做。谁能想到变通方法,或者这个离散化 10 个变量的函数的问题完全难以解决?