2012/01/15 (2012年01月 のアーカイブ)
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次多項式でフィッティングした時のレポートがこれ。
n次多項式だけじゃなくてカーブの自由度も高く、エクスポネンシャルだろうがシグモイドだろうがなんでもこいな感じ。さらに誤差のウエイト付けも可能。これはすごい。覚えておいて損はないサイト。
まあたまにしか使わないから必要になった時にこのサイトの事を思い出せるかどうかが問題なんだけどね。
Posted by g200kg : 2012/01/15 00:04:42