最小二乗法の計算方法​について,配列インデ​ックスに関するエラー​の解決方法.

5 Ansichten (letzte 30 Tage)
正義 金田
正義 金田 am 23 Mai 2023
Bearbeitet: Hiroyuki Hishida am 6 Jun. 2023
fx=10^-2:10^-1 % 範囲指定
bx=p(fx)
l1=log10(bx);
l2=log10(fx);
MY=mean(l1); % l1結果の平均
MX=mean(l2); % l2結果の平均
SXY=0; % SXY = 0
for a=1:length(fx)    
SXY=SXY+(l1(a)-MY)*(l2(a)-MX);  %最小二乗法による回帰直線の傾き
end
SXY=SXY/length(fx);
z=SXY/var(l2)
以上のプログラムでエラーが出ます.(配列インデックスは正の整数または logical 値でなければなりません。)
このエラーを解決するにはどのようにすればよいでしょうか.
  3 Kommentare
正義 金田
正義 金田 am 24 Mai 2023
Hishida様
コメントありがとうございます.
 仰る通り,範囲指定をしている冒頭のfxで(配列インデックスは正の整数または logical 値でなければなりません)というエラーメッセージが出てきます.
 下記コードのように,範囲を1よりも大きな値にすることでz=〇〇といったデータを得られるのですが,1よりも小さい範囲でのzの値を求めたく思っています.(z=〇〇の形すら出力されません)
ご検討のほど,よろしくお願いいたします.
また不備がありましたら,ご連絡いただければと思います.
fx=10^1:10^2 % 範囲指定
bx=p(fx)
l1=log10(bx);
l2=log10(fx);
MY=mean(l1); % l1結果の平均
MX=mean(l2); % l2結果の平均
SXY=0; % SXY = 0
for a=10:20:length(fx)
SXY=SXY+(l1(a)-MY)*(l2(a)-MX); %最小二乗法による回帰直線の傾き
end
SXY=SXY/length(fx);
z=SXY/var(l2)
Hiroyuki Hishida
Hiroyuki Hishida am 6 Jun. 2023
Bearbeitet: Hiroyuki Hishida am 6 Jun. 2023
すみません、通知がされず見落としておりました。fxを1より小さい値で刻まれたいのでしたら、例えばこういう表現が可能ですが、いかがでしょうか?
fx = 0.001 : 0.001 : 1.0;
これは、0.001から1.0まで、0.001ずつ値を増やしております

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!