平均、標準偏差を求め​ようとすると-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 件のコメント

stozaki
stozaki 2020 年 9 月 23 日
Wataru Tarumi 様
記入頂いたスクリプトの "data" に相当する値がわからないので、原因を特定することが難しいです。
"data" の値や属性(クラス、フォーマット、サイズ等)がわかれば原因を特定できるかと思います。"data" を.matファイル等で保存し、こちらのスレッドに添付頂くことはできますでしょうか?
宜しくお願いいたします。
stozaki
Cir 2t
Cir 2t 2020 年 9 月 23 日
容量が重くて、添付できないので。
以下のサイトにアップしました。
https://23.gigafile.nu/1001-b1813cfe635b779056ae8fd5324c9f132
stozaki
stozaki 2020 年 9 月 24 日
編集済み: stozaki 2020 年 9 月 24 日
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 2020 年 9 月 24 日
なるほど、ありがとうございます。
助かりました。

サインインしてコメントする。

回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeAudio Processing Algorithm Design についてさらに検索

タグ

質問済み:

2020 年 9 月 23 日

コメント済み:

2020 年 9 月 24 日

Community Treasure Hunt

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

Start Hunting!