簡體   English   中英

如何繪制涉及Matlab中集成的函數?

[英]How do I plot functions involving integration in Matlab?

我有一個可用的特征函數CF(t, param1, param2, ...) (這里param s是某種分布的參數,被認為是固定的)。 我想使用Gil-Pelaez公式來獲取CDF,所以我寫了以下內容:

function [ F ] = CDF( x, param1, param2, ... )

integrand = @(v) imag(exp(-1i.*v.*x) .* CF(t, param1, param2, ...)) ./ v;
F = 0.5 - (1./pi) .* integral(integrand, 0, 100);

end

這適用於單個值,例如CDF(0.1, param1, param2, ...)給我想要的結果。 現在我想針對x的范圍繪制CDF ,所以我做了

x = linspace(-1,1,100);
y = CDF(x, param1, param2, ...)
plot(x, y)

我最終遇到了以下錯誤:

Not enough input arguments.

Error in integralCalc/iterateScalarValued (line 314)
                fx = FUN(t);

Error in integralCalc/vadapt (line 132)
            [q,errbnd] = iterateScalarValued(u,tinterval,pathlen);

Error in integralCalc (line 75)
        [q,errbnd] = vadapt(@AtoBInvTransform,interval);

Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);

但是y = CDF(x, param1, param2, ...)確實起作用,所以罪魁禍首似乎是被積數的exp(-1i.*v.*x)部分,因為vx的大小不起作用比賽。 但我不確定如何解決此問題。

您已經猜對了,v和x的大小不匹配會導致錯誤。 integral將向量值傳遞到函數句柄,以通過一次計算多個點的函數值來加快計算速度。

但是在這種情況下,您應該在CDF函數中對積分的調用中將參數'ArrayValued'true 這將迫使積分將v的標量值傳遞給函數句柄,然后CDF將能夠為向量x返回向量y的向量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM