WAVファイル音源にローパスフィルタをかけた場合に、ハイパスフィルタ等に比べパワースペクトルがあまり減衰されないことを改善したいです
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
以下のコードでローパスフィルタをかけた際、両対数グラフにおいてのパワースペクトルが殆ど減衰されていない状態です。
通過周波数を変更してもあまり変化が見られませんでした。
[y,Fs] = audioread(['densya.wav'])
info = audioinfo('densya.wav')
size(y)
t = 0:seconds(1/Fs):seconds(info.Duration)
t = t(1:end-1)
yy=y(:,2)
z=lowpass(yy,100,Fs)
ft_y=fft(z)
df=1/info.Duration
f=0:df:df*(length(ft_y)-1)/2
FFs=length(ft_y)/2
ax=abs(ft_y(1:FFs))
loglog(f,ax),grid on
xlim([0 22.05*10^3])
xlabel('周波数[Hz]')
ylabel('パワースペクトル')
このうち
z=lowpass(yy,100,Fs) を z=highpass(yy,100,Fs)に変えた際はしっかりと範囲外の部分が減衰しカットされているのが確認されました。
どこを改善すればローパスフィルタの場合にもしっかりと減衰及びカットされるでしょうか。
0 commentaires
Réponse acceptée
Atsushi Ueno
le 28 Nov 2022
Modifié(e) : Atsushi Ueno
le 28 Nov 2022
>どこを改善すればローパスフィルタの場合にもしっかりと減衰及びカットされるでしょうか
ImpulseResponse — インパルス応答のタイプを最小次数の無限インパルス応答 (IIR) フィルターにしました。
Steepness — 遷移帯域の急峻さ 引数を限りなく1に近づけてみました
load handel.mat % info.Duration = 8.9249
t = 0:seconds(1/Fs):seconds(8.9249);
t = t(1:end-1);
z=lowpass(y,100,Fs,'ImpulseResponse','iir','Steepness',0.99999);
ft_y=fft(z);
df=1/8.9249;
f=0:df:df*(length(ft_y)-1)/2;
FFs=ceil(length(ft_y)/2);
ax=abs(ft_y(1:FFs));
loglog(f,ax),grid on
xlim([0 22.05*10^3])
xlabel('周波数[Hz]')
ylabel('パワースペクトル')
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur フィルターの設計 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!