FRF from operating data using iddata
4 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Digital Filter Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!