スポンサーリンク

Curve Fitting

下の表はClavia NordのADSRのMIDI CC値(0~127)に対する時間(sec)の対応表という事で、所々妙に綺麗な整数値があったりオリジナルもテーブルか何かを引いてる感じではあるんですが、これをどうやって数式表現するか、なんていう話題がKVRフォーラムにあって楽しそうなのでちょっと参加してみたり。

0 0.0005 1 0.0006 2 0.0007 3 0.0009 4 0.0011 5 0.0013 6 0.0015 7 0.0018
8 0.0021 9 0.0025 10 0.003 11 0.0035 12 0.004 13 0.0047 14 0.0055 15 0.0063
16 0.0073 17 0.0084 18 0.0097 19 0.0111 20 0.0127 21 0.0145 22 0.0165 23 0.0187
24 0.0212 25 0.024 26 0.027 27 0.0306 28 0.0344 29 0.0387 30 0.0434 31 0.0486
32 0.0543 33 0.0606 34 0.0676 35 0.0752 36 0.0836 37 0.0928 38 0.103 39 0.114
40 0.126 41 0.139 42 0.153 43 0.169 44 0.186 45 0.204 46 0.224 47 0.246
48 0.269 49 0.295 50 0.322 51 0.352 52 0.384 53 0.419 54 0.456 55 0.496
56 0.54 57 0.586 58 0.636 59 0.69 60 0.748 61 0.81 62 0.876 63 0.947
64 1.02 65 1.1 66 1.19 67 1.28 68 1.38 69 1.49 70 1.6 71 1.72
72 1.85 73 1.99 74 2.13 75 2.28 76 2.45 77 2.62 78 2.81 79 3
80 3.21 81 3.43 82 3.66 83 3.91 84 4.17 85 4.45 86 4.74 87 5.05
88 5.37 89 5.72 90 6.08 91 6.47 92 6.87 93 7.3 94 7.75 95 8.22
96 8.72 97 9.25 98 9.8 99 10.4 100 11 101 11.6 102 12.3 103 13
104 13.8 105 14.6 106 15.4 107 16.2 108 17.1 109 18.1 110 19.1 111 20.1
112 21.2 113 22.4 114 23.5 115 24.8 116 26.1 117 27.5 118 28.9 119 30.4
120 32 121 33.6 122 35.3 123 37.1 124 38.9 125 40.9 126 42.9 127 45

n次多項式でフィッティングしようとすると平均誤差はともかく、変にリップルが出ちゃうのがまずいよね。
やっぱり指数ベースかなと思うけど、指数カープそのままだとはまらないんで、

Y=0.0000858532076498 *exp(1.17006541390366 * sqrt(X))+0.00041414

こんな感じでどうかなていうのがとりあえずの回答。それほど厳密には追い込んでないですけど。

なんて事をやってるとhttp://zunzun.comというサイトを紹介してくれた人がいました。このサイトは「Online Curve Fitting and Surface Fitting Web Site」という名前で、曲線や曲面のポイントデータを突っ込むと回帰分析して係数を出してくれるというサイトです。

でその出力されるレポートがやたらと詳細で各種言語のソースコードまで付いているPDFというご丁寧さ。ちょっとびっくりした。ちなみに上のデータを突っ込んで5次多項式でフィッティングした時のレポートがこれ。

20120115curvefitting.pdf

n次多項式だけじゃなくてカーブの自由度も高く、エクスポネンシャルだろうがシグモイドだろうがなんでもこいな感じ。さらに誤差のウエイト付けも可能。これはすごい。覚えておいて損はないサイト。

まあたまにしか使わないから必要になった時にこのサイトの事を思い出せるかどうかが問題なんだけどね。

未分類
スポンサーリンク