How to get exact force not average force from energy in tabular form in matlab?

1 view (last 30 days)
I have force vs disp data in tabular form, disp data_1: 0,1,2,3,4,5 and force data_1: 0,1,2,3,4,5, then using trapz command i calculated energy_1 as 0, 0.5, 2, 4.5,8,12.5.
But when I use disp_data_2: 0,1,2,3,4,5 and energy_data_2: 0, 0.5, 2, 4.5,8,12.5 to get force using diff command it gives me force_data_2 : 0.5, 1.5, 2.5, 3.5, 4.5 but I should have force_data as force_data_1 : 0,1,2,3,4,5. How can I get this in matlab? Is there any other command for this purpose?

Answers (1)

Adithya
Adithya on 24 Apr 2023
The reason you are getting a different force data (force_data_2) when using the second set of displacement and energy data is that the diff command computes the numerical derivative of the energy data, which introduces a shift in the resulting force data.
To obtain the original force data (force_data_1) corresponding to the first set of displacement and energy data, you can use the cumtrapz command, which performs numerical integration using the trapezoidal rule and returns the cumulative energy data. Then, you can use linear interpolation to obtain the force data corresponding to the original displacement data. Here's an example code snippet:
% Define the displacement and energy data for the first set
disp_data_1 = [0, 1, 2, 3, 4, 5];
energy_data_1 = [0, 0.5, 2, 4.5, 8, 12.5];
% Compute the cumulative energy using the trapezoidal rule
cum_energy_1 = cumtrapz(disp_data_1, energy_data_1);
% Interpolate the force data using the original displacement data
force_data_1 = interp1(cum_energy_1, disp_data_1, energy_data_1);
% Display the force data
disp('Force data 1:');
disp(force_data_1);
This should give you the desired force data for the first set of displacement and energy data. Note that you may need to adjust the interpolation method or tolerance based on your specific requirements.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!