質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Q&A

解決済

1回答

1560閲覧

matlabで最小二乗法を解く

kakikukekonbu

総合スコア19

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

0グッド

0クリップ

投稿2020/02/04 05:05

前提・実現したいこと

matlabで最小二乗法にL1ノルムの正則化項を加えた式を解いています.
前回質問したことで,lasso関数を用いた部分のエラーは解決されました.
Xa:27×256 single
Xb:60×256 single
XaとXbは上記のようなサイズで,lasso関数を用いた解TLは
TL:1620×100 single
になりました.
最小二乗法の後に,
D=sqrt(sum(sum((Xa-TL*Xb).^2))/256);
を解かなければならいのですが,TLのサイズが合わないため解くことができません

イメージ説明

発生している問題・エラーメッセージ

配列の次元が一致していません

該当のソースコード

D=sqrt(sum(sum((Xa-TL*Xb).^2))/256);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

matlab

1Y=rand(27,256); 2X=rand(60,256); 3 4n1=size(Y,1); 5n2=size(X,1); 6b=Y(:); 7A=kron(X',eye(n1)); 8W=lasso(A,b); 9[~,n3]=size(W); 10w=reshape(W,n1,n2,n3); 11 12D=sqrt(norm(A*W-b)^2/256)

投稿2020/02/04 11:14

WathMorks

総合スコア1582

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakikukekonbu

2020/02/05 05:17

実行したのですが,エラーが返されました. 引数は 2 次元であるか、少なくとも 1 つの引数がスカラーでなければなりません。 サイズは以下のようでした. b:6912×1 A:6912×1620 w:1620×100
WathMorks

2020/02/05 06:38

wではなくWです。
kakikukekonbu

2020/02/05 08:32

訂正して実行したのですが同様のエラーが返されました
WathMorks

2020/02/05 11:19

sqrt(sum(A*W-b).^2/256) でWの列それぞれに対する誤差が計算できます
kakikukekonbu

2020/02/06 02:37

解きたい式が D=sqrt(sum(sum((Xa-TL*Xb).^2))/256); 上記の式になるのですが, 回答を頂いた式とは同意でしょうか.
kakikukekonbu

2020/02/07 03:01

行列の次元が違うのでエラーが返されるのですが,解決法はありますでしょうか
WathMorks

2020/02/07 04:03

sqrt(sum(A*W-b).^2/256) でWの列それぞれに対する誤差が計算できます. これでできませんか?
kakikukekonbu

2020/02/07 05:36

やってみますね. ちなみになんですけど, w=reshape(W,n1,n2,n3); ここでreshapeしたwは後に使わないのですが, reshapeする理由は何なのでしょうか.素人質問で申し訳ありません
WathMorks

2020/02/07 06:06

前回のコードをコピペした結果です。 各正則化パラメータそれぞれに対するwが欲しいなら、それを使えばよい、という意味合いです。
kakikukekonbu

2020/02/07 07:11

なるほどです. 実行したのですが, 同様のエラーが出ます
WathMorks

2020/02/07 13:39 編集

W=lasso(A,b); が実行できるなら A*W-b も問題なく計算できると思うのですが。
kakikukekonbu

2020/02/08 05:21

すみません.完全にこちらのミスでした,. 無事解決できました.ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問