Clear Filters
Clear Filters

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

4 views (last 30 days)
正義 金田
正義 金田 on 23 May 2023
Edited: Hiroyuki Hishida on 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 Comments
正義 金田
正義 金田 on 24 May 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 on 6 Jun 2023
Edited: Hiroyuki Hishida on 6 Jun 2023
すみません、通知がされず見落としておりました。fxを1より小さい値で刻まれたいのでしたら、例えばこういう表現が可能ですが、いかがでしょうか?
fx = 0.001 : 0.001 : 1.0;
これは、0.001から1.0まで、0.001ずつ値を増やしております

Sign in to comment.

Answers (0)

Categories

Find more on ループと条件付きステートメント in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!