function sample_data(t, x, Ts, A0, omega, filename) % SAMPLE_DATA - Resamples pendulum simulation data and exports to CSV % % Usage: % sample_pendulum_data(t, x, Ts, A0, omega, filename) % % Inputs: % t - time vector from ODE solver (e.g., from ode45) % x - state matrix [q(t), dq(t)] % Ts - sampling period (in seconds) % A0 - input amplitude for u(t) = A0 * sin(omega * t) % omega - input frequency (in rad/s) % filename - output CSV filename % Time vector for resampling t_sampled = t(1):Ts:t(end); % Resample q and dq using interpolation q_sampled = interp1(t, x(:,1), t_sampled); dq_sampled = interp1(t, x(:,2), t_sampled); % Estimate second derivative using central finite differences ddq_sampled = zeros(size(q_sampled)); N = length(q_sampled); for k = 2:N-1 ddq_sampled(k) = (q_sampled(k+1) - 2*q_sampled(k) + q_sampled(k-1)) / Ts^2; end % Evaluate input u(t) u_sampled = A0 * sin(omega * t_sampled); % Create table and export to CSV T = table(t_sampled', q_sampled', dq_sampled', ddq_sampled', u_sampled', ... 'VariableNames', {'t', 'q', 'dq', 'ddq', 'u'}); writetable(T, filename); fprintf('Sampling data saved to file: %s\n', filename); end