FRF from operating data using iddata
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Preprocess Data finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!