タグ付けされた質問 「software-implementation」

ソフトウェア環境およびプログラミング言語でのさまざまなアルゴリズムの実装に関する質問。

3
高次フィルターのカスケードバイカッドセクションはどのように機能しますか?
私は8次のIIRフィルターを実装しようとしていますが、これまで読んだすべてのアプリケーションノートと教科書には、2次のセクションとして2を超える次数のフィルターを実装するのが最善であると書かれています。tf2sosMATLABで2次セクションの係数を取得するために使用しましたが、予想どおり、4 2次セクションの6x4係数が得られました。SOSとして実装する前は、8次フィルターには7つの以前のサンプル値を保存する必要がありました(および出力値も)。ここで、2次セクションとして実装するとき、フローが入力から出力までどのように機能するか、2つの前のサンプル値のみを保存する必要がありますか?または、最初のフィルターの出力はx_in2番目のフィルターのように送られますか?
20 filters  filter-design  infinite-impulse-response  biquad  audio  image-processing  distance-metrics  algorithms  interpolation  audio  hardware  performance  sampling  computer-vision  dsp-core  music  frequency-spectrum  matlab  power-spectral-density  filter-design  ica  source-separation  fourier-transform  fourier-transform  sampling  bandpass  audio  algorithms  edge-detection  filters  computer-vision  stereo-vision  filters  finite-impulse-response  infinite-impulse-response  image-processing  blur  impulse-response  state-space  linear-systems  dft  floating-point  software-implementation  oscillator  matched-filter  digital-communications  digital-communications  deconvolution  continuous-signals  discrete-signals  transfer-function  image-processing  computer-vision  3d 

