フィルターのクリア

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

2 ビュー (過去 30 日間)
Genki Uebayashi
Genki Uebayashi 2022 年 8 月 25 日
コメント済み: Genki Uebayashi 2022 年 8 月 30 日
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秒間隔になると考えていました。予想と異なる結果で、理由が理解できません。これは何が起きているのでしょうか?

採用された回答

Hernia Baby
Hernia Baby 2022 年 8 月 26 日
おそらく 不確定性原理 によるものだと思います。
  6 件のコメント
Hernia Baby
Hernia Baby 2022 年 8 月 29 日
編集済み: Hernia Baby 2022 年 8 月 29 日
不確定性において窓関数の影響を考慮してないためだと思います。
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 2022 年 8 月 30 日
ありがとうございます。考えていた通りの動きです。
> 不確定性において窓関数の影響を考慮してないためだと思います。
理解できない原因はこれのようです。窓関数について勉強不足ということがわかりました。自分でどここが理解できていないのかも分かっていなかったのでとても助かりました。

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

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange振動解析 についてさらに検索

タグ

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!