ちくのう症(蓄膿症)は「菌」が原因!?

matlabのquad,quadl関数についての質問です
pを1*nのデータとして
func1 = @(eta) (eta.^10).*((1-eta).^(10))./(prod(p.*eta+(1-p).*(1-eta)));
K=quadl(func1,0,1);
を計算したいのですが、
エラー ==> times
行列の次元は同じである必要があります
となってしまいます。
多分prodがいけないと思うのですが、pの要素が多いため(p(i)*eta+(1-p(i))*(1-eta))のように全部書き下すことができません。
どう直せばよいのでしょうか

このQ&Aに関連する最新のQ&A

A 回答 (1件)

matlab2011b だったら,


quadl では横ベクトルを関数に渡すので,
func1 に横ベクトルが入力されたときに同じサイズの横ベクトルが返るように組む.

p を縦ベクトルにして,prod 内の
p.*eta+(1-p).*(1-eta)
の .* を * に変える.

ただし,
func1 をベクトル値(eta) が入力された時に
同じ長さのベクトルを計算できるように関数としてファイルに書くのが正解です.

この回答への補足

初心者ですみませんが、自分の考えだと
etaはスカラーでpはベクトルでprodによってスカラーに変換されるから
結局func1はetaの一変数の関数となってquadlに代入されて計算されるイメージですが、
調べたらfunc1はベクトルxを受けてベクトルyを返す関数らしい。

matlabのベクトルに関するイメージがいまいちつかめないので、何かおすすめの本はありますか。

補足日時:2011/12/19 23:42
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング