Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Tiempo de simulación
- time_span = 0:0.01:10;
- % Define un rango de valores de Kc y otros parámetros con la misma longitud
- Kc_range = linspace(0.1, 2, 100); % Rango de valores de Kc
- Kp_values = zeros(1, 100);
- tr_values = zeros(1, 100);
- tp_values = zeros(1, 100);
- OS_values = zeros(1, 100);
- ts_values = zeros(1, 100);
- error_step_values = zeros(1, 100);
- error_ramp_values = zeros(1, 100);
- error_parabola_values = zeros(1, 100);
- % Cálculo de parámetros de respuesta y errores
- for i = 1:numel(Kc_range)
- Kc = Kc_range(i);
- % Aquí se calculan los valores de los parámetros
- Kp_values(i) = Kc * 1.2;
- tr_values(i) = 2.0 / Kc;
- % Cálculo del error en estado estacionario para entrada escalón)
- num = [Kc * Kp_values(i)];
- den = [1, Kc * Kp_values(i)];
- sys = tf(num, den);
- [y, t] = step(sys, time_span);
- error_step_values(i) = abs(1 - y(end)); % Error en estado estacionario
- end
- % Menú interactivo para seleccionar el parámetro a graficar
- while true
- disp('Seleccione el parámetro que desea graficar:');
- disp('1. Kp');
- disp('2. Tiempo de subida (tr)');
- disp('3. Tiempo pico (tp)');
- disp('4. Sobreelongación (OS)');
- disp('5. Tiempo de establecimiento (ts)');
- disp('6. Error en escalón');
- disp('7. Error en rampa');
- disp('8. Error en parábola');
- disp('9. Graficar todos los parámetros juntos');
- disp('0. Salir');
- choice = input('Elija una opción: ');
- if choice == 0
- break; % Salir del bucle si el usuario elige 0
- end
- % Preguntar al usuario si desea mostrar todas las respuestas en una sola gráfica
- if choice == 9
- show_all_responses = input('¿Mostrar todas las respuestas en la misma gráfica? (0: No, 1: Sí): ');
- else
- show_all_responses = 0; % Valor predeterminado, no mostrar todas las respuestas juntas
- end
- % ...
- % Graficar el parámetro seleccionado
- if choice == 9 && show_all_responses
- % Graficar todos los parámetros juntos en una sola gráfica dividida tipo grilla
- figure;
- subplot(2, 2, 1);
- plot(Kc_range, Kp_values, 'ro-', 'LineWidth', 2);
- xlabel('Valor de Kc');
- title('Kp');
- subplot(2, 2, 2);
- plot(Kc_range, tr_values, 'go-', 'LineWidth', 2);
- xlabel('Valor de Kc');
- title('Tiempo de subida (tr)');
- subplot(2, 2, 3);
- plot(Kc_range, tp_values, 'bo-', 'LineWidth', 2);
- xlabel('Valor de Kc');
- title('Tiempo pico (tp)');
- subplot(2, 2, 4);
- plot(Kc_range, OS_values, 'mo-', 'LineWidth', 2);
- xlabel('Valor de Kc');
- title('Sobreelongación (OS)');
- suptitle('Parámetros de Respuesta');
- % Guardar la imagen en un archivo
- saveas(gcf, 'grafica_todos_los_parametros.png');
- disp('La figura "grafica_todos_los_parametros.png" ha sido guardada como imagen.');
- else
- % Graficar el parámetro seleccionado individualmente
- figure;
- switch choice
- case 1
- parameter_values = Kp_values;
- parameter_name = 'Kp';
- case 2
- parameter_values = tr_values;
- parameter_name = 'Tiempo de subida (tr)';
- case 3
- parameter_values = tp_values;
- parameter_name = 'Tiempo pico (tp)';
- case 4
- parameter_values = OS_values;
- parameter_name = 'Sobreelongación (OS)';
- case 5
- parameter_values = ts_values;
- parameter_name = 'Tiempo de establecimiento (ts)';
- case 6
- parameter_values = error_step_values;
- parameter_name = 'Error en escalón';
- case 7
- parameter_values = error_ramp_values;
- parameter_name = 'Error en rampa';
- case 8
- parameter_values = error_parabola_values;
- parameter_name = 'Error en parábola';
- end
- plot(Kc_range, parameter_values, 'ro-', 'LineWidth', 2);
- xlabel('Valor de Kc');
- ylabel(parameter_name);
- title(['Variación de ', parameter_name, ' con Kc']);
- % Guardar la imagen en un archivo
- filename = [parameter_name, '_vs_Kc.png'];
- saveas(gcf, filename);
- disp(['La figura "', filename, '" ha sido guardada como imagen.']);
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement