在Matlab中将2D函数与参数积分

时间:2015-11-05 13:06:15

标签: matlab multidimensional-array integral

我在Matlab中有一个函数,它有四个参数:

function result = my_function(par1, x, y, par2)
// some code
end

我希望将它集成到2D(沿着x和y维度),用于选择par1和par2的值。我是这样做的:

par1 = 1;par2 =2;
result = integral2(@(x,y)my_function(par1, x, y, par2), xmin, xmax, ymin, ymax);

但是,当我运行此代码并在我的函数中显示变量x和y的大小时,它很大。 integral2函数一次在参数数组上执行我的函数。

如何强制matlab一次为x和y的一个值执行my_function函数?

当然,我可以检查函数中x和y的大小,然后手动创建一个结果数组:

function result = my_function(par1, x, y, par2)
result = zeros(size(x));
for i=1:size(result(:))
% do the work here
end
reshape(result, size(x))
end

但这不是一个非常优雅的解决方案。

更新:我同意整数是一个标量,我喜欢这样。问题是我的函数只在参数(x和y)是标量时起作用。 Matlab需要我的函数值数组来计算积分,所以当x和y是数组时,它会对我的函数进行一次计算。我希望它能多次评估我的函数x和y,它们是标量。

0 个答案:

没有答案