雑多なブログ

雑多なブログ

PR

×

Keyword Search

▼キーワード検索

Profile

showkko

showkko

Calendar

Favorite Blog

まだ登録されていません

Comments

showkko @ Re:(短信) 「軽減税率」詐欺?(09/04) マイナンバーの話、やっぱりそんな話に…:…
showkko @ ちなみに… ちなみに、実際に派兵する段になったとき…
showkko @ Re:(短信)福島の鼻血の指摘は『美味しんぼ』だけではない(05/17) より細かい中味が見つかったので追加しま…
showkko @ Re:昨今の選挙後の毎度の話(07/23) 票が消えたことが明確に報道されたならま…

Freepage List

2015.03.12
XML
カテゴリ: その他
チト業務の上で、サンプリングクロックの違うデータを作りたくなったのですが、欲しいデータの両点間を結んだ1次近似(線形近似)では余りにも酷い結果だったので、3次近似を使ったので、ちょいとご紹介。
※そんな前提なので、「等間隔データでの3次近似」の限定の話です。

元のデータにない時刻のデータを作るのに、まずはその点の前後2点ずつの元データを用意します。
各々順にpre2、pre1、post1、post2とします。
(なので、欲しいデータはpre1とpost1の間に入ります。)

座標の位置付けは自由なので、元のデータのサンプリングクロックの間隔を1にして、
pre2は時刻-1のとき
pre1は時刻0のとき
post1は時刻1のとき

として、欲しいデータの時刻をposとしてみます(つまり、欲しいデータからのpre1までの時間とpost1までの時間の比がpos:(1-pos)という訳ですね)。

んでまぁ、既知の4点(pre2、pre1、post1、post2)があるので、3次近似となる訳ですが、
その関数を
f(x)=ax^3+bx^2+cx+d
とすると、
pre2=f(-1)=-a+b-c+d
pre1=f(0)=d
post1=f(1)=a+b+c+d
post2=f(2)=8a+4b+2c+d
…だもんで、これを解くと、
d=pre1

a=((post2+d-b*2)/2-post1)/3
c=post1-a-b-d
と呑気に解ける訳ですね(笑)。

これができれば、あとは欲しいデータは
f(pos)=a*pos*pos*pos+b*pos*pos+c*pos+d


実用上は、元データのサンプル数が現実の再現に充分な細かさがあれば、この方式で充分かと思われます。
ましてや、現実の再現がアナログ方式であれば、慣性の法則からしても、多少のずれは許容範囲となります。
(そうでなけれは、有効桁数で呑気に切られるデジタルデータなんざ使い物になりません(爆)。)

まぁ実際、48000Hzのデータを44100Hzのデータに変換するのには、これで充分な精度が出ていたのですが、残念ながら私の属するコミュニティでは、上記のような環境の勘案とは関係なく『理論上』から却下された訳で…(笑)。
…だもんで、速攻で削除しましたよ。「要らないんでしょ!?」と確認しながら…(笑)。
(偉い人にはそれがわからんのですよ(笑)。)

…ただまぁ、1回はプログラムも組んだし、簡単な割に有効と思われるので、ここに紹介しました次第です(^^;;;。

皆様の仕事その他のお役に立ちましたら幸いです。

PS. 他にも、バンドパスフィルタの遅延見積もりの話とかで、会社で無視されているネタもあったりもします(笑)。
基本的には矩形波を三角関数で表現し、それと入力波の合成と、あとはフィルタとの合成を実時間波形で評価する程度の話ですが…。
(ここまで言えば、聡い方は想像つきますよね?使ってもらって構いませんよ。どうせウチでは使う予定はありませんから(爆))





お気に入りの記事を「いいね!」で応援しよう

Last updated  2015.03.13 00:41:14
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: