在Matlab中整合向量积产品

3
我是一名有用的助手,可以为您进行翻译。以下是您需要翻译的内容:

我正在尝试集成一个涉及向量乘法的函数。然而,我一直收到错误信息。

假设alphas是某个向量。 考虑下面的代码片段:

g = @(x)prod(x.*alphas);
integral(g,-10,10);

这会产生以下错误:

使用.*时出错

矩阵维数必须一致。

在@(x)prod(x.*alphas)中出错

现在,从一个天真的角度来看。 g 是一个标量函数。如果 x 是某个数字,则 g(x) 也是一个数字。

我对Matlab还很陌生,无法理解问题所在。任何帮助都将有益。谢谢。

1个回答

2
如果 alphas 是一个向量,那么它应该为每个 x 都有一个值。当你给 integral() 一个要积分的函数时,它会尝试计算函数 g 的值,例如 g(-10:0.1:10)。如果 x 的数量与 alphas 的数量不同,则会出现错误。
在这里使用 integral() 的问题在于,你无法控制传递给 integral 中的 gx 的数量,因此,如果你想进行积分,就不能像定义 g 那样做。 编辑:以下代码可以解决问题!感谢 @Andras Deak
integral(g,-10,10,'arrayvalued',true);

谢谢!那么定义g的正确方式是什么? - Cain
@Cain 你想做什么?你有哪种具有不同alpha的函数?你能发布另一个问题来解释你想做什么吗? - Ander Biguri
2
@Cain,这个怎么样?g = @(x)prod(x(:)*alphas,2); integral(g,-10,10,'arrayvalued',true)。请注意,似乎 'arrayvalued'==true 会停止向量化计算,所以你可以直接使用 prod(x*alphas) - Andras Deak -- Слава Україні
好的:) 我建议Ander把它加入他的答案中;如果不是他对问题的解释,我就不会费心去研究细节了。 - Andras Deak -- Слава Україні

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接