平均、標準偏差を求め​ようとすると-inf​と返される

平素よりお世話になっております。
よろしくお願いいたします。
マイクで収録した音を、下記のコードで音圧に変換しました。
サンプリンぐ周波数192000Hzで、180秒間のデータになります。
この時、dBの平均と標準偏差を求めようと思ったのですが、mean関数を使用して、z=mean(dB);と入力しても-infと出てきます。
-infの意味は、matlabでは無限大という意味みたいですが、なぜ平均を求めようとして、-infと返されるのか意味がよくわかりません。
どうすれば、平均、標準偏差を計算できるかご指導いただけると幸いです。
data_e= abs(data)/sqrt(2);%電圧の実効値
v=data_e; %//アンプの出力電圧[V]
amp=100; %//アンプゲイン[倍]
m=4*10^(-3);% //マイク感度[V/Pa]
a= 20*10^(-6);% //基準音圧[μPa]
dB=20*log10(v/amp/m/a);% //音圧レベル[dB]

4 Comments

stozaki
stozaki on 23 Sep 2020
Wataru Tarumi 様
記入頂いたスクリプトの "data" に相当する値がわからないので、原因を特定することが難しいです。
"data" の値や属性(クラス、フォーマット、サイズ等)がわかれば原因を特定できるかと思います。"data" を.matファイル等で保存し、こちらのスレッドに添付頂くことはできますでしょうか?
宜しくお願いいたします。
stozaki
Cir 2t
Cir 2t on 23 Sep 2020
容量が重くて、添付できないので。
以下のサイトにアップしました。
https://23.gigafile.nu/1001-b1813cfe635b779056ae8fd5324c9f132
stozaki
stozaki on 24 Sep 2020
Edited: stozaki on 24 Sep 2020
Wataru Tarumi様
配列dBの中に -Inf を幾つか含んでいるので、平均をとっても -Inf になってしまっているようです。
% 配列dBの値が-Infとなるインデックス取得
>> ret = find(dB == -inf)
ret =
115199
133978
290639
315151
318797
361094
.
.
.
34430673
34432999
34496378
>> dB(ret(1))
ans =
-Inf
dBを計算する過程に問題があるか、"data" の中に解析に不要な範囲が含まれているのではないでしょうか?
Cir 2t
Cir 2t on 24 Sep 2020
なるほど、ありがとうございます。
助かりました。

Sign in to comment.

Answers (0)

Categories

Find more on Audio Processing Algorithm Design in Help Center and File Exchange

Tags

Asked:

on 23 Sep 2020

Commented:

on 24 Sep 2020

Community Treasure Hunt

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

Start Hunting!