以下是我的问题的概括
function E = FunctionIntegration(S)
I = @(f) log(det(4 * S(f)));
E = integral(I, -pi, pi)
S
是一个函数句柄,它接受标量输入f
并返回一个矩阵。当我尝试运行此函数时,出现Inner matrix dimensions must agree
错误。
我理解integral
要求函数I
采用向量输入,这就是问题所在,但在这种情况下,我没有看到适应方式,因为我必须传递此向量函数S
返回一个矩阵。有办法解决这个问题吗?
请注意S
的示例可能是:
S = @(f) [f 0; 0 1]
显然,在这种情况下,积分很容易分析,但函数S
可以是任何标量到矩阵变换。
答案 0 :(得分:1)
您的问题是integral
将值数组传递给I
。但是你的I
只期望一个标量。试试这个:
function E = functionIntegration(S)
I = @(x) arrayfun(@(f) log(det(4 * S(f))), x);
E = integral(I, -pi, pi);
end
我已将您的被积函数包装到arrayfun
的调用中,该调用将循环遍历integral
传入的数组并计算每个条目的被积函数:
>> S = @(x) x * eye(3, 3);
>> functionIntegration(S)
ans =
28.8591 + 9.8696i