rpmfreqmap​のサンプル数が大きい​理由が理解できません

3 vues (au cours des 30 derniers jours)
Genki Uebayashi
Genki Uebayashi le 25 Août 2022
Commenté : Genki Uebayashi le 30 Août 2022
rpmfreqmapの設定を周波数分解能を1Hz、オーバーラップを0%にして使用してみたところ、予想よりもサンプル数の時間長さが1.5倍大きくなっていました。1Hzなので1秒になると考えていたのですが、1.5秒取り出してFFTしているように見えます。
fs = 600;
t1 = 5;
t = 0:1/fs:t1;
f0 = 10;
f1 = 40;
rpm = 60*linspace(f0,f1,length(t));
o1 = 1;
o2 = 0.5;
o3 = 4;
o4 = 6;
ph = 2*pi*cumtrapz(rpm/60)/fs;
x = [1 1 2 1]*cos([o1 o2 o3 o4]'*ph);
rpmfreqmap(x,fs,rpm, 1, 'OverlapPercent', 0)
[map,freq,rpm,time,res] = rpmfreqmap(x,fs,rpm, 1, 'OverlapPercent', 0);
ヘルプに記載の5秒間の波形データを分析したものです。実行するとtimeの要素数が3個でおよそ1.5秒間隔になっています。
5秒間のデータなので、timeの要素数が5個で1秒間隔になると考えていました。予想と異なる結果で、理由が理解できません。これは何が起きているのでしょうか?

Réponse acceptée

Hernia Baby
Hernia Baby le 26 Août 2022
おそらく 不確定性原理 によるものだと思います。
  6 commentaires
Hernia Baby
Hernia Baby le 29 Août 2022
Modifié(e) : Hernia Baby le 29 Août 2022
不確定性において窓関数の影響を考慮してないためだと思います。
rpmfreqmapのデフォルトはハン窓( hann )です。
箱型ウィンドウをオプションに設定して見てみましょう。
fs = 600; t1 = 5; t = 0:1/fs:t1;
f0 = 10; f1 = 40;
rpm = 60*linspace(f0,f1,length(t));
o1 = 1; o2 = 0.5; o3 = 4; o4 = 6;
ph = 2*pi*cumtrapz(rpm/60)/fs;
x = [1 1 2 1]*cos([o1 o2 o3 o4]'*ph);
ここで rectwin の設定をします。
[~,~,~,time,~] = rpmfreqmap(x,fs,rpm, 1, 'OverlapPercent', 0,'Window','rectwin')
time = 5×1
0.5000 1.5000 2.5000 3.5000 4.5000
ここでtimeは切り取った時間の中心をとります。
差分をとり、時間を足していきましょう。
times = cumsum([1;diff(time)])'
times = 1×5
1 2 3 4 5
@Genki Uebayashiさんの考えているものになりました。
Genki Uebayashi
Genki Uebayashi le 30 Août 2022
ありがとうございます。考えていた通りの動きです。
> 不確定性において窓関数の影響を考慮してないためだと思います。
理解できない原因はこれのようです。窓関数について勉強不足ということがわかりました。自分でどここが理解できていないのかも分かっていなかったのでとても助かりました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 振動解析 dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!