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

조회 수: 3 (최근 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 CenterFile Exchange에서 振動解析에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!