Hello, I have a file of all the FRF functions of an experiment, and it is computed in complex numbers + real part. I would like to know if it is possible to plot the graphic of it (resulting in the natural frequencies and stuff) only having this data? it is like this: -0.0915237963199616 + 0.00000000000000i -0.0666214004158974 - 0.0629538968205452i -0.0647708997130394 - 0.0962110981345177i 0.000384484999813139 - 0.189506992697716i 0.104717001318932 - 0.171706005930901i 0.145686000585556 - 0.117163002490997i 0.148408994078636 - 0.0817890018224716i 0.150115996599197 - 0.0637563988566399i 0.149434000253677 - 0.0457847006618977i 0.151601999998093 - 0.0343611985445023i 0.144703000783920 - 0.0156481992453337i 0.134606003761292 - 0.00748514989390969i 0.119563996791840 - 0.00314980000257492i and so on
John Williams answered .
2025-11-20
Yes, it is entirely possible to plot the Frequency Response Function (FRF) using the provided complex number data. The FRF can be visualized in various ways, depending on the physical properties you're interested in. Typically, the magnitude and phase of the complex FRF data are plotted against frequency.
Extract Real and Imaginary Components:
Compute Magnitude and Phase:
Plot the Results:
% Example FRF data (complex numbers)
FRF_data = [
-0.0915237963199616 + 0.00000000000000i;
-0.0666214004158974 - 0.0629538968205452i;
-0.0647708997130394 - 0.0962110981345177i;
0.000384484999813139 - 0.189506992697716i;
0.104717001318932 - 0.171706005930901i;
0.145686000585556 - 0.117163002490997i;
0.148408994078636 - 0.0817890018224716i;
0.150115996599197 - 0.0637563988566399i;
0.149434000253677 - 0.0457847006618977i;
0.151601999998093 - 0.0343611985445023i;
0.144703000783920 - 0.0156481992453337i;
0.134606003761292 - 0.00748514989390969i;
0.119563996791840 - 0.00314980000257492i
];
% Frequency vector (assume evenly spaced if not provided)
num_points = length(FRF_data);
frequencies = linspace(0, 100, num_points); % Example frequency range (0 to 100 Hz)
% Compute magnitude and phase
magnitude = abs(FRF_data); % Compute magnitude
phase = angle(FRF_data); % Compute phase (in radians)
% Plot the results
figure;
subplot(2, 1, 1);
plot(frequencies, magnitude, 'b-', 'LineWidth', 1.5);
title('FRF Magnitude');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;
subplot(2, 1, 2);
plot(frequencies, phase, 'r-', 'LineWidth', 1.5);
title('FRF Phase');
xlabel('Frequency (Hz)');
ylabel('Phase (radians)');
grid on;
Frequency Vector:
Additional Plots:
real_part = real(FRF_data);
imag_part = imag(FRF_data);
plot(frequencies, real_part, 'g', frequencies, imag_part, 'm');
legend('Real Part', 'Imaginary Part');
Interpretation: