我有一个函数MATLAB:如何离散10个变量的函数(目前使用ndgrid和arrayfun)?
function [output1 output2] = func(v1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
,我想离散。我将执行涉及此功能的优化,我认为优化的效率将从离散函数中受益,然后对数据执行样条插值,而不必评估连续函数。基本上,我想为输出1和输出2中的每一个都输出一个10-D double,它们与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个变量的函数完全无法解析的问题?
所以,你想运行你的函数'1e20'次?如果每一个都需要一个毫秒,那么你将会运行数千年。优化在数学中是一个巨大的领域是为了避免做这样的事情... –
我基本上试图设想一种方式,我可以收集数据在这个函数(插值,以后),而不需要一个荒谬的数额的数据点。 – user178831
worng的东西是开始的方法。 –