rpmfreqmapのサンプル数が大きい理由が理解できません
1 view (last 30 days)
Show older comments
Genki Uebayashi
on 25 Aug 2022
Commented: Genki Uebayashi
on 30 Aug 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秒間隔になると考えていました。予想と異なる結果で、理由が理解できません。これは何が起きているのでしょうか?
0 Comments
Accepted Answer
Hernia Baby
on 26 Aug 2022
6 Comments
Hernia Baby
on 29 Aug 2022
Edited: Hernia Baby
on 29 Aug 2022
不確定性において窓関数の影響を考慮してないためだと思います。
箱型ウィンドウをオプションに設定して見てみましょう。
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);
[~,~,~,time,~] = rpmfreqmap(x,fs,rpm, 1, 'OverlapPercent', 0,'Window','rectwin')
ここでtimeは切り取った時間の中心をとります。
差分をとり、時間を足していきましょう。
times = cumsum([1;diff(time)])'
@Genki Uebayashiさんの考えているものになりました。
More Answers (0)
See Also
Categories
Find more on 振動解析 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!