필터 지우기
필터 지우기

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

조회 수: 4 (최근 30일)
正義 金田
正義 金田 2023년 5월 23일
편집: Hiroyuki Hishida 2023년 6월 6일
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!