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

4 次查看(过去 30 天)
正義 金田
正義 金田 2023-5-23
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 个评论
正義 金田
正義 金田 2023-5-24
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 2023-6-6
编辑:Hiroyuki Hishida 2023-6-6
すみません、通知がされず見落としておりました。fxを1より小さい値で刻まれたいのでしたら、例えばこういう表現が可能ですが、いかがでしょうか?
fx = 0.001 : 0.001 : 1.0;
これは、0.001から1.0まで、0.001ずつ値を増やしております

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 ループと条件付きステートメント 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!