7
Parks-McClellan最適FIRフィルター設計アルゴリズムのオープンソース実装はどこで入手できますか?
背景:私はしばしば、独自のフィルターを必要とする何らかの信号処理タスクを行っています。通常、この時点でMATLABに行き、firpm()firpm()\tt firpm()を使用して新しい一意のフィルターを生成します。MATLAB firpm()関数は、そのParks-McClellanアルゴリズムを実装します。これでフィルターができたので、フィルターをハードコーディングされた配列に入れました。しかし、1つのシナリオでのみ機能するハードコードされたフィルターがあるという問題があります。 問題:信号処理の問題を解決できるようになりましたが、非常に特定のシングルサンプルレートまたは特定のシナリオの場合のみです。 目標: Cコードまたは他の言語からfirpm()firpm()\tt firpm()を呼び出して、信号処理コードをより汎用的にしたい。のオープンソース実装が見つかりませんfirpm()! Parks-McClellan最適FIRフィルター設計アルゴリズム(MATLABでは別名firpm()firpm()\tt firpm()オープンソース実装はどこで入手できますか? PS私は、ウィンドウ処理などを使用してフィルタを異なる方法で設計できることを認識しています...コメントでそれらを自由に言及してください。しかし、この質問のポイントは、「他のフィルター設計手法とは何ですか?」ポイントは、非常に便利なfirpm()firpm()\tt firpm() ...または類似のもののオープンソース実装を見つけることです。 PPSこの質問の目標の1つは、最初にコードを見て、Parks-McClellanアルゴリズムがどのように機能するかを学習することです。その後、背景理論を読む予定です。

3
デジタル発振器を実装する方法は?
x86-64プロセッサを使用して実装されたサンプル/秒の固定サンプルレートで動作する浮動小数点デジタル信号処理システムがあります。DSPシステムが重要なものに同期してロックされていると仮定すると、ある周波数でデジタル発振器を実装する最良の方法は何ですか?fs=32768fs=32768f_s = 32768fff 具体的には、信号を生成したい: ここで 、サンプル番号です。y(t)=sin(2πft)y(t)=sin⁡(2πft)y(t) = \sin(2\pi f t)t=n/fst=n/fst=n/f_snnn 1つのアイデアは、各クロックサイクルで角度だけ回転するベクトルを追跡することです。(x,y)(x,y)(x,y)Δϕ=2πf/fsΔϕ=2πf/fs\Delta\phi = 2\pi f/f_s Matlab擬似コード実装として(実際の実装はCで行われます): %% Initialization code f_s = 32768; % sample rate [Hz] f = 19.875; % some constant frequency [Hz] v = [1 0]; % initial condition d_phi = 2*pi * f / f_s; % change in …

2
調整可能なバタワースフィルターの標準的な実装形式はありますか?
バターワースフィルターを実装する標準的な方法の1つは、それぞれが複素共役極のペアに対応する2次セクションのカスケードです。たとえば、4次フィルターの場合、2つの2次セクションがあります。カットオフが0hz付近からナイキスト付近に設計されているため、z平面でローパスフィルターの極の位置がどのように変化するかを考えると、極の各ペアによって「掃引」されるパスは、単位円内のアークのペアに対応します、次の図に示すように[4次フィルターの場合]: これらのフィルターがどのくらいの期間存在し、これらの「アーク」がs平面の直線に対応するという事実を考えると、ポールをスイープできる単一のパラメーターを持つ実装フォームを誰かが開発したのは理にかなっています「設計時」ではなく「実行時」の円弧に沿って。しかし、私はまだそのようなものに遭遇していません。 特に範囲のセグメント内でこれを行うさまざまな方法を考え出すことは比較的簡単で、少し余分な計算を投げる意欲があります。私が疑問に思っているのは次のとおりです: 1)最適な特性(効率、堅牢性など)を持ち、2)範囲全体をカバーする、特定の次数の調整可能な[デジタル]バタワースフィルターを実装する標準的な方法はありますか? または、これは本当に簡単な問題なので、誰もそれについて話すことを気にしませんか?その場合、「静的」設計のオプションの横にあるフィルター設計プログラムに表示されるようです。 私はこれを見つけました:可変カットオフ周波数を備えた多目的バターワースフィルターですが、最初はグーグルで何が含まれているかについての情報はあまりないようです。 更新(再:回答) もう少し明確にするために: 私は、時変システムで使用するために、DCからナイキストへのカットオフを自動的に調整する(ゲインを正規化したままにする)パラメーター([0,1]など)を持つ「メタ設計」を探しています。バターワース制約を除いて、この2極共振器のようなもの。アイデアは、パラメータを計算することは、実行時に一般的なオフライン設計手順を実行するよりも効率的であるということです。 「メタフィルタ」の設計方法を必ずしも探しているわけではありません(つまり、数値の代わりに変数を使用して計算を行います)。標準の[非自明]実装形式の選択肢があるかどうか疑問に思っています。たとえば、静的な場合に対応する単純なアプローチでは、時変の場合に数値的な問題が発生します。 たぶん問題はないかもしれませんし、簡単なアプローチが実際に使用されているものです。それは素晴らしいことです。私が心配しているのは、私が相談した情報源のどれにもこのトピックが明示的に言及されていないことですが、たぶん本当に明白な何かを見逃したので、私は尋ねています。 ここで詳細を追加する過程で、私はパラメトリックバイクアッド構造の一般的な処理に遭遇しました。 更新2 次のように、Jason Rへの2番目のコメントに入れたような答えを探しています。 「ああ、そうですね、最小限の乗算を使用しながら、このようなエッジケースを解決するので、タップされた状態のラティス形式で、ある程度の論文のパラメーター化III-2bを使用したいと思います。」 おそらくそのようなものは存在しませんが、私の質問は、それが存在するかどうか、もしそうなら、それは何ですか、どこで見つけることができますか? ジャックポット ジェイソンRの答えのcomp.dspスレッドでティムウェスコットによって与えられた「観測者の標準形式」への参照に基づいて、私は制御システムの文献を掘り始めなければならないかもしれないと仮定することにしました。butterworth "state space"であり、パラメトリックバターワースだけでなく、チェビシェフフィルターと楕円フィルターも含めて、次の非常にクールな設計/実装の扱いを示しました。 Sophocles J. Orfanidis、「高次デジタルパラメトリックイコライザーデザイン」、J。Audio Eng。Soc。、vol。53、pp。1026-1046、2005年11月。 ペーパー:http : //www.ece.rutgers.edu/~orfanidi/ece348/hpeq.pdf Matlab Toolbox:http : //eceweb1.rutgers.edu/~orfanidi/hpeq/ 掘り下げるには少し時間がかかりますが、これまで読んだ内容に基づいて、探しているものではない場合は非常に驚くでしょう。Orfanidis論文に導いたcomp.dsp参照のために、これをJason Rに渡します。彼の答えは、バターワースフィルターの設計に関する実用的な概要でもあります。

1
画像からグレアを除去する
免責事項:私は信号処理に従事していません。とても好奇心が強い... Nyの質問は、非常に簡単です。画像にソフトウェア処理を適用して、ヘッドライトのまぶしさを除去または軽減することは可能ですか? 次のような写真になります。 これが可能な場合、これに使用できるソフトウェアライブラリはありますか?どの言語でもかまいません。機能だけが必要です。これに関する現在の研究があるかどうか、誰もが知っていますか?

