尝试计算以下表达式,
quad(@(n)quad(@(m)unifpdf(m-n,0,1),-10,10),-10,10)
但是我收到一条消息说:
??? Error using ==> minus
Matrix dimensions must agree.
Error in ==> @(m)unifpdf(m-n,0,1)
你能告诉我如何解决这个问题吗?
尝试计算以下表达式,
quad(@(n)quad(@(m)unifpdf(m-n,0,1),-10,10),-10,10)
但是我收到一条消息说:
??? Error using ==> minus
Matrix dimensions must agree.
Error in ==> @(m)unifpdf(m-n,0,1)
你能告诉我如何解决这个问题吗?
这里的问题是以下要求:
函数 y = fun(x) 应该接受向量参数 x 并返回向量结果 y,即在 x 的每个元素处计算的被积函数。
unipdf
似乎满足这个要求,但quad
它本身却不是。
要解决此问题,您需要编写一个接受向量参数的包装函数,x
使用函数计算内部积分quad
,并返回结果向量:
function [r] = Test()
r = quad(@(n)InnerIntegral(n),-10,10);
end
function [y] = InnerIntegral(n)
y = zeros(size(n));
for i = 1 : length(n)
y(i) = quad(@(m)unifpdf(m - n(i), 0, 1), -10, 10);
end;
end