% Crear nuevo modelo
modelName = 'SistemaMasaResorteAmortiguador';
new_system(modelName)
open_system(modelName)
% Parámetros
m = 0.25;
c = 0.5;
k = 1;
num = 1/m;
den = [1 c/m k/m]; % [s^2 2s 4] con los valores dados
% Añadir bloques
add_block('simulink/Sources/Step', [modelName '/Step'], ...
'Position', [30 30 60 60], 'Time', '0', 'Before', '0', 'After', '3');
add_block('simulink/Continuous/Transfer Fcn', [modelName '/TF'], ...
'Numerator', mat2str(num), ...
'Denominator', mat2str(den), ...
'Position', [120 30 250 60]);
add_block('simulink/Sinks/Scope', [modelName '/Scope'], ...
'Position', [310 30 340 60]);
% Conexiones
add_line(modelName, 'Step/1', 'TF/1');
add_line(modelName, 'TF/1', 'Scope/1');
% Ejecutar simulación
set_param(modelName, 'StopTime', '10');
sim(modelName);
simulink Generarlo automáticamente con un script
% Crear modelo automáticamente
modelName = 'SistemaMasaResorteAmortiguador';
new_system(modelName)
open_system(modelName)
% Parámetros
m = 0.25;
c = 0.5;
k = 1;
num = 1/m;
den = [1 c/m k/m]; % [1, 2, 4]
% Añadir bloques
add_block('simulink/Sources/Step', [modelName '/Step'], ...
'Position', [30 30 60 60], 'Time', '0', 'Before', '0', 'After', '3');
add_block('simulink/Continuous/Transfer Fcn', [modelName '/TF'], ...
'Numerator', mat2str(num), ...
'Denominator', mat2str(den), ...
'Position', [120 30 250 60]);
add_block('simulink/Sinks/Scope', [modelName '/Scope'], ...
'Position', [310 30 340 60]);
% Conectar bloques
add_line(modelName, 'Step/1', 'TF/1');
add_line(modelName, 'TF/1', 'Scope/1');
% Guardar el modelo
save_system(modelName, [modelName '.slx'])
disp(['Modelo guardado como ' modelName '.slx'])
% Parámetros
tspan = [0 30]; % Tiempo de simulación
x0 = -1; % Condición inicial
% EDO definida como función anónima
dxdt = @(t, x) 18 * sin(6 * t);
% Resolver con ode45 (Runge-Kutta)
[t, x] = ode45(dxdt, tspan, x0);
% Graficar
plot(t, x)
xlabel('Tiempo (s)')
ylabel('x(t)')
title('Solución de dx/dt = 18 sin(6t), x(0) = -1')
grid on
% Sistema de primer orden
K = 3;
tau = 5;
sys = tf(K, [tau 1]);
% Respuesta al escalón
step(sys, 0:0.1:30);
title('Respuesta al escalón del sistema de primer orden')
ylabel('Salida')
xlabel('Tiempo (s)')
grid on
G = tf(3/2, [2 1]);
step(G)
title('Sistema de Primer Orden')
grid on
G = tf(20, [1 10 20]);
step(G)
grid on
info = stepinfo(G);
Ts = [Link];
Mp = [Link];
fprintf('Tiempo de establecimiento: %.2f s\n', Ts);
fprintf('Máximo pico (overshoot): %.2f %%\n', Mp);
Tiempo de estabilización aproximado: entre 0.8 y 1.2 segundos
Máximo pico: 0% (porque no hay sobreimpulso)
% Parámetros del sistema
wn = 4; % Frecuencia natural
zeta = 0.5; % Factor de amortiguamiento
% Cálculo del tiempo pico
Tp = pi / (wn * sqrt(1 - zeta^2));
% Mostrar resultado
fprintf('El tiempo pico Tp es: %.3f segundos\n', Tp);
zeta = 0.3;
OS = exp(-zeta*pi/sqrt(1 - zeta^2)) * 100;
fprintf('Overshoot: %.1f %%\n', OS);
G = tf(5, [1 4 5]);
impulse(G)
title('Respuesta al impulso')
grid on