2
システム識別パッケージ
私はMatlabのSystem Identification Toolboxに代わるものを探し回っていましたが、「システム」と「識別」という用語の共通性が検索を混乱させています。 この目的のために書かれたスタンドアロンライブラリはありますか?(C ++、C#、Pythonなど)

3
非EE、ソフトウェアAPIコンテキストの「ローパスフィルター」
私は経験豊富なソフトウェアエンジニアであり、スマートフォンセンサーに取り組んでいます。DSPの基本的なEEクラスを受講し、自分の知識を応用しようとしています。畳み込み、伝達関数、z変換などを理解していると思います。FIRおよびIIRフィルターについて少し知っています。 今、ソフトウェアAPIとドキュメントを読むと、時間領域のセンサーデータにLPFを適用していることがわかります。私はあなたが差分方程式を使用してそれを行うことを知っています(例えば、y [i] = y [i-1] + 2 * x [i])ここで、時間信号を(たとえば)sinc波の係数と特定のカットオフ周波数で畳み込みます。したがって、「ローパスフィルター」の口語的な使用は、私にとって十分に正確ではありません。 たとえば、Google Android APIには次のドキュメントがあります:http : //developer.android.com/reference/android/hardware/SensorEvent.html#values public void onSensorChanged(SensorEvent event) { // alpha is calculated as t / (t + dT) // with t, the low-pass filter's time-constant // and dT, the event delivery rate final float alpha = 0.8; …

5
オーディオのダブル(64ビット)浮動小数点を検討する場合
最新のプロセッサでオーディオを合成して処理するとき、単精度(32ビット)浮動小数点以外の使用を検討するのはいつですか。明らかに、現実世界に出入りするオーディオは16/24ビットなので、ソフトウェアでの信号(オーディオ自体とフィルター係数のようなものの両方)の精度について話しているだけです。 と仮定する: CPU / DSPには、単精度と倍精度の両方のハードウェア浮動小数点サポートがあります。 優先事項は、高性能ではなく高品質のオーディオです。たとえば、より良い(知覚的)品質を提供する場合は、倍精度が考慮されます。

4
指数ADSRエンベロープの方程式のヘルプ
アプリケーションコードを使用して、発振器の出力の振幅を整形するための線形ADSRエンベロープを実装しました。アタック、ディケイ、リリースの持続時間とサステインレベルのパラメーターはエンベロープで設定でき、すべてが期待通りに機能します。 ただし、エンベロープのランプ形状を、ほとんどのシンセサイザーがより自然な応答に使用するものに似たものに調整したいと思います。アタックの逆指数関数とディケイとリリースの指数関数です。これらのタイプのランプ形状のエンベロープ出力値を計算するための数式を正しく取得するのに問題があります。線形ランプを計算するために、私は2ポイントフォームを使用して、アタック/ディケイ/サステイン/リリースの入力パラメーター値から派生した開始/終了 /値を接続しています。同じ開始/終了 /ポイント値を使用して、指数(標準および逆)ランプの正しい式を計算できないようです。バツxxx yyyyバツxxyyy 上記で説明した線形ランプのアプローチを示すDesmos Graphing Calculatorセッションを保存しました。 誰かが私を正しい方向に向けるのを助けることができれば、それは大いに感謝します。

1
第2世代ウェーブレットのチュートリアル(リフティングあり)?
一部のノイズ除去とデコンボリューションの実験では、第2世代のウェーブレット変換を適用します(リフティングステップ)を画像ます。 私はいくつかの実装が利用可能であることを知っていますが、それらのほとんどはmatlabを使用していますが、OpenCVを使用してC ++で作業したいと思っています。OpenCV 2.xには組み込みウェーブレット変換の実装がないため、自分で実装する予定です(さらに、私にとっては良い練習になります)。いくつかの調査の後、第2世代の変換に関する元の記事を見つけることができましたが、アルゴリズムの正確な動作についてはまだ少し混乱しています。 Sweldensによる論文[1]を主に参照すると、リフティングスキーム:第2世代のウェーブレットの構築ですが、インデックスセットの定義にはまだ混乱しています。彼らはどのように構築されていますか?...K(j)K(j)\mathcal{K}(j) したがって、私の質問:チュートリアルのような形式であるか、(数学的なものではなく)よりアルゴリズム的なビューを提供する、第2世代ウェーブレット変換に関するいくつかのリソース(論文、チュートリアル、スライド...)について誰かが知っていますか?、それは私自身の実装を設計するのに役立ちますか? 前もって感謝します。 参考文献 私の主な参照は: [1] Sweldens、W.(1998)。リフティング方式:第2世代のウェーブレットの構築。SIAM Journal on Mathematical Analysis、29(2)、511。 また、私は次のことからも学びます。 [2] Daubechies、I.、&Sweldens、W.(1998)。因数分解ウェーブレットはリフティングステップに変換されます。Journal of Fourier analysis and applications、4(3)、247–269。 [3] Kovacevic、J。、およびSweldens、W。(2000)。任意の次元で昇順のウェーブレットファミリー。画像処理、9(3)、480–496。doi:10.1109 / 83.826784

1
LFOを使用してオシレーターピッチを変調するアルゴリズムのヘルプ
アナログシンセサイザーのソフトウェアエミュレーションを開発しています。LFOを使用してオシレーターのピッチを変調しようとしています。コンピューターのサウンドシステムに供給される各サンプルについて、メインオシレーターに入力する周波数を次のように計算しています(擬似コード)。 osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth) このステートメントの変数は次のとおりです。 note_frequency =再生する音の周波数(Hz) チューニング=オシレーターの再生ピッチのパーセントでの微調整(例:-0.02 = 2%離調) lfo_y = lfo波形の現在のy値(範囲は-1から1) lfo_mod_depth =オシレーターに適用する効果の深さ/強度(パーセント) ただし、この計算では望ましい結果は得られません。中心周波数を中心にロックされたピッチが上下に変化するのが聞こえると思います(演奏中のノート)。私が得ているのは、ピッチを「逃がす」モジュレーションエフェクトです。何が起こっているのか正確にはわかりませんが、次のように聞こえます。 変調強度は時間とともに増加します(変調が到達する高/低周波数マークは、ノートが長く保持されるほど高く/低くなります) 変調強度は時間とともに一定のままですが、中心周波数は増加しますが、変調はその周囲で振動します 私は正しいアプローチを使用していますか?そうでない場合、正しいアプローチはどうあるべきですか?これでどんな助けでも大歓迎です。

2
MATLABはIIRフィルターをどのように処理しますか?
MATLABには、butter次数と相対カットオフ周波数を指定してバタワースフィルターを作成するがあります。作成されたフィルターは、filter任意の有限信号に使用できます。 フィルターに無限のインパルス応答がある場合、MATLABはこれをどのように行いますか?私はそれが信号をウィンドウ処理する必要があると思います-これはすべての既知の値が使用されるように単純な長方形のウィンドウによって行われますか? また、連続フィルターはどのように離散化されますか?双一次変換、インパルス応答マッチングなど? 私はMATLABのヘルプテキストがこれを説明しているとは思いません: Y = FILTER(B,A,X)ベクター内のデータをフィルタリングXベクトルによって記述されるフィルタとAし、Bフィルタリングされたデータを作成しますY。フィルターは、標準差分方程式の「直接型II転置」実装です。 a(1)*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)

1
各ピクセル値を近傍の最も表現されたピクセル値に変換することを含むたたみ込み
グレースケール画像の背景の強度の段階的な変化を修正するために、ぼかし、畳み込み画像から元の画像を差し引いてきました。 場合によっては、ぼかしの代わりに中央値ぼかしを使用することで改善が見られました。 したがって、さらに進んでグレースケール画像を畳み込むフィルターを使用して、各ピクセルが長方形の近傍のヒストグラムで最も表現されたピクセル値の値を取ることができるかどうか疑問に思いました。 この畳み込みの名前を知っていますか? OpenCVの実装を知っていますか? どうもありがとうございました、

2
チェビシェフフィルターを適用するにはどうすればよいですか?
脳とコンピューターのインターフェースについての論文を読んだ。この論文では、著者らは「各信号はカットオフ周波数が0.1および10 Hzであり、高カットオフ周波数に従って間引かれている8次バンドパスチェビシェフI型フィルターでフィルター処理されている」と報告しています。私はこのフィルターをscipyで設計しようとしました: import scipy.signal as signal signal.cheby1(8,0.05,[0.1,10.0],btype='band',analog=0,output='ba') 結果は: Warning: invalid value encountered in sqrt (array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]), array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan])) …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.