51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Matlab
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Matlab
		
	
	
	
	
	
| % === Problem 1: Simulation of the responce ===
 | |
| 
 | |
| % Parameters
 | |
| m = 0.75;
 | |
| L = 1.25;
 | |
| c = 0.15;
 | |
| g = 9.81;
 | |
| A0 = 4;
 | |
| omega = 2;
 | |
| 
 | |
| % Time span for 20s simulation
 | |
| tspan = [0 20];
 | |
| dt = 1e-4;
 | |
| t_eval = 0:dt:20;
 | |
| 
 | |
| % ODE Function
 | |
| odefun = @(t, x) [
 | |
|     x(2);
 | |
|     (1/(m*L^2)) * (A0*sin(omega*t) - c*x(2) - m*g*L*x(1))
 | |
| ];
 | |
| 
 | |
| x0 = [0; 0];                        % Initial conditions
 | |
| [t, x] = ode45(odefun, t_eval, x0); % Solve
 | |
| 
 | |
| % Plots for 20 sec
 | |
| figure('Name', 'System responce', 'Position', [100, 100, 1280, 860]);
 | |
| subplot(2,1,1);
 | |
| plot(t, x(:,1)); ylabel('q(t) [rad]'); grid on; title('Γωνία');
 | |
| subplot(2,1,2);
 | |
| plot(t, x(:,2), 'r'); ylabel('dq(t) [rad/s]'); xlabel('t [sec]'); grid on; title('Γωνιακή Ταχύτητα');
 | |
| saveas(gcf, 'output/Prob1_responce_20s.png');
 | |
| 
 | |
| % === Sampling for Problem 2 ===
 | |
| Ts = 0.1;                          % Sampling period
 | |
| sample_data(t, x, Ts, A0, omega, 'output/problem1_data.csv');
 | |
| 
 | |
| % --- Extended simulation to 90 sec ---
 | |
| tspan = [0 90];
 | |
| t_eval = 0:dt:90;
 | |
| 
 | |
| x0 = [0; 0];
 | |
| [t, x] = ode45(odefun, t_eval, x0);
 | |
| 
 | |
| % Plots for 90 sec
 | |
| figure('Name', 'System responce', 'Position', [100, 100, 1280, 860]);
 | |
| subplot(2,1,1);
 | |
| plot(t, x(:,1)); ylabel('q(t) [rad]'); grid on; title('Γωνία');
 | |
| subplot(2,1,2);
 | |
| plot(t, x(:,2), 'r'); ylabel('dq(t) [rad/s]'); xlabel('t [sec]'); grid on; title('Γωνιακή Ταχύτητα');
 | |
| saveas(gcf, 'output/Prob1_responce_90s.png');
 |