音声ファイルを連続で​FFTを行い、順次保​存するには

15 views (last 30 days)
一秀 近藤
一秀 近藤 on 4 Nov 2022
Commented: 一秀 近藤 on 20 Jan 2023
サンプリングレート44100Hzの音声データ(wavファイル)のものを1秒単位(44100データごと)でFFT解析を行いたいと考えています。
またそのFFT解析の結果を"fftsave_0001"のような形でcsvファイルに順次保存したいと考えています。
またFFTの窓関数はhamming窓を使う予定です。
大変ではありますが、ご教授お願いいたします。

Accepted Answer

Hernia Baby
Hernia Baby on 4 Nov 2022
まずデータを用意します
clc,clear,close all;
f = 50:50:500;
Fs = 44100;
t = (0:1/Fs:3-1/Fs)';
x = sum(sin(2*pi*f.*t),2);
そしてFs = 44100点ずつ切り出して、FFTをかけた後出力します
n = floor(length(t)/Fs);
w = hamming(Fs);
for ii = 1:n
y = fft(w.*x(Fs*(ii-1)+1:Fs*ii));
writematrix(y,sprintf('fftsave_%03d.csv',ii))
end
ここで確認したいのですが、本当にfftがほしい結果なのでしょうか?
スペクトラムを出したい場合はpspectrumをおすすめします
  2 Comments
一秀 近藤
一秀 近藤 on 7 Nov 2022
返信遅くなりすいません。
プログラムの提案ありがとうございます。ぜひ参考にさせていただきたいと思います。
また、集めたいデータとしてはFFTを行った後のベクトルを使いたいと思っております。
スペクトラムは今のところ使う予定ではないです。
ご丁寧な回答本当にありがとうございました。
一秀 近藤
一秀 近藤 on 20 Jan 2023
いきなりすいません。
やはりいろいろ考えたうえでスペクトラムのほうが必要になってきており、自分なりに作成している最中です。pspectrumを用いた場合、ベクトルの数値が4096となりサンプリングレートに関係なくその数値になるのかわかっておりません。よろしければ教えていただきたいと思います。

Sign in to comment.

More Answers (0)

Categories

Find more on フーリエ解析とフィルター処理 in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!