FRF from operating data using iddata

3 次查看(过去 30 天)
AC_GBX
AC_GBX 2020-11-6
Hello,
I want to calculate the FRF from operating data. This means I measured the accelerations as input and output while the drive train where in different operating states. It is a MIMO-Data. The measurement were performed in a simulation of the drive train. I simulated the actual FRF and therefore I know how my FRF should look like.
I calculate the FRF with iddata, but unfortunatly it is not close to the measured FRF in the simulation. The data is frequency dependent that is why I set Ts as 0.
So here are my quetstions:
  • Is it generally possible to calculate the FRF with iddata only using accelerations as input and output? If yes, what am I doing wrong?
  • Is Ts = 0 right because it is frequency dependent?
  • Is there any other way to calculate the FRF with MIMO-Data using accelerations?
I also tried time dependend but it was a lot worse then.
Here is what I did:
function [frf,frf_amp,frf_phase, model] = FRFCalc(sensdata_in, sensdata_out)
[num_freq,num_rotation,num_sens_in] = size(sensdata_in);
[~,~,num_sens_out] =size(sensdata_out);
freq_vec = linspace(1,num_freq, num_freq);%vector for the correlating frequencies
%combine all measured operating states in cell-array
for t=1:num_rotation % for every operating state
sens_in(t) = {squeeze(sensdata_in(:,t,:))};
sens_out(t) = {squeeze(sensdata_out(:,t,:))};
end
data = iddata(sens_out,sens_in,0, 'Frequency',freq_vec,'FrequencyUnit','Hz'); %set up model TS=0 because frequency dependent
model =ssest(data);%estimate model
frf = freqresp(model,freq_vec,'Hz');%calculate frf from model in Hz
frf_amp = abs(frf); %amplitde of frf
frf_phase = angle(frf); %phase of frf
end

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Digital Filter Analysis 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by