添付画像の数式のプロ​グラムの組み方がわか​りません。

3 次查看(过去 30 天)
Takuya Fushihara
Takuya Fushihara 2020-5-13
閲覧ありがとうございます。
以下の数式の実装を行なっているのですが、コードの書き方がわからず躓いています。
for文を使えば書けるのですが、上司の指示でfor文を使うなと言われてしまい困っています。
よろしくお願いいたします。

采纳的回答

Hiroki Okawa
Hiroki Okawa 2020-5-13
以下式に誤り等ありましたらすみません。
確認用に適当な乱数でパラメータを設定しました。
n = 20;
m = 30;
A = rand(1, m);
B = rand(1, m);
Y = rand(n, m);
sigma2 = rand;
式を観やすくするために後半の総和を先に計算します。
各iでそれぞれ値が決まるので、変数名をsub_answer, サイズはn行1列となり、
sub_answer = sum(repmat(A ./ (B.^2), n, 1) .* Y, 2);
で得られます。repmat関数は今回のような処理、特にベクトルから行列を作るときに便利です。
最後に全体を計算します。logの底に関しては確認ください(log10なのかlogなのか)。
answer = 0.5 * sum(log(1 + sigma2 * sub_answer));
以上です。
一応確認用にfor文でも計算し、一致することを確認してください(下記は例)。
check = 0;
for i = 1 : n
sub = 0;
for j = 1 : m
sub = sub + A(j) / (B(j)^2) * Y(i, j);
end
check = check + log( 1 + sigma2 * sub);
end
check = check / 2;
disp(answer == check) % 一致すれば1が表示される
  1 个评论
Takuya Fushihara
Takuya Fushihara 2020-5-17
返信遅れて申し訳ございません!
ご丁寧な回答ありがとうございます!

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 数学 的更多信息

产品


版本

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!