0

入力がトルクで出力が位置である統合プロセスで周波数分析を行う必要があります。入力が正弦波の場合、出力は次のようになります。

ここに画像の説明を入力

振幅比と位相を抽出するために使用するコードは次のようになります。

freq = 40;
freq_rad = freq * 2 * pi
phase_offset_rad = 30 * pi / 180
gain = 0                                                                                                                                                                           
fs = 500;                                                                                                                                                                          
L = 100;                                                                                                                                                                           
t = (0:L-1)*(1/fs);                                                                                                                                                                

in = 2 * sin(freq * 2 * pi * t);                                                                                                                                                   

pos_in = [];                                                                                                                                                                       
vel = 0;                                                                                                                                                                           
pos = 0;                                                                                                                                                                           
for i = 1:length(t)                                                                                                                                                                
    vel = vel + in(i);
    pos = pos + vel;
    pos_in = [pos_in; pos];                                                                                                                                                        
end                                                                                                                                                                                

out = pos_in;                                                                                                                                                                      
%out = (2 + gain) * sin(freq * 2 * pi * t + phase_offset_rad);

fft_in = fft(in);                                                                                                                                                                  
fft_out = fft(out);                                                                                                                                                                
[mag_in idx_in] = max(abs(fft_in));                                                                                                                                                
[mag_out idx_out] = max(abs(fft_out));                                                                                                                                             

phase = angle(fft_out(idx_out)) - angle(fft_in(idx_in))                                                                                                                            
phase_deg = phase / (pi / 180)                                                                                                                                                     
ratio = mag_out / mag_in                 

完全にまっすぐな正弦波信号で実行すると、完全に機能します。しかし、上記のように歪みを加えるとすぐに、位相と振幅の両方の値が正しくありません。どういうわけか信号を「平坦化」する必要があると思います。しかし、そこから正しい振幅を抽出する方法がわかりません。振幅とは何ですか?出力では、ある「プラトー」から次の「プラトー」までの測定値は〜45であると言います。これは、物事が移動する距離だからです。それは〜22.5の比率になります。ただし、計算結果は 196 です。

もしかして私の考えが間違っているのでしょうか?最終的には、実験データを使用して、トルク入力から位置出力への伝達関数を導出したいと考えています。おそらく誰かが代わりにそれを行う方法を示すことができますか?

私ができることは、振幅比と位相を記録してからボード線図を作成し、そこから伝達関数を簡単に抽出することだと考えていました。これまでのところ、さまざまな入力周波数でテストを実行してボード線図を取得することはできませんでした。

4

1 に答える 1