MATLAB: Is it possible that ploting bode diagram without transfer fuction

bode plotbodeplotfrequency responseMATLAB and Simulink Student Suitestep responsetransfer function

Hi everyone,
Is it possible that ploting bode diagram without transfer fuction?
I have some values of the Power and the Speed as inputs and some output values in excel format. However the transfer fuction of the system has not been defined.
Are there any one who knows any method or code to plotting bode diagram without transfer function?

Best Answer

Yes. Use the fft function.
input = randn(1, 10000);
output = randn(1, 10000);
time = linspace(0, 1000, 10000);
Fs = 100; % Sampling Frequency
Fn = Fs/2; % Nyquist Frequency
L = numel(time);
FTinp = fft(input)/L;
FTout = fft(output)/L;
TF = FTout ./ FTinp; % Transfer Function
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
figure
subplot(2,1,1)
plot(Fv, 20*log10(abs(TF(Iv))))
title('Amplitude')
ylabel('dB')
subplot(2,1,2)
plot(Fv, angle(TF(Iv))*180/pi)
title('Phase')
ylabel('°')
Provide your own vectors for ‘input’, ‘output’, and ‘time’.