問題タブ [accelerate-framework]
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.
macos - Numpy EIGは、Mac OSX10.6のMATLABEIGよりも約4倍遅くなります。私は何が間違っているのですか?
MATLABとNumPyでEIG関数をプロファイリングして、Macbook Pro(2 GHz、OS X 10.6を実行するクアッドコアi7)のパフォーマンスを比較してみました。NumPy EIGは、MATLABと比較して非常に遅いようです。
これが私がNumPyでプロファイリングしたコードです:
これは、NumPyでは約19.5秒/実行です。
これがMATLABの同じコードです:
これは、MATLABでは約5.36秒/execです。
これはJITのパフォーマンスにあまり依存しないはずなので、おそらくBLASとBLASライブラリにアクセスするルーチンに要約されます。私はMATLABがMacでAccelerateFrameworkを使用していることを知っています。
NumPyは私のMacbookProでAccelerateFrameworkBLASも使用しているようです。これがの出力ですnumpy.show_config()
Python2.7.2とNumPy1.6(どちらもMacPortsからインストール)を使用しています
それで、NumPyの人々への私の質問はここにあります:なぜこの場合NumPyは遅いのですか?NumPyのインストール中にいくつかの最適化を省略しましたか?
coding-style - Accelerate フレームワークを使用したベクトルによるコーディング
ベクトル化されたコードを iOS アプリケーションに実装することを目標に、初めて Accelerate フレームワークをいじっています。Objective C または C でベクトルを操作することに関して、私は何もしようとはしませんでした。MATLAB の経験があるので、Accelerate を使用することは実際にそれほど苦痛なことなのだろうかと思います。次の計算をしたいとします。
b = 4*(sin(a/2))^2
ここで、a と b はベクトルです。
MATLAB コード:
ただし、ドキュメンテーションをざっと見てみると、Accelerate を使用すると状況が大きく異なります。
私のC実装:
正直なところ、ここで何が最悪なのかわかりません。すべての中間ステップを追跡すること、VecLib に関して vDSP で引数がどのように渡されるかを記憶しようとすること (まったく異なります)、または非常に些細なことをするのに非常に時間がかかることです。
ここで何かが欠けていて、ほとんどのステップをマージまたは短縮できることを本当に願っています. コーディング リソース、良いコーディング習慣 (難しい方法や本から学んだもの) などに関する推奨事項は大歓迎です! 複数行のベクトル計算をどのように処理していますか?
sse2 - Accelerateフレームワークを介して2つの__m128タイプを追加する
__m128
Accelerateフレームワークを使用して2つの(float)変数を
add / mul/subする必要があります。しかし、それを行うための機能が見つかりません。すべてのAccelerateフレームワーク関数は、型ではint__vector__
なくfloat__vector__
型を取ります。除算する関数を見つけまし'vdivf'
たが、add / mul/subも必要です。Accelerateフレームワークを使用して
2つの(フロート)変数を追加/マルチ/サブする方法を教えてもらえますか?__m128
このようなもの:、、_mm_add_ps
ただし_mm_sub_ps
、_mm_mul_ps
AccelerateフレームワークAPIを使用します。
ios - 高速フーリエ変換の結果:周波数軸スケール?
AppleのAccelerateFramework(iOSデバイスで実行)を使用して、配列データを取得し、その上で高速フーリエ変換を実行するコードを正常に実装しました。
私の質問は、周波数軸のスケールは何ですか?結果は特定の周波数範囲で期待どおりにピークになりますが、周波数がどうあるべきかわかりません。Accelerate FrameworkのFFT関数は、配列を取り込んで、同じ(またはそれ以上)の数のデータポイントを持つ配列を吐き出します。それらすべてのポイントが時間的に等間隔に配置されていると想定していますか?サンプリング周波数や時間変数を入力として使用しません。周波数軸のスケール(つまり、各ポイントの周波数増分)は、サンプリング周期を2 * Pi(またはそれに類似したもの)で割ったものですか?これに関するドキュメントには多くの情報が見つかりませんでした。オンラインで同様の質問を探していましたが、何も見つかりませんでした。
これはある意味数学の質問ですが、AccelerateFrameworkの実装に大きく依存しています。
ありがとう
編集私はここでフォローアップの質問をしましたが、まだ誰もそれに答えていません。ぜひご覧ください!
ios - Apple Accelerate Framework を使用したケプストラムとフォルマントの追跡
私はこの Web ページを音声のフォルマント トラッキングのガイドラインとして使用してきました...
http://iitg.vlab.co.in/?sub=59&brch=164&sim=615&cnt=1
フォルマント トラッキング用の単純なピーク ピッキングのために、ケプストラムを平滑化された表現に変換する最後のステップを除いて、すべてが順調に進んでいるように見えます。スペクトログラフは見栄えがよく、ケプストログラフ (それと言っていいですか? :P) も (私が知る限り) 見栄えはしますが、最終段階の結果 (滑らかなフォルマント表現) は期待したものではありません。
各ステージのサンプルをビジュアル画像としてアップロードしました...
このサンプルは、'beed' などの音 'i' のスピーチ用です。このサイトによると…
http://home.cc.umanitoba.ca/~robh/howto.html#formants
最初のフォルマントは約 500hz、2 番目と 3 番目のフォルマントはそれぞれ 2200hz と 2800hz になります。スペトログラフは非常によく似たものを示していますが、最後の段階では次のような結果が得られています...
F1 - 891 F2 - 1550 F3 - 2329
どんな洞察も大歓迎です。私はしばらくの間、これについてぐるぐる回っています。私のコードは次のようになります...
objective-c - 2 次 IIR フィルター、バターワース バンドパス (EQ) の係数?
重要な更新:私はすでに答えを見つけ出し、次のシンプルなオープンソース ライブラリに配置しました: http://bartolsthoorn.github.com/NVDSP/チェックしてみてください。問題が発生した場合は、おそらくかなりの時間を節約できます。 IOS のオーディオ フィルターで!
^
周波数の異なるいくつかの波をfloat *data
保持する(リアルタイム) オーディオ バッファ ( ) を作成しました。sin(theta)
以下のコードは、バッファを作成した方法を示しています。バンドパス フィルタを実行しようとしましたが、信号がノイズ/ブリップに変わるだけです。
私の目的は、 を使用してvDSP_deq22
、このバッファの 10 バンド EQ を作成することです。メソッドの構文は次のとおり
vDSP_deq22(<float *vDSP_A>, <vDSP_Stride vDSP_I>, <float *vDSP_B>, <float *vDSP_C>, <vDSP_Stride vDSP_K>, <vDSP_Length __vDSP_N>)
です。 reference.html#//apple_ref/doc/c_ref/vDSP_deq22
引数:
10個のフィルターを作成する必要があります(10回vDSP_deq22
)。次に、すべての帯域のゲインを設定し、それらを元に戻します。しかし、すべてのフィルターにどのような係数を与えるのでしょうか? vDSP_deq22
2 次 (バターワース) IIR フィルターであることはわかっていますが、これをバンドパスに変換するにはどうすればよいですか?
ここで、3 つの質問があります。
a) オーディオ バッファのインターリーブ解除とインターリーブを行う必要がありますか? ストライドを 2 に設定するだけでチャンネルのフィルターを設定することはわかっていますが、もう一方をフィルター処理する方法、ストライド 1 は両方のチャンネルを 1 つとして処理します。
vDSP_deq22
b)メソッドに入る前にバッファを変換/処理する必要がありますか? もしそうなら、私もそれを通常に戻す必要がありますか?
c) 10 秒に設定する係数の値はvDSP_deq22
?
私は何日も試みてきましたが、これを理解することができませんでした。助けてください!
objective-c - vDSP_ctoz() および vDSP_ztoz() を使用してバッファをデインターリーブおよびインターリーブしますか?
float *newAudio
をデインターリーブしfloat *channel1
てにfloat* channel2
インターリーブするにはどうすればよいnewAudio
ですか?
この 2 行のコードはどのようになりますか? ctoz/ztoz の構文がわかりません。
c - ピーキング EQ の IIR 係数、vDSP_deq22 に渡す方法は?
ピーキング EQ には次の 6 つの係数があります。
これらの中間変数を使用すると、次のようになります。
vDSP_deq22()
「5つの単精度入力、フィルター係数」を渡す必要があるという状態のドキュメントですが、6つの係数があります! また、どの順序でそれらを渡しますvDSP_deq22()
か?
更新 (17/05): github でリリースした私の DSP クラスを使用することをすべての人にお勧めします: https://github.com/bartolsthoorn/NVDSP
objective-c - Accelerate Frameworkを使用したiOSのFFTピッチ検出?
しばらくの間、FFTとピッチ検出について読んでいますが、すべてをつなぎ合わせるのに問題があります。
Accelerateフレームワークがおそらくこれを行うための最良の方法であることがわかりました。また、Appleのサンプルコードを読んで、FFTでの使用方法を確認しました。ピッチ検出をリアルタイムで実行したい場合、FFTの入力データは何ですか?マイクからのオーディオストリームを渡すだけですか?どうすればいいですか?
また、FFT出力を取得した後、それから周波数を取得するにはどうすればよいですか?私はどこでも読んでいますが、これの例や説明が見つかりませんか?
助けてくれてありがとう。
ios - フレームワークFFTvDSPztoc分割実数形式を高速化して実数ベクトルを分割
Accelerate Frameworkを使用してiOSに加速度計ベースのFFTを実装していますが、まだ少し混乱しているのはこの部分です。
最終的な配列はどのように見えますか?「分割実数形」と「分割実数ベクトル」の違いがわかりません。それが何を意味するのかはある程度理解しているかもしれませんが、正しい考えを持っていることを確認したいと思います。
加速度などの入力データを表す開始データであるdoubleの配列は、vDSP_ctozを介して偶数奇数形式になります。次に、結果は次の形式になります(AppleのvDSPガイドからコピー)。
私の実装では(これは機能しますが、出力について混乱しています)、vDSP_ztocへの呼び出しもあります。この呼び出しを行う必要がありますか、それとも元の配列と一致するように配列を復元するために例でのみ実行されますか(逆変換を行ったため)?
それを呼び出すことになっている場合、vDSP_ztocの後の最終的な形式は何ですか?それは...ですか:
または、出力配列の最初の要素はDCであり、2番目は最初のビンの実数部であり、3番目は最初のビンの虚数部であり、以下同様です。または、2番目の要素はそのセットアップのようなナイキスト周波数であり、3番目と4番目の要素を最初のビンの実数成分と虚数成分にしますか?
少しわかりにくいですが、この質問は非常に簡単で、必要なのは迅速な確認/修正だけだと思います。
ありがとう!