FRF from operating data using iddata
2 views (last 30 days)
Show older comments
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 Comments
Answers (0)
See Also
Categories
Find more on Preprocess Data 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!