問題タブ [spectrogram]

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.

0 投票する
1 に答える
11955 参照

python - スペクトログラムのような色の行列の 2D プロット

Python を使用して、次のような 2D 行列をプロットする方法A[i,j]:

  • iは x 軸です
  • jはy軸です
  • A[i,j]色で描画する必要がある 0 から 100 までの値です (例: 0=青、100=赤)

そのためのPython関数はありますか?

(NB: などのスペクトログラムを実行する関数は必要ありませんspecgram。信号の FFT を自分で計算したいためです。したがって、行列を色でプロットする関数のみが必要です)

スペクトログラムのサンプル

0 投票する
1 に答える
1215 参照

matlab - wav ファイルのスペクトログラム図をループで保存する

非常に基本的な音声認識プロジェクトのために、後でそれらを単語サンプルと比較できるように、スペクトログラムを生成しようとしています。これはループで行われています。コードは次のとおりです。

私の問題は最後の 2 行にあります。スペクトログラムの図を .fig ファイルとして保存し (後で比較するためのより良い提案がない限り)、baseFileName と同じ名前を付けます。私はしばらくの間グーグルで調べてきましたが、フォーマットがわかりにくく、スペクトログラムが図として保存されることについてはあまりありません。

すべての数字がループ内に表示されなかった場合はそれが望ましいですが、対処できます。

編集:これをマットファイルとして保存する方が良いでしょうか?

0 投票する
1 に答える
1484 参照

matlab - Matlab のスペクトログラムの値を実際の範囲にスケーリングするには

走る

私は得る

ここに画像の説明を入力

0 から 1 の正規化された範囲ではなく、0 から 180 Hz の範囲を取得したい。

ただし、値は変更されません。

実行に失敗しました

範囲を正規化された範囲から実際の範囲にスケーリングするにはどうすればよいですか?

0 投票する
0 に答える
133 参照

audio - スペクトログラム - 何か不足していますか?

次の信号があります。

ここに画像の説明を入力

スペクトログラム アルゴリズムを計算しようとしていますが、正しくやっているとは思えません..

私は以下を計算しました:

1) STFT (サイズ 256、オーバーラップ 128) 2) '10 * log10(sqrt(re * re + im + im) を使用してログを計算

これは私が得る結果です:

ここに画像の説明を入力

しかしpylab、Pythonで使用する場合(同じ信号に対して): x = pl.specgram(signal)

次の結果が得られます。

ここに画像の説明を入力

を使用するmatplotlibと、次のようになります。

ここに画像の説明を入力

明らかに、これらは非常に異なる結果です.なぜこれらを取得しているのかわかりません.信号処理とスペクトログラムは初めてです。誰かが助けてくれることを願っています

編集:

これがPythonコードです。

0 投票する
1 に答える
1631 参照

python - Python - 範囲間の特定の周波数を削除する

私はスペクトログラムを持っています:

ここに画像の説明を入力

スペクトログラムをクリーンアップしたいので、特定の範囲内 (つまり、この例では 2627 ~ 3939) の周波数のみをキャプチャし、この周波数より下にあるすべてのブロックを削除します。私の全体的な目標は、この周波数範囲内にあり、識別できる 4 つのセグメントのみを残すことです。

これまでの私のコードは次のとおりです。

問題は、Python を使用してこれを行う方法がわからないことです。範囲 (2627 ~ 3939) はわかっていますが、2D 配列全体を反復処理してすべてのブロックを合計するか、スペクトログラム内の各ブロックについて周波数を計算し、それがしきい値よりも高い場合はそれを維持します。それ以外の場合、値は 0.0 になりますか?

各ビンを合計すると、次のようになります。

ここに画像の説明を入力

これらのブロックを保持する必要がありますが、これら以外のすべてのブロックを削除したいと考えています。

誰かが私を助けてくれることを願っています!