1. ホーム
  2. matlab

[解決済み] MATLABでmvnpdfとquadがベクトルを含む

2022-02-25 02:36:43

質問

以下のコードを実行しようとしました。

F=@(x)mvnpdf([6 x],[0 0],[1 0;0 1]);
P=quad(F,12,100);

を確率積分して得ることができます。 x2 を12から100までのジョイントガウス分布で表示します。 しかし、matlabはこのエラーを報告します。

X と MU は同じ数の列を持つ必要があります。

を実行すると、とても不思議なことが起こります。 F(1) , F(2) などを使用すると、正常に動作します。

クアッドを使って統合するとエラーが発生するのはなぜですか? mvnpdf 関数を使用できますか?

なぜ、パラメータ quad はスカラーではなく、関数Fに渡されるのですか?

どのように解決するのですか?

それは quad には値のベクトルが渡されます。 F であり、単一の値ではありません。その場合は F 例えば、次のようなものです。

F = @(X)mvnpdf([repmat(6, size(X(:),1), 1) X(:)],[0,0],[1,0;0,1]);

6という数字を、vectorの行の数だけ繰り返しただけです。 X . ただし X は列ベクトルでなければならないので、明示的に X(:) . これで、次のように書くことができます。

F(1:100)

を、エラーを出さずに実行することができます。