問題タブ [signal-processing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - Windows プラットフォームでギター アンプまたは FX エミュレーションを実装するにはどうすればよいですか?
どの技術を手に入れるべきですか?ドライバーか何かを書くべきですか?どうもありがとうございました
java - .WAV オーディオ データ サンプルを double 型に変換するには?
オーディオ データを処理するアプリケーションに取り組んでいます。私は Java を使用しています (MP3SPI、Jlayer、および Tritonus を追加しました)。オーディオ データを .wav ファイルからバイト配列に抽出しています。私が扱っているオーディオ データ サンプルは 16 ビット ステレオです。
私が読んだことによると、1つのサンプルの形式は次のとおりです。
あああああああああああああああああああああああああああああああああああああああ
ここで、AABB は左チャネルと CCDD 右チャネルを表します (チャネルごとに 2 バイト)。このサンプルを double 値型に変換する必要があります。データ形式について読んだことがあります。Java はビッグ エンディアンを使用し、.wav ファイルはリトル エンディアンを使用します。私は少し混乱しています。変換プロセスを手伝ってもらえますか? ありがとうございます
algorithm - 高速平均平方差関数
周期信号の平均二乗差分関数 (ASDF) または平均振幅差分関数 (AMDF) を計算する高速 (つまり O(N log(N)) ) 方法を誰かが知っているかどうか疑問に思っています。 .
FFTを使用して周期的な相互相関を計算できることを知っています。たとえば、Matlab コードでは、
はるかに速い
同様の「高速」アルゴリズムはありますか
また
?
math - さまざまな時間でサンプリングされた指数移動平均
指数移動平均を計算したい連続値があります。通常、私はこれに標準の式を使用します。
- S n =αY+(1-α)Sn -1
ここで、S nは新しい平均、αはアルファ、Yはサンプル、Sn-1は以前の平均です。
残念ながら、さまざまな問題のため、一貫したサンプル時間がありません。せいぜい1ミリ秒に1回など、サンプリングできることはわかっているかもしれませんが、制御できない要因により、一度に数ミリ秒はサンプルを取得できない場合があります。ただし、より一般的なケースとしては、0、1、および2ミリ秒でサンプリングする代わりに、少し早くまたは遅くサンプリングするという単純なケースがあります。0、0.9、2.1ミリ秒でサンプリングします。遅延に関係なく、サンプリング周波数はナイキスト限界をはるかに超えると予想しているため、エイリアシングについて心配する必要はありません。
最後のサンプルからの時間の長さに基づいてアルファを適切に変化させることにより、多かれ少なかれ合理的な方法でこれに対処できると思います。
これが機能するという私の推論の一部は、EMAが前のデータポイントと現在のデータポイントの間で「線形に補間」することです。次のサンプルリストのEMAを間隔tで計算することを検討する場合:[0,1,2,3,4]。入力が[0,2,4]になる間隔2tを使用すると、同じ結果が得られるはずですよね?EMAが、t2でt0以降の値が2であると想定した場合、それは[ 0,2,2,4,4 ]で計算される間隔tの計算と同じになりますが、これは実行されません。それとも、それはまったく意味がありますか?
誰かがアルファを適切に変える方法を教えてもらえますか?「あなたの作品を見せてください。」つまり、あなたの方法が本当に正しいことをしていることを証明する数学を見せてください。
c++ - DSP を使用して OMAP でコードを高速化するには?
OMAP3430 のビデオ コーデックに取り組んでいます。私はすでに C++ で記述されたコードを持っており、DSP (私が持っている SDK (OMAP ZOOM3430 SDK) には追加の DSP があります) を利用するために、その特定の部分を変更/移植しようとしています。
非常に少量のデータ (〜 250 バイト) で実行されている小さな for ループを移植しようとしましたが、異なるデータでは約 2M 回です。しかし、CPU と DSP 間の通信による過負荷は、ゲインよりもはるかに大きい (もしあれば)。
このタスクは、通常のコンピューターで GPU のコードを最適化するのとよく似ていると思います。私の質問は、どのような部品を移植すると有益でしょうか? GPU プログラマーはそのようなタスクをどのように処理するのでしょうか?
編集:
- GPP アプリケーションは、サイズ 0x1000 バイトのバッファーを割り当てます。
- GPP アプリケーションは、DSPProcessor_ReserveMemory を呼び出して、自動ページ アライメントを考慮して、割り当てられたバッファーよりも 4K 大きいサイズを使用して、割り当てられたバッファーごとに DSP 仮想アドレス空間を予約します。合計予約サイズも、4K ページ境界に沿って配置する必要があります。
- GPP アプリケーションは、DSPProcessor_Map を呼び出して、割り当てられた各バッファーを、前の手順で予約された DSP 仮想アドレス空間にマップします。
- GPP アプリケーションは、GPP 上に割り当てられたバッファにマッピングされた仮想アドレス空間のベース アドレスを DSP 実行フェーズに通知するメッセージを作成します。GPP アプリケーションは、DSPNode_PutMessage を使用してメッセージを DSP に送信します。
- GPP は memcpy を呼び出して、処理対象のデータを共有メモリにコピーします。
- GPP アプリケーションは DSPProcessor_FlushMemory を呼び出して、データ キャッシュがフラッシュされたことを確認します。
- GPP アプリケーションは、バッファへの書き込みが完了し、DSP がバッファにアクセスできるようになったことを DSP 実行フェーズに通知するメッセージを準備します。メッセージには、バッファに書き込まれたデータの量も含まれているため、DSP はコピーするデータの量を把握できます。GPP は、DSPNode_PutMessage を使用してメッセージを DSP に送信し、DSPNode_GetMessage を呼び出して、DSP からメッセージが返されるのを待ちます。
その後、DSP プログラムの実行が開始され、DSP は処理が終了するとメッセージで GPP に通知します。試しに、DSP プログラム内には何も処理を入れていません。「処理が完了しました」というメッセージを GPP に送り返すだけです。そして、これにはまだ多くの時間がかかります。内部/外部メモリの使用が原因でしょうか、それとも単に通信の過負荷が原因でしょうか?
java - デジタルフィルター、Javaでの数学、
あなたの助けが必要です。私の質問を読んでくれてありがとう!私は現在、Direket Form 2 Transposed Filter を使用する Java Programm を作成しています。Matlab の関数フィルターがうまく機能することはわかっていますが、Java を使用する必要があります。この Direkt Form 2 Transposed 、この Math Function を実装することを知っている人はいますか?
y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)* y(n-1) - ... - a(na+1)*y(n-na)
任意の Programmm 言語で? 必要なのは、うまくいけば、ライトの方向へのポイントです。そうすれば、私はそれを理解することができます! たぶん、いくつかの matlab 関数を実装する C Lib があるかもしれません。
それでは、お時間をいただきありがとうございます
あなたのエレクトロ
ファローアップ:
私はあなたの機能を理解するために数日間試みましたが、できませんでした.
これは Matlab の関数です: フィルター
私が知っているのは、次のような関数をmatlabで使用することだけです:
newArray = filter(1,LPC_Faktor,OldArray)
フィルター機能を実装するだけです。
じゃあまた手伝ってくれる?
ありがとう
エレクトロ
.net - .NET 用 AWGN ジェネレーター
.NET 用の Additive White Gaussian Noise ジェネレーターを探しています。
AWGNジェネレーターを備えた.NETとMATLABの間にある程度の相互運用性があることは知っていますが、無料のEDITかどうかはわかりません。
おそらく、MATLAB と同様の機能を持つ GNU Octave などの他のアプリケーションには、.NET バインディングがあります。私はこの問題について大規模な調査をしませんでした。
この機能を持つ .NET ライブラリを使用したいと思います。私が知っているものから:
Math.NET Neodymにはないようです。
AForge.NETにはガウス数ジェネレーターがありますが、このジェネレーターをこの目的に使用できるかどうかを知るには、AWGN を理解していません。何か案は?
python - PythonでのFFTベースの2D畳み込みと相関
scipy(または別の人気のあるライブラリ)に組み込まれているFFTベースの2D相互相関または畳み込み関数はありますか?
次のような関数があります。
scipy.signal.correlate2d
-「によって実装される直接法はconvolveND
、大きなデータの場合は遅くなります」scipy.ndimage.correlate
-「アレイは、正確な計算を使用して(つまり、FFTではなく)指定されたカーネルと相関しています。」scipy.fftpack.convolve.convolve
、私は本当に理解していませんが、間違っているようです
numarrayにはスイッチcorrelate2d()
付きの関数がありましたfft=True
が、numarrayがnumpyに折りたたまれていて、この関数が含まれているかどうかわかりません。
audio - 良いオーディオリバーブソース?
オーディオリバーブ(Freeverb以外)に適したCまたはCのようなソースコードはありますか?素晴らしいサウンドのローパスフィルターの例は無限にありますが、良いサウンドのリバーブのソースを見つけるのは非常に困難です。
何故ですか?良い実装が保持され、公開されないのは十分に難しい問題ですか?