問題タブ [spectral-density]
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.
matlab - IFFT を使用して元の信号を取得し、Parseval の定理
30ns 以上のケイデンス シミュレーションから取得した電流信号 (csv で抽出) があります。DC オフセットを削除し、FFT の前にウィンドウ関数を適用しました。そして で正規化されたFFT sqrt(N)
。で目的のスペクトルの中心にゼロ周波数成分をシフトしましfftshift(X)
た。念願のFFTができました。また、元のウィンドウ信号に戻したいのですがifft
、ウィンドウ信号が表示されず、使用したウィンドウ関数のバージョンのみが表示されます。私のサンプル信号は複雑ではありません。
別の質問があります。FFT前とFFT後の私のパワーは同じです。Parseval の定理を示すために、どのようにグラフをインテリジェントな方法で表示できますか?
また、csv をアップロードしてベクトルを作成することなく、MATLAB コードを追加しました。私のy
価値はCurrent_wo_dc
MATLAB コード:
matlab - パワースペクトルから元の信号を取得する方法
信号を計算power spectrum
しました。手順は次のとおりです。
- 時報のFFT
- FFT の絶対値の 2 乗/信号の長さ、つまりパワー スペクトル
これをタイムドメインに変換したいと思います。どのような手順に従う必要がありますか。
python - Cross Power Spectral Density 関数の Matlab から Python への変換
MATLAB プログラムを Python に変換しようとしています。クロス パワー スペクトル密度関数の設定に問題があり、Matlab と一致する結果が得られません。
MATLAB コードで使用される関数は次のように記述されます。
[Pxy,f] = cpsd(x,y,M,round(M/2),M,fs);
私のコードで利用可能なドキュメントでは、M = 128 (FFT ポイントの数) および fs = 25.0 (サンプリング周波数 [Hz]) を読みました。x と y は、加速度データの行ベクトル 1x751 です。
[pxy,f] = cpsd(x,y,window,noverlap,f,fs)
使用された関数には 6 つの引数があるため、これはプログラマが MATLAB ライブラリから呼び出すことを意図した関数であると仮定します。
この関数は、f で指定された周波数でのクロス パワー スペクトル密度推定値を返します。 (f が周波数として定義されていないのに、変数 M がそこに渡され、それが FFT ポイントの数であることは私を悩ませますが、これは間違いではないと仮定しましょう)。
では、 scipy.signal.csdを使ってこの関数を変換したいのですが、2 つの問題があります。
- ウィンドウは MatLab では整数として定義されていますが、scipy の csd では、ウィンドウをタプル、文字列、または array_like オブジェクトとしてのみ許可しています。
- scipy の csd には、特定の周波数でのクロス パワー スペクトル密度推定値を返すことができる引数はありません。
番号 1 では、ウィンドウを次のように定義し
window = hamming(M, sym=False)
ました。MATLAB の csd でウィンドウが整数として渡されるときに指定された既定のハミング ウィンドウであるため、ハミング ウィンドウを選択します ( 「ウィンドウが整数の場合、cpsd は x と y を長さのウィンドウのセグメントと、その長さのハミング ウィンドウを持つ各セグメントのウィンドウ」 ) であり、スペクトル分析を行っていることを考えると対称にしなかったため、周期的なウィンドウを使用することは理にかなっています。
番号2については、解決策がありません。
これは、Python コードで設定した関数です。
結果は、Pxy (クロス パワー スペクトル密度) に関しては一致しませんが、周波数に関しては完全です。これらは、matlab 結果の最初の要素です。
これは私がPythonから得たものですが:
次のように、matlplotlib (ドキュメントはこちら) で単純なクロス スペクトル密度関数を使用してみました。
fxx, f = mlab.csd(x,y,NFFT=M,Fs=fs,noverlap=noverlap)
さらに一致する結果が得られますが、まだ完全ではありません。
目的は、変換で発生する可能性のある数値エラーを取り除くことではなく、一致する入力でクロス パワー スペクトル密度を操作することです。
誰でも助けることができますか?よろしくお願いします!!!
python - スペクトル分析のためのFFT
誰かがPythonコードのこれらの行と各行の役割を説明してもらえますか?
前もって感謝します。