Matlabで単純な多項式曲線を近似しようとしています。次のようにプロットされた測定データ(ここからダウンロードできます)があります。
ここで、2次の多項式をこの曲線に適合させたいと思います。そこで、Matlabで次のことを行いました。
load vel.csv
load dp.csv
[p, ~, ~] = polyfit(vel, dp, 2);
figure()
scatter(vel, dp);
hold on;
plot(vel,polyval(p,vel));
hold off;
ただし、結果はMatlabが多項式に適合しているようには見えません。
Matlabのpolyfit
関数を使用して適切なカーブフィットを取得するにはどうすればよいですか?
それらは使用しませんが、追加の出力を指定するpolyfit
とx
、多項式フィットを実行する前にデータを中央揃えおよびスケーリングします。これにより、異なる多項式係数が生成されます。
>> [p, ~, ~] = polyfit(vel, dp, 2)
p =
1.4683 35.7426 68.6857
>> p = polyfit(vel, dp, 2)
p =
0.022630 3.578740 -7.354133
これは、polyfit
ドキュメントからの関連する抜粋です。
このオプションを選択した場合、polyval
多項式係数を適用する前に、データを中央揃えおよびスケーリングするために呼び出すときに3番目の出力を使用する必要があります。私の提案はpolyfit
、データを本当に中央に配置してスケーリングする必要がない限り、正しい多項式を与え、正しいプロットを生成する、への2番目の呼び出しに固執することです